Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2811 leency 1
 
2
{
3
   while (BL=ESBYTE[ESI])
4
   {
5
        IF (BL>=192)
6
        {
7
             IF (BL>=240) ESBYTE[ESI] = BL - 16;
8
             ELSE ESBYTE[ESI] = BL - 64;
9
        }
10
        ELSE
11
        {
12
	IF (BL==178) ESBYTE[ESI] = 73;  //I
13
	IF (BL==179) ESBYTE[ESI] = 105; //i
14
	IF (BL==175) ESBYTE[ESI] = 244; //J
15
    IF (BL==191) ESBYTE[ESI] = 245; //j
16
	IF (BL==170) ESBYTE[ESI] = 242; //E
17
	IF (BL==186) ESBYTE[ESI] = 243; //e
18
    IF (BL==168) ESBYTE[ESI] = 240; //р
19
    IF (BL==184) ESBYTE[ESI] = 'e'; //e
20
	IF (BL==180) ESBYTE[ESI] = 254; //г
21
    IF ((BL==147) || (BL==148) || (BL==171) || (BL==187)) ESBYTE[ESI] = 34;
22
    IF ((BL==150) || (BL==151)) ESBYTE[ESI] = 45;
23
        }
24
        ESI++;
25
   }
26
}
27
28
 
29
 
30
void koitodos(dword EDI)
31
{
32
	WHILE (BL=ESBYTE[EDI])
33
	{
34
		IF (BL >= 0xC0)
35
		{
36
			BL -= 0xC0;
37
			ESBYTE[EDI] = mas[BL];
38
		}
39
		//IF (ESBYTE[EDI]=='\244') ESBYTE[EDI]='i';
40
		EDI++;
41
	}
42
}
43
44
 
45
 
46
//uncomplete
47
int utf8rutodos(dword ESI) //-
48
{
49
    EDI=ESI;
50
  while (BL=ESBYTE[ESI])
51
  {
52
    IF (BL == 0xD0) || (BL == 0xD1) EDI--;
53
        else IF (BL == 0x81) && (ESBYTE[ESI-1]==0xD0) ESBYTE[EDI] = 0xF0; //ш
54
        else IF (BL == 0x91) && (ESBYTE[ESI-1]==0xD1) ESBYTE[EDI] = 0xF1; //м
55
        //0xE2 0x80 - сгруппировать
56
        else IF (BL == 0xE2) && (ESBYTE[ESI+1]==0x80)
57
        SWITCH (ESBYTE[ESI+2])
58
        {
59
        case 0x93: //long defis
60
        CASE 0x94:
61
        {
62
          ESBYTE[EDI] = '-';
63
          ESI+=2;
64
            BREAK;
65
        }
66
        CASE 0xA2: //central point
67
        {
68
          ESBYTE[EDI] = '*';
69
          ESI+=2;
70
            BREAK;
71
        }
72
        CASE 0xA6: //многоточие
73
        {
74
          ESBYTE[EDI] = ESBYTE[EDI+1] = ESBYTE[EDI+2] = '.';
75
          EDI+=2;
76
          ESI+=2;
77
          break;
78
          }
79
        }
80
81
 
82
83
 
84
          SWITCH(ESBYTE[ESI+1]) {
85
            case 0xAB: //"
86
            CASE 0xBB: //"
87
              {
88
                ESBYTE[EDI] = '\"';
89
                ESI++;
90
                BREAK;
91
              }
92
            CASE 0xB7: // _
93
              {
94
                ESBYTE[EDI] = '_';
95
                ESI++;
96
                BREAK;
97
              }
98
            CASE 0xA0: // Alt+160 - неразбивающий пробел
99
              {
100
                ESBYTE[EDI] = ' ';
101
                ESI++;
102
                BREAK;
103
              }
104
            CASE 0xB0: // градус
105
              {
106
                ESBYTE[EDI] = '\29';
107
                ESI++;
108
                BREAK;
109
              }
110
            CASE 0xA9: // (c)
111
            {
112
              ESWORD[EDI] = 'c(';
113
//              ESBYTE[EDI] = '(';
114
//              ESBYTE[EDI+1] = 'c';
115
              ESBYTE[EDI+2] = ')';
116
              EDI+=2;
117
              ESI++;
118
              BREAK;
119
            }
120
            CASE 0xAE: // (r)
121
            {
122
              ESWORD[EDI] = 'r(';
123
              ESBYTE[EDI+2] = ')';
124
              EDI+=2;
125
              ESI++;
126
              break;
127
            }
128
          }
129
130
 
131
    {
132
      BL -= 0x10;
133
      ESBYTE[EDI] = BL;
134
    }
135
        ELSE IF (BL >= 0x80) && (BL <= 0x8F)
136
    {
137
      BL += 0x60;
138
      ESBYTE[EDI] = BL;
139
    }
140
      ELSE IF (BL >= 0xB0) && (BL <= 0xBF)
141
    {
142
     BL -= 0x10;
143
     ESBYTE[EDI] = BL;
144
    }
145
    ELSE ESBYTE[EDI] = BL;
146
    ESI++;
147
    EDI++;
148
  }
149
  WHILE (EDI
150
  {
151
    ESBYTE[EDI] = ' ';
152
    EDI++;
153
   }
154
}
155
156
 
157
158
 
159
{
160
  dword j=0, symbol=0;
161
  char ch=0x00;
162
  FOR (;j<2;j++)
163
  {
164
    ch=ESBYTE[htmlcolor+j];
165
    IF (ch==0x0d) || (ch=='\9') RETURN '';
166
    IF ((ch>='0') && (ch<='9')) ch -= '0';
167
    IF ((ch>='A') && (ch<='F')) ch -= 'A'-10;
168
    IF ((ch>='a') && (ch<='f')) ch -= 'a'-10;
169
    symbol = symbol*0x10 + ch;
170
  }
171
  wintodos(#symbol);
172
  AL=symbol;
173
}
174
175
 
176
{
177
  if (c <=9)
178
    return (c+48);
179
180
 
181
}
182
183
 
184
{
185
  if (c <=9)
186
    return (c+48);
187
188
 
189
}*/
190
>