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);