Rev 5483 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5483 | Rev 5598 | ||
---|---|---|---|
Line -... | Line 1... | ||
- | 1 | #ifndef INCLUDE_ENCODING_H |
|
- | 2 | #define INCLUDE_ENCODING_H |
|
- | 3 | ||
- | 4 | #ifndef INCLUDE_KOLIBRI_H |
|
- | 5 | #include "../lib/kolibri.h" |
|
- | 6 | #endif |
|
Line 1... | Line 7... | ||
1 | inline fastcall void wintodos( ESI) |
7 | |
2 | { |
8 | inline fastcall void wintodos( ESI) |
3 | while (BL=ESBYTE[ESI]) |
9 | { |
4 | { |
10 | while (BL=ESBYTE[ESI]) |
5 | IF (BL>=192) |
11 | { |
6 | { |
12 | if (BL>=192) |
7 | IF (BL>=240) ESBYTE[ESI] = BL - 16; |
13 | { |
8 | ELSE ESBYTE[ESI] = BL - 64; |
14 | if (BL>=240) ESBYTE[ESI] = BL - 16; |
9 | } |
15 | else ESBYTE[ESI] = BL - 64; |
10 | ELSE |
16 | } |
11 | { |
17 | else |
12 | IF (BL==178) ESBYTE[ESI] = 73; //I |
18 | { |
13 | IF (BL==179) ESBYTE[ESI] = 105; //i |
19 | if (BL==178) ESBYTE[ESI] = 73; //I |
14 | IF (BL==175) ESBYTE[ESI] = 244; //J |
20 | if (BL==179) ESBYTE[ESI] = 105; //i |
15 | IF (BL==191) ESBYTE[ESI] = 245; //j |
21 | if (BL==175) ESBYTE[ESI] = 244; //J |
16 | IF (BL==170) ESBYTE[ESI] = 242; //E |
22 | if (BL==191) ESBYTE[ESI] = 245; //j |
17 | IF (BL==186) ESBYTE[ESI] = 243; //e |
23 | if (BL==170) ESBYTE[ESI] = 242; //E |
18 | IF (BL==168) ESBYTE[ESI] = 240; //ð |
24 | if (BL==186) ESBYTE[ESI] = 243; //e |
19 | IF (BL==184) ESBYTE[ESI] = 'e'; //e |
25 | if (BL==168) ESBYTE[ESI] = 240; //ð |
20 | IF (BL==180) ESBYTE[ESI] = 254; //ã |
26 | if (BL==184) ESBYTE[ESI] = 'e'; //e |
21 | IF ((BL==147) || (BL==148) || (BL==171) || (BL==187)) ESBYTE[ESI] = 34; |
27 | if (BL==180) ESBYTE[ESI] = 254; //ã |
22 | IF ((BL==150) || (BL==151)) ESBYTE[ESI] = 45; |
28 | if ((BL==147) || (BL==148) || (BL==171) || (BL==187)) ESBYTE[ESI] = 34; |
23 | } |
29 | if ((BL==150) || (BL==151)) ESBYTE[ESI] = 45; |
24 | ESI++; |
30 | } |
25 | } |
31 | ESI++; |
26 | } |
32 | } |
Line 27... | Line 33... | ||
27 | 33 | } |
|
28 | 34 | ||
29 | byte mas[66] = "î ¡æ¤¥ä£å¨©ª«¬®¯ïàáâ㦢ìë§èíéçê "; |
35 | |
30 | inline fastcall void koitodos( EDI) |
36 | byte mas[66] = "î ¡æ¤¥ä£å¨©ª«¬®¯ïàáâ㦢ìë§èíéçê "; |
31 | { |
37 | inline fastcall void koitodos( EDI) |
32 | WHILE (BL=ESBYTE[EDI]) |
38 | { |
33 | { |
39 | while (BL=ESBYTE[EDI]) |
34 | IF (BL >= 0xC0) |
40 | { |
35 | { |
41 | if (BL >= 0xC0) |
36 | BL -= 0xC0; |
42 | { |
37 | ESBYTE[EDI] = mas[BL]; |
43 | BL -= 0xC0; |
38 | } |
44 | ESBYTE[EDI] = mas[BL]; |
39 | //IF (ESBYTE[EDI]=='\244') ESBYTE[EDI]='i'; |
45 | } |
40 | EDI++; |
46 | //if (ESBYTE[EDI]=='\244') ESBYTE[EDI]='i'; |
Line 41... | Line 47... | ||
41 | } |
47 | EDI++; |
Line 47... | Line 53... | ||
47 | { |
53 | inline fastcall void utf8rutodos( ESI) |
48 | EDI=ESI; |
54 | { |
49 | while (BL=ESBYTE[ESI]) |
55 | EDI=ESI; |
50 | { |
56 | while (BL=ESBYTE[ESI]) |
51 | IF (BL == 0xD0) || (BL == 0xD1) EDI--; |
57 | { |
52 | else IF (BL == 0x81) && (ESBYTE[ESI-1]==0xD0) ESBYTE[EDI] = 0xF0; //ø |
58 | if (BL == 0xD0) || (BL == 0xD1) EDI--; |
53 | else IF (BL == 0x91) && (ESBYTE[ESI-1]==0xD1) ESBYTE[EDI] = 0xF1; //ì |
59 | else if (BL == 0x81) && (ESBYTE[ESI-1]==0xD0) ESBYTE[EDI] = 0xF0; //ø |
54 | //0xE2 0x80 - ñãðóïïèðîâàòü |
60 | else if (BL == 0x91) && (ESBYTE[ESI-1]==0xD1) ESBYTE[EDI] = 0xF1; //ì |
55 | else IF (BL == 0xE2) && (ESBYTE[ESI+1]==0x80) |
61 | //0xE2 0x80 - ñãðóïïèðîâàòü |
56 | SWITCH (ESBYTE[ESI+2]) |
62 | else if (BL == 0xE2) && (ESBYTE[ESI+1]==0x80) |
57 | { |
63 | switch (ESBYTE[ESI+2]) |
58 | case 0x93: //long defis |
64 | { |
59 | CASE 0x94: |
65 | case 0x93: //long defis |
60 | { |
66 | case 0x94: |
61 | ESBYTE[EDI] = '-'; |
67 | { |
62 | ESI+=2; |
68 | ESBYTE[EDI] = '-'; |
63 | BREAK; |
69 | ESI+=2; |
64 | } |
70 | break; |
65 | CASE 0xA2: //central point |
71 | } |
66 | { |
72 | case 0xA2: //central point |
67 | ESBYTE[EDI] = '*'; |
73 | { |
68 | ESI+=2; |
74 | ESBYTE[EDI] = '*'; |
69 | BREAK; |
75 | ESI+=2; |
70 | } |
76 | break; |
71 | CASE 0xA6: //ìíîãîòî÷èå |
77 | } |
72 | { |
78 | case 0xA6: //ìíîãîòî÷èå |
73 | ESBYTE[EDI] = ESBYTE[EDI+1] = ESBYTE[EDI+2] = '.'; |
79 | { |
74 | EDI+=2; |
80 | ESBYTE[EDI] = ESBYTE[EDI+1] = ESBYTE[EDI+2] = '.'; |
75 | ESI+=2; |
81 | EDI+=2; |
76 | break; |
82 | ESI+=2; |
77 | } |
83 | break; |
78 | } |
84 | } |
79 | 85 | } |
|
Line 80... | Line 86... | ||
80 | else IF (BL == 0xC2) //òàáëèöó ïåðåêîäèðîâîê? |
86 | |
81 | SWITCH(ESBYTE[ESI+1]) { |
87 | else if (BL == 0xC2) //òàáëèöó ïåðåêîäèðîâîê? |
82 | case 0xAB: //" |
88 | switch(ESBYTE[ESI+1]) { |
83 | CASE 0xBB: //" |
89 | case 0xAB: //" |
84 | { |
90 | case 0xBB: //" |
85 | ESBYTE[EDI] = '\"'; |
91 | { |
86 | ESI++; |
92 | ESBYTE[EDI] = '\"'; |
87 | BREAK; |
93 | ESI++; |
88 | } |
94 | break; |
89 | CASE 0xB7: // _ |
95 | } |
90 | { |
96 | case 0xB7: // _ |
91 | ESBYTE[EDI] = '_'; |
97 | { |
92 | ESI++; |
98 | ESBYTE[EDI] = '_'; |
93 | BREAK; |
99 | ESI++; |
94 | } |
100 | break; |
95 | CASE 0xA0: // Alt+160 - íåðàçáèâàþùèé ïðîáåë |
101 | } |
96 | { |
102 | case 0xA0: // Alt+160 - íåðàçáèâàþùèé ïðîáåë |
97 | ESBYTE[EDI] = ' '; |
103 | { |
98 | ESI++; |
104 | ESBYTE[EDI] = ' '; |
99 | BREAK; |
105 | ESI++; |
100 | } |
106 | break; |
101 | CASE 0xB0: // ãðàäóñ |
107 | } |
102 | { |
108 | case 0xB0: // ãðàäóñ |
103 | ESBYTE[EDI] = '\29'; |
109 | { |
104 | ESI++; |
110 | ESBYTE[EDI] = '\29'; |
105 | BREAK; |
111 | ESI++; |
106 | } |
112 | break; |
107 | CASE 0xA9: // (c) --- âûëåò Î_î |
113 | } |
108 | { |
114 | case 0xA9: // (c) --- âûëåò Î_î |
109 | ESBYTE[EDI] = 'c'; |
115 | { |
110 | ESI++; |
116 | ESBYTE[EDI] = 'c'; |
111 | BREAK; |
117 | ESI++; |
112 | } |
118 | break; |
113 | CASE 0xAE: // (r) |
119 | } |
114 | { |
120 | case 0xAE: // (r) |
115 | ESBYTE[EDI] = 'r'; |
121 | { |
116 | ESI++; |
122 | ESBYTE[EDI] = 'r'; |
117 | BREAK; |
123 | ESI++; |
118 | } |
124 | break; |
119 | } |
125 | } |
Line 120... | Line 126... | ||
120 | 126 | } |
|
121 | ELSE IF (BL >= 0x90) && (BL <= 0xAF) |
127 | |
122 | { |
128 | else if (BL >= 0x90) && (BL <= 0xAF) |
123 | BL -= 0x10; |
129 | { |
124 | ESBYTE[EDI] = BL; |
130 | BL -= 0x10; |
125 | } |
131 | ESBYTE[EDI] = BL; |
126 | ELSE IF (BL >= 0x80) && (BL <= 0x8F) |
132 | } |
127 | { |
133 | else if (BL >= 0x80) && (BL <= 0x8F) |
128 | BL += 0x60; |
134 | { |
129 | ESBYTE[EDI] = BL; |
135 | BL += 0x60; |
130 | } |
136 | ESBYTE[EDI] = BL; |
131 | ELSE IF (BL >= 0xB0) && (BL <= 0xBF) |
137 | } |
132 | { |
138 | else if (BL >= 0xB0) && (BL <= 0xBF) |
133 | BL -= 0x10; |
139 | { |
134 | ESBYTE[EDI] = BL; |
140 | BL -= 0x10; |
135 | } |
141 | ESBYTE[EDI] = BL; |
136 | ELSE ESBYTE[EDI] = BL; |
142 | } |
137 | ESI++; |
143 | else ESBYTE[EDI] = BL; |
138 | EDI++; |
144 | ESI++; |
139 | } |
145 | EDI++; |
140 | WHILE (EDI |
146 | } |
141 | { |
147 | while (EDI |
142 | ESBYTE[EDI] = ' '; |
148 | { |
143 | EDI++; |
149 | ESBYTE[EDI] = ' '; |
144 | } |
150 | EDI++; |
Line 149... | Line 155... | ||
149 | :dword Hex2Symb(char* htmlcolor) |
155 | |
150 | { |
156 | :dword Hex2Symb(char* htmlcolor) |
151 | dword j=0, symbol=0; |
157 | { |
152 | char ch=0x00; |
158 | dword j=0, symbol=0; |
153 | FOR (;j<2;j++) |
159 | char ch=0x00; |
154 | { |
160 | for (;j<2;j++) |
155 | ch=ESBYTE[htmlcolor+j]; |
161 | { |
156 | IF (ch==0x0d) || (ch=='\9') RETURN 0; |
162 | ch=ESBYTE[htmlcolor+j]; |
157 | IF ((ch>='0') && (ch<='9')) ch -= '0'; |
163 | if (ch==0x0d) || (ch=='\9') RETURN 0; |
158 | IF ((ch>='A') && (ch<='F')) ch -= 'A'-10; |
164 | if ((ch>='0') && (ch<='9')) ch -= '0'; |
159 | IF ((ch>='a') && (ch<='f')) ch -= 'a'-10; |
165 | if ((ch>='A') && (ch<='F')) ch -= 'A'-10; |
160 | symbol = symbol*0x10 + ch; |
166 | if ((ch>='a') && (ch<='f')) ch -= 'a'-10; |
161 | } |
167 | symbol = symbol*0x10 + ch; |
162 | wintodos(#symbol); |
168 | } |
163 | AL=symbol; |
169 | wintodos(#symbol); |
164 | }='f'))>='F'))>='9'))>2;j++) |
170 | AL=symbol; |
Line -... | Line 171... | ||
- | 171 | } |
|
165 | > |
172 |