Subversion Repositories Kolibri OS

Rev

Rev 3106 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3067 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
inline fastcall void koitodos( 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
//uncomplete
46
inline fastcall void utf8rutodos( ESI)
47
{
48
    EDI=ESI;
49
  while (BL=ESBYTE[ESI])
50
  {
51
    IF (BL == 0xD0) || (BL == 0xD1) EDI--;
52
        else IF (BL == 0x81) && (ESBYTE[ESI-1]==0xD0) ESBYTE[EDI] = 0xF0; //ш
53
        else IF (BL == 0x91) && (ESBYTE[ESI-1]==0xD1) ESBYTE[EDI] = 0xF1; //м
54
        //0xE2 0x80 - сгруппировать
55
        else IF (BL == 0xE2) && (ESBYTE[ESI+1]==0x80)
56
        SWITCH (ESBYTE[ESI+2])
57
        {
58
        case 0x93: //long defis
59
        CASE 0x94:
60
        {
61
          ESBYTE[EDI] = '-';
62
          ESI+=2;
63
            BREAK;
64
        }
65
        CASE 0xA2: //central point
66
        {
67
          ESBYTE[EDI] = '*';
68
          ESI+=2;
69
            BREAK;
70
        }
71
        CASE 0xA6: //многоточие
72
        {
73
          ESBYTE[EDI] = ESBYTE[EDI+1] = ESBYTE[EDI+2] = '.';
74
          EDI+=2;
75
          ESI+=2;
76
          break;
77
          }
78
        }
79
80
 
81
          SWITCH(ESBYTE[ESI+1]) {
82
            case 0xAB: //"
83
            CASE 0xBB: //"
84
              {
85
                ESBYTE[EDI] = '\"';
86
                ESI++;
87
                BREAK;
88
              }
89
            CASE 0xB7: // _
90
              {
91
                ESBYTE[EDI] = '_';
92
                ESI++;
93
                BREAK;
94
              }
95
            CASE 0xA0: // Alt+160 - неразбивающий пробел
96
              {
97
                ESBYTE[EDI] = ' ';
98
                ESI++;
99
                BREAK;
100
              }
101
            CASE 0xB0: // градус
102
              {
103
                ESBYTE[EDI] = '\29';
104
                ESI++;
105
                BREAK;
106
              }
107
			CASE 0xA9: // (c) --- вылет О_о
108
			{
109
			  ESBYTE[EDI] = 'c';
110
			  //ESBYTE[EDI] = '(';
111
			  //ESBYTE[EDI+1] = 'c';
112
			  //ESBYTE[EDI+2] = ')';
113
			  //EDI+=2;
114
			  ESI++;
115
			  BREAK;
116
			}
117
			CASE 0xAE: // (r)
118
			{
119
			  ESBYTE[EDI] = 'r';
120
			  //ESBYTE[EDI] = '(';
121
			  //ESBYTE[EDI+1] = 'r';
122
			  //ESBYTE[EDI+2] = ')';
123
			  //EDI+=2;
124
			  ESI++;
125
			  BREAK;
126
			}
127
     }
128
129
 
130
    {
131
      BL -= 0x10;
132
      ESBYTE[EDI] = BL;
133
    }
134
        ELSE IF (BL >= 0x80) && (BL <= 0x8F)
135
    {
136
      BL += 0x60;
137
      ESBYTE[EDI] = BL;
138
    }
139
      ELSE IF (BL >= 0xB0) && (BL <= 0xBF)
140
    {
141
     BL -= 0x10;
142
     ESBYTE[EDI] = BL;
143
    }
144
    ELSE ESBYTE[EDI] = BL;
145
    ESI++;
146
    EDI++;
147
  }
148
  WHILE (EDI
149
  {
150
    ESBYTE[EDI] = ' ';
151
    EDI++;
152
   }
153
}
154
155
 
156
157
 
3412 leency 158
{
3067 leency 159
  dword j=0, symbol=0;
160
  char ch=0x00;
161
  FOR (;j<2;j++)
162
  {
163
    ch=ESBYTE[htmlcolor+j];
164
    IF (ch==0x0d) || (ch=='\9') RETURN '';
165
    IF ((ch>='0') && (ch<='9')) ch -= '0';
166
    IF ((ch>='A') && (ch<='F')) ch -= 'A'-10;
167
    IF ((ch>='a') && (ch<='f')) ch -= 'a'-10;
168
    symbol = symbol*0x10 + ch;
169
  }
170
  wintodos(#symbol);
171
  AL=symbol;
172
}
3412 leency 173
174
 
175
{
176
  unsigned char size_prefix[8], size_nm[4];
177
  if (bytes>=1073741824) strcpy(#size_nm, " Gb");
178
  else if (bytes>=1048576) strcpy(#size_nm, " Mb");
179
  else if (bytes>=1024) strcpy(#size_nm, " Kb");
180
  else strcpy(#size_nm, " b ");
181
  while (bytes>1023) bytes/=1024;
182
  strcpy(#size_prefix, itoa(bytes));
183
  strcat(#size_prefix, #size_nm);
184
  return #size_prefix;
185
}
3106 leency 186
>