1,26 → 1,32 |
#ifndef INCLUDE_ENCODING_H |
#define INCLUDE_ENCODING_H |
|
#ifndef INCLUDE_KOLIBRI_H |
#include "../lib/kolibri.h" |
#endif |
|
inline fastcall void wintodos( ESI) |
{ |
while (BL=ESBYTE[ESI]) |
{ |
IF (BL>=192) |
if (BL>=192) |
{ |
IF (BL>=240) ESBYTE[ESI] = BL - 16; |
ELSE ESBYTE[ESI] = BL - 64; |
if (BL>=240) ESBYTE[ESI] = BL - 16; |
else ESBYTE[ESI] = BL - 64; |
} |
ELSE |
else |
{ |
IF (BL==178) ESBYTE[ESI] = 73; //I |
IF (BL==179) ESBYTE[ESI] = 105; //i |
IF (BL==175) ESBYTE[ESI] = 244; //J |
IF (BL==191) ESBYTE[ESI] = 245; //j |
IF (BL==170) ESBYTE[ESI] = 242; //E |
IF (BL==186) ESBYTE[ESI] = 243; //e |
IF (BL==168) ESBYTE[ESI] = 240; //ð |
IF (BL==184) ESBYTE[ESI] = 'e'; //e |
IF (BL==180) ESBYTE[ESI] = 254; //ã |
IF ((BL==147) || (BL==148) || (BL==171) || (BL==187)) ESBYTE[ESI] = 34; |
IF ((BL==150) || (BL==151)) ESBYTE[ESI] = 45; |
if (BL==178) ESBYTE[ESI] = 73; //I |
if (BL==179) ESBYTE[ESI] = 105; //i |
if (BL==175) ESBYTE[ESI] = 244; //J |
if (BL==191) ESBYTE[ESI] = 245; //j |
if (BL==170) ESBYTE[ESI] = 242; //E |
if (BL==186) ESBYTE[ESI] = 243; //e |
if (BL==168) ESBYTE[ESI] = 240; //ð |
if (BL==184) ESBYTE[ESI] = 'e'; //e |
if (BL==180) ESBYTE[ESI] = 254; //ã |
if ((BL==147) || (BL==148) || (BL==171) || (BL==187)) ESBYTE[ESI] = 34; |
if ((BL==150) || (BL==151)) ESBYTE[ESI] = 45; |
} |
ESI++; |
} |
30,14 → 36,14 |
byte mas[66] = "î ¡æ¤¥ä£å¨©ª«¬®¯ïàáâ㦢ìë§èíéçê
"; |
inline fastcall void koitodos( EDI) |
{ |
WHILE (BL=ESBYTE[EDI]) |
while (BL=ESBYTE[EDI]) |
{ |
IF (BL >= 0xC0) |
if (BL >= 0xC0) |
{ |
BL -= 0xC0; |
ESBYTE[EDI] = mas[BL]; |
} |
//IF (ESBYTE[EDI]=='\244') ESBYTE[EDI]='i'; |
//if (ESBYTE[EDI]=='\244') ESBYTE[EDI]='i'; |
EDI++; |
} |
} |
49,27 → 55,27 |
EDI=ESI; |
while (BL=ESBYTE[ESI]) |
{ |
IF (BL == 0xD0) || (BL == 0xD1) EDI--; |
else IF (BL == 0x81) && (ESBYTE[ESI-1]==0xD0) ESBYTE[EDI] = 0xF0; //ø |
else IF (BL == 0x91) && (ESBYTE[ESI-1]==0xD1) ESBYTE[EDI] = 0xF1; //ì |
if (BL == 0xD0) || (BL == 0xD1) EDI--; |
else if (BL == 0x81) && (ESBYTE[ESI-1]==0xD0) ESBYTE[EDI] = 0xF0; //ø |
else if (BL == 0x91) && (ESBYTE[ESI-1]==0xD1) ESBYTE[EDI] = 0xF1; //ì |
//0xE2 0x80 - ñãðóïïèðîâàòü |
else IF (BL == 0xE2) && (ESBYTE[ESI+1]==0x80) |
SWITCH (ESBYTE[ESI+2]) |
else if (BL == 0xE2) && (ESBYTE[ESI+1]==0x80) |
switch (ESBYTE[ESI+2]) |
{ |
case 0x93: //long defis |
CASE 0x94: |
case 0x94: |
{ |
ESBYTE[EDI] = '-'; |
ESI+=2; |
BREAK; |
break; |
} |
CASE 0xA2: //central point |
case 0xA2: //central point |
{ |
ESBYTE[EDI] = '*'; |
ESI+=2; |
BREAK; |
break; |
} |
CASE 0xA6: //ìíîãîòî÷èå |
case 0xA6: //ìíîãîòî÷èå |
{ |
ESBYTE[EDI] = ESBYTE[EDI+1] = ESBYTE[EDI+2] = '.'; |
EDI+=2; |
78,67 → 84,67 |
} |
} |
|
else IF (BL == 0xC2) //òàáëèöó ïåðåêîäèðîâîê? |
SWITCH(ESBYTE[ESI+1]) { |
else if (BL == 0xC2) //òàáëèöó ïåðåêîäèðîâîê? |
switch(ESBYTE[ESI+1]) { |
case 0xAB: //" |
CASE 0xBB: //" |
case 0xBB: //" |
{ |
ESBYTE[EDI] = '\"'; |
ESI++; |
BREAK; |
break; |
} |
CASE 0xB7: // _ |
case 0xB7: // _ |
{ |
ESBYTE[EDI] = '_'; |
ESI++; |
BREAK; |
break; |
} |
CASE 0xA0: // Alt+160 - íåðàçáèâàþùèé ïðîáåë |
case 0xA0: // Alt+160 - íåðàçáèâàþùèé ïðîáåë |
{ |
ESBYTE[EDI] = ' '; |
ESI++; |
BREAK; |
break; |
} |
CASE 0xB0: // ãðàäóñ |
case 0xB0: // ãðàäóñ |
{ |
ESBYTE[EDI] = '\29'; |
ESI++; |
BREAK; |
break; |
} |
CASE 0xA9: // (c) --- âûëåò Î_î |
case 0xA9: // (c) --- âûëåò Î_î |
{ |
ESBYTE[EDI] = 'c'; |
ESI++; |
BREAK; |
break; |
} |
CASE 0xAE: // (r) |
case 0xAE: // (r) |
{ |
ESBYTE[EDI] = 'r'; |
ESI++; |
BREAK; |
break; |
} |
} |
|
ELSE IF (BL >= 0x90) && (BL <= 0xAF) |
else if (BL >= 0x90) && (BL <= 0xAF) |
{ |
BL -= 0x10; |
ESBYTE[EDI] = BL; |
} |
ELSE IF (BL >= 0x80) && (BL <= 0x8F) |
else if (BL >= 0x80) && (BL <= 0x8F) |
{ |
BL += 0x60; |
ESBYTE[EDI] = BL; |
} |
ELSE IF (BL >= 0xB0) && (BL <= 0xBF) |
else if (BL >= 0xB0) && (BL <= 0xBF) |
{ |
BL -= 0x10; |
ESBYTE[EDI] = BL; |
} |
ELSE ESBYTE[EDI] = BL; |
else ESBYTE[EDI] = BL; |
ESI++; |
EDI++; |
} |
WHILE (EDI<ESI) |
while (EDI<ESI) |
{ |
ESBYTE[EDI] = ' '; |
EDI++; |
151,13 → 157,13 |
{ |
dword j=0, symbol=0; |
char ch=0x00; |
FOR (;j<2;j++) |
for (;j<2;j++) |
{ |
ch=ESBYTE[htmlcolor+j]; |
IF (ch==0x0d) || (ch=='\9') RETURN 0; |
IF ((ch>='0') && (ch<='9')) ch -= '0'; |
IF ((ch>='A') && (ch<='F')) ch -= 'A'-10; |
IF ((ch>='a') && (ch<='f')) ch -= 'a'-10; |
if (ch==0x0d) || (ch=='\9') RETURN 0; |
if ((ch>='0') && (ch<='9')) ch -= '0'; |
if ((ch>='A') && (ch<='F')) ch -= 'A'-10; |
if ((ch>='a') && (ch<='f')) ch -= 'a'-10; |
symbol = symbol*0x10 + ch; |
} |
wintodos(#symbol); |
165,3 → 171,4 |
} |
|
|
#endif |