Mercurial > projects > dwt-win
comparison dwt/widgets/Text.d @ 237:e2affbeb686d
Making tango.sys.win32.Types and dwt.internal.win32.WINTYPES to match common declaration. Make ansi charactars of type ubyte.
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Thu, 19 Jun 2008 03:25:36 +0200 |
parents | a8fed3e56433 |
children | ecb80b2a89e1 |
comparison
equal
deleted
inserted
replaced
236:9c1bb90eba13 | 237:e2affbeb686d |
---|---|
1247 int mbcsToWcsPos (int mbcsPos) { | 1247 int mbcsToWcsPos (int mbcsPos) { |
1248 if (mbcsPos <= 0) return 0; | 1248 if (mbcsPos <= 0) return 0; |
1249 if (OS.IsUnicode) return mbcsPos; | 1249 if (OS.IsUnicode) return mbcsPos; |
1250 int cp = getCodePage (); | 1250 int cp = getCodePage (); |
1251 int wcsTotal = 0, mbcsTotal = 0; | 1251 int wcsTotal = 0, mbcsTotal = 0; |
1252 char [] buffer = new char [128]; | 1252 CHAR [] buffer = new CHAR [128]; |
1253 String delimiter = getLineDelimiter(); | 1253 String delimiter = getLineDelimiter(); |
1254 int delimiterSize = delimiter.length; | 1254 int delimiterSize = delimiter.length; |
1255 int count = OS.SendMessageA (handle, OS.EM_GETLINECOUNT, 0, 0); | 1255 int count = OS.SendMessageA (handle, OS.EM_GETLINECOUNT, 0, 0); |
1256 for (int line=0; line<count; line++) { | 1256 for (int line=0; line<count; line++) { |
1257 int wcsSize = 0; | 1257 int wcsSize = 0; |
1258 int linePos = OS.SendMessageA (handle, OS.EM_LINEINDEX, line, 0); | 1258 int linePos = OS.SendMessageA (handle, OS.EM_LINEINDEX, line, 0); |
1259 int mbcsSize = OS.SendMessageA (handle, OS.EM_LINELENGTH, linePos, 0); | 1259 int mbcsSize = OS.SendMessageA (handle, OS.EM_LINELENGTH, linePos, 0); |
1260 if (mbcsSize !is 0) { | 1260 if (mbcsSize !is 0) { |
1261 if (mbcsSize + delimiterSize > buffer.length) { | 1261 if (mbcsSize + delimiterSize > buffer.length) { |
1262 buffer = new char [mbcsSize + delimiterSize]; | 1262 buffer = new CHAR [mbcsSize + delimiterSize]; |
1263 } | 1263 } |
1264 //ENDIAN | 1264 //ENDIAN |
1265 buffer [0] = cast(char) (mbcsSize & 0xFF); | 1265 buffer [0] = cast(char) (mbcsSize & 0xFF); |
1266 buffer [1] = cast(char) (mbcsSize >> 8); | 1266 buffer [1] = cast(char) (mbcsSize >> 8); |
1267 mbcsSize = OS.SendMessageA (handle, OS.EM_GETLINE, line, buffer.ptr); | 1267 mbcsSize = OS.SendMessageA (handle, OS.EM_GETLINE, line, buffer.ptr); |
1268 wcsSize = OS.MultiByteToWideChar (cp, OS.MB_PRECOMPOSED, buffer.ptr, mbcsSize, null, 0); | 1268 wcsSize = OS.MultiByteToWideChar (cp, OS.MB_PRECOMPOSED, buffer.ptr, mbcsSize, null, 0); |
1269 } | 1269 } |
1270 if (line - 1 !is count) { | 1270 if (line - 1 !is count) { |
1271 for (int i=0; i<delimiterSize; i++) { | 1271 for (int i=0; i<delimiterSize; i++) { |
1272 buffer [mbcsSize++] = cast(byte) delimiter.charAt (i); | 1272 buffer [mbcsSize++] = cast(CHAR) delimiter.charAt (i); |
1273 } | 1273 } |
1274 wcsSize += delimiterSize; | 1274 wcsSize += delimiterSize; |
1275 } | 1275 } |
1276 if ((mbcsTotal + mbcsSize) >= mbcsPos) { | 1276 if ((mbcsTotal + mbcsSize) >= mbcsPos) { |
1277 int bufferSize = mbcsPos - mbcsTotal; | 1277 int bufferSize = mbcsPos - mbcsTotal; |
2010 int wcsToMbcsPos (int wcsPos) { | 2010 int wcsToMbcsPos (int wcsPos) { |
2011 if (wcsPos <= 0) return 0; | 2011 if (wcsPos <= 0) return 0; |
2012 if (OS.IsUnicode) return wcsPos; | 2012 if (OS.IsUnicode) return wcsPos; |
2013 int cp = getCodePage (); | 2013 int cp = getCodePage (); |
2014 int wcsTotal = 0, mbcsTotal = 0; | 2014 int wcsTotal = 0, mbcsTotal = 0; |
2015 char [] buffer = new char [128]; | 2015 CHAR [] buffer = new CHAR [128]; |
2016 String delimiter = getLineDelimiter (); | 2016 String delimiter = getLineDelimiter (); |
2017 int delimiterSize = delimiter.length; | 2017 int delimiterSize = delimiter.length; |
2018 int count = OS.SendMessageA (handle, OS.EM_GETLINECOUNT, 0, 0); | 2018 int count = OS.SendMessageA (handle, OS.EM_GETLINECOUNT, 0, 0); |
2019 for (int line=0; line<count; line++) { | 2019 for (int line=0; line<count; line++) { |
2020 int wcsSize = 0; | 2020 int wcsSize = 0; |
2021 int linePos = OS.SendMessageA (handle, OS.EM_LINEINDEX, line, 0); | 2021 int linePos = OS.SendMessageA (handle, OS.EM_LINEINDEX, line, 0); |
2022 int mbcsSize = OS.SendMessageA (handle, OS.EM_LINELENGTH, linePos, 0); | 2022 int mbcsSize = OS.SendMessageA (handle, OS.EM_LINELENGTH, linePos, 0); |
2023 if (mbcsSize !is 0) { | 2023 if (mbcsSize !is 0) { |
2024 if (mbcsSize + delimiterSize > buffer.length) { | 2024 if (mbcsSize + delimiterSize > buffer.length) { |
2025 buffer = new char [mbcsSize + delimiterSize]; | 2025 buffer = new CHAR [mbcsSize + delimiterSize]; |
2026 } | 2026 } |
2027 //ENDIAN | 2027 //ENDIAN |
2028 buffer [0] = cast(char) (mbcsSize & 0xFF); | 2028 buffer [0] = cast(char) (mbcsSize & 0xFF); |
2029 buffer [1] = cast(char) (mbcsSize >> 8); | 2029 buffer [1] = cast(char) (mbcsSize >> 8); |
2030 mbcsSize = OS.SendMessageA (handle, OS.EM_GETLINE, line, buffer.ptr); | 2030 mbcsSize = OS.SendMessageA (handle, OS.EM_GETLINE, line, buffer.ptr); |