Subversion Repositories Kolibri OS

Rev

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

  1.  
  2. void wintodos(dword ESI)
  3. {
  4.    while (BL=ESBYTE[ESI])
  5.    {
  6.         IF (BL>=192)
  7.         {
  8.              IF (BL>=240) ESBYTE[ESI] = BL - 16;
  9.              ELSE ESBYTE[ESI] = BL - 64;
  10.         }
  11.         ELSE
  12.         {
  13.         IF (BL==178) ESBYTE[ESI] = 73;  //I
  14.         IF (BL==179) ESBYTE[ESI] = 105; //i
  15.         IF (BL==175) ESBYTE[ESI] = 244; //J
  16.     IF (BL==191) ESBYTE[ESI] = 245; //j
  17.         IF (BL==170) ESBYTE[ESI] = 242; //E
  18.         IF (BL==186) ESBYTE[ESI] = 243; //e
  19.     IF (BL==168) ESBYTE[ESI] = 240; //ð
  20.     IF (BL==184) ESBYTE[ESI] = 'e'; //e
  21.         IF (BL==180) ESBYTE[ESI] = 254; //ã
  22.     IF ((BL==147) || (BL==148) || (BL==171) || (BL==187)) ESBYTE[ESI] = 34;
  23.     IF ((BL==150) || (BL==151)) ESBYTE[ESI] = 45;
  24.         }
  25.         ESI++;
  26.    }
  27. }
  28.  
  29.  
  30. byte mas[66] = "椥ä£å¨©ª«¬­®¯ïàáâ㦢ìë§èíéçꞀ–„…”ƒ•ˆ‰Š‹ŒŽŸ‘’“†‚œ›‡˜™—š";
  31. void koitodos(dword EDI)
  32. {
  33.         WHILE (BL=ESBYTE[EDI])
  34.         {      
  35.                 IF (BL >= 0xC0)
  36.                 {
  37.                         BL -= 0xC0;
  38.                         ESBYTE[EDI] = mas[BL];
  39.                 }
  40.                 //IF (ESBYTE[EDI]=='\244') ESBYTE[EDI]='i';
  41.                 EDI++;
  42.         }
  43. }
  44.  
  45.  
  46. //Asper, lev
  47. //uncomplete
  48. int utf8rutodos(dword ESI) //-
  49. {
  50.     EDI=ESI;
  51.   while (BL=ESBYTE[ESI])
  52.   {
  53.     IF (BL == 0xD0) || (BL == 0xD1) EDI--;
  54.         else IF (BL == 0x81) && (ESBYTE[ESI-1]==0xD0) ESBYTE[EDI] = 0xF0; //ø
  55.         else IF (BL == 0x91) && (ESBYTE[ESI-1]==0xD1) ESBYTE[EDI] = 0xF1; //ì
  56.         //0xE2 0x80 - ñãðóïïèðîâàòü
  57.         else IF (BL == 0xE2) && (ESBYTE[ESI+1]==0x80)
  58.         SWITCH (ESBYTE[ESI+2])
  59.         {
  60.         case 0x93: //long defis
  61.         CASE 0x94:
  62.         {
  63.           ESBYTE[EDI] = '-';
  64.           ESI+=2;
  65.             BREAK;
  66.         }
  67.         CASE 0xA2: //central point
  68.         {
  69.           ESBYTE[EDI] = '*';
  70.           ESI+=2;
  71.             BREAK;
  72.         }
  73.         CASE 0xA6: //ìíîãîòî÷èå
  74.         {
  75.           ESBYTE[EDI] = ESBYTE[EDI+1] = ESBYTE[EDI+2] = '.';
  76.           EDI+=2;
  77.           ESI+=2;
  78.           break;
  79.           }
  80.         }
  81.  
  82.         //0xC2 ñãðóïïèðîâàòü
  83.  
  84.         else IF (BL == 0xC2) //òàáëèöó ïåðåêîäèðîâîê?
  85.           SWITCH(ESBYTE[ESI+1]) {
  86.             case 0xAB: //"
  87.             CASE 0xBB: //"
  88.               {
  89.                 ESBYTE[EDI] = '\"';
  90.                 ESI++;
  91.                 BREAK;
  92.               }
  93.             CASE 0xB7: // _
  94.               {
  95.                 ESBYTE[EDI] = '_';
  96.                 ESI++;
  97.                 BREAK;
  98.               }
  99.             CASE 0xA0: // Alt+160 - íåðàçáèâàþùèé ïðîáåë
  100.               {
  101.                 ESBYTE[EDI] = ' ';
  102.                 ESI++;
  103.                 BREAK;
  104.               }
  105.             CASE 0xB0: // ãðàäóñ
  106.               {
  107.                 ESBYTE[EDI] = '\29';
  108.                 ESI++;
  109.                 BREAK;
  110.               }
  111.             CASE 0xA9: // (c)
  112.             {
  113.               ESWORD[EDI] = 'c(';
  114. //              ESBYTE[EDI] = '(';
  115. //              ESBYTE[EDI+1] = 'c';
  116.               ESBYTE[EDI+2] = ')';
  117.               EDI+=2;
  118.               ESI++;
  119.               BREAK;
  120.             }
  121.             CASE 0xAE: // (r)
  122.             {
  123.               ESWORD[EDI] = 'r(';
  124.               ESBYTE[EDI+2] = ')';
  125.               EDI+=2;
  126.               ESI++;
  127.               break;
  128.             }
  129.           }
  130.  
  131.         ELSE IF (BL >= 0x90) && (BL <= 0xAF)
  132.     {
  133.       BL -= 0x10;
  134.       ESBYTE[EDI] = BL;
  135.     }
  136.         ELSE IF (BL >= 0x80) && (BL <= 0x8F)
  137.     {
  138.       BL += 0x60;
  139.       ESBYTE[EDI] = BL;
  140.     }
  141.       ELSE IF (BL >= 0xB0) && (BL <= 0xBF)
  142.     {
  143.      BL -= 0x10;
  144.      ESBYTE[EDI] = BL;
  145.     }
  146.     ELSE ESBYTE[EDI] = BL;
  147.     ESI++;
  148.     EDI++;
  149.   }
  150.   WHILE (EDI<ESI)
  151.   {
  152.     ESBYTE[EDI] = ' ';
  153.     EDI++;
  154.    }
  155. }
  156.  
  157. //------------------------------------------------------------------------------
  158.  
  159. dword Hex2Symb(char* htmlcolor)
  160. {
  161.   dword j=0, symbol=0;
  162.   char ch=0x00;
  163.   FOR (;j<2;j++)
  164.   {
  165.     ch=ESBYTE[htmlcolor+j];
  166.     IF (ch==0x0d) || (ch=='\9') RETURN '';
  167.     IF ((ch>='0') && (ch<='9')) ch -= '0';
  168.     IF ((ch>='A') && (ch<='F')) ch -= 'A'-10;
  169.     IF ((ch>='a') && (ch<='f')) ch -= 'a'-10;
  170.     symbol = symbol*0x10 + ch;
  171.   }
  172.   wintodos(#symbol);
  173.   AL=symbol;
  174. }
  175.  
  176. /*int hex2char(char c)
  177. {
  178.   if (c <=9)
  179.     return (c+48);
  180.  
  181.   return (c - 10 + 'a');
  182. }
  183.  
  184. int hex2char(dword c)
  185. {
  186.   if (c <=9)
  187.     return (c+48);
  188.  
  189.   return (c - 10 + 'a');
  190. }*/
  191.