Advertisement
Guest User

Untitled

a guest
Apr 18th, 2014
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.09 KB | None | 0 0
  1. internal struct OPOSThaiText
  2. {
  3.     internal string TextLine1;
  4.     internal string TextLine2;
  5.     internal string TextLine3;
  6. }
  7.  
  8. private OPOSThaiText ParsingThaiCodePage21(string prntTxt)
  9. {
  10.     string strLine1 = null;
  11.     string strLine2 = null;
  12.     string strLine3 = null;
  13.     int i = 0;
  14.     int aCode = 0;
  15.     int aNextCode = 0;
  16.     string strChar = null;
  17.     OPOSThaiText resultText = default(OPOSThaiText);
  18.     strLine1 = "";
  19.     strLine2 = "";
  20.     strLine3 = "";
  21.     for (i = 0; i <= Strings.Len(prntTxt) - 1; i++) {
  22.         if (i >= Strings.Len(prntTxt)) {
  23.             break; // TODO: might not be correct. Was : Exit For
  24.         }
  25.         aCode = Strings.Asc(prntTxt[i]);
  26.         strChar = prntTxt[i];
  27.         switch (aCode) {
  28.             case 0xd1:
  29.             case 0xd4:
  30.             case 213:
  31.             case 214:
  32.             case 215:
  33.                 //ไม้หันอากาศ และ สระด้านบน เช่น อิ อี
  34.                 //Check if letter next to it is วรรณยุกต์
  35.                 if (i == Strings.Len(prntTxt) - 1) {
  36.                     //This is the last letter
  37.                     strChar = prntTxt[i];
  38.                 } else {
  39.                     aNextCode = Strings.Asc(prntTxt[i + 1]);
  40.                     switch (aNextCode) {
  41.                         //Comboine current and the next character into new one
  42.                         case 0xe8:
  43.                         case 233:
  44.                         case 234:
  45.                         case 235:
  46.                         case 236:
  47.                         case 237:
  48.                             //วรรณยุกต์ และการันต์
  49.                             switch (aNextCode) {
  50.                                 case 0xe8:
  51.                                     //ไม้เอก
  52.                                     switch (aCode) {
  53.                                         case 0xd1:
  54.                                             //ไม้หันอากาศ
  55.                                             aNextCode = 0x80;
  56.                                             break;
  57.                                         case 0xd4:
  58.                                             //อิ
  59.                                             aNextCode = 0x84;
  60.                                             break;
  61.                                         case 0xd5:
  62.                                             //อี
  63.                                             aNextCode = 0x89;
  64.                                             break;
  65.                                         case 0xd6:
  66.                                             //อึ
  67.                                             aNextCode = 0x8d;
  68.                                             break;
  69.                                         case 0xd7:
  70.                                             //อื
  71.                                             aNextCode = 0x91;
  72.                                             break;
  73.                                     }
  74.  
  75.                                     break;
  76.                                 case 0xe9:
  77.                                     //ไม้โท
  78.                                     switch (aCode) {
  79.                                         case 0xd1:
  80.                                             //ไม้หันอากาศ
  81.                                             aNextCode = 0x81;
  82.                                             break;
  83.                                         case 0xd4:
  84.                                             //อิ
  85.                                             aNextCode = 0x85;
  86.                                             break;
  87.                                         case 0xd5:
  88.                                             //อี
  89.                                             aNextCode = 0x8a;
  90.                                             break;
  91.                                         case 0xd6:
  92.                                             //อึ
  93.                                             aNextCode = 0x8e;
  94.                                             break;
  95.                                         case 0xd7:
  96.                                             //อื
  97.                                             aNextCode = 0x92;
  98.                                             break;
  99.                                     }
  100.  
  101.                                     break;
  102.                                 case 0xea:
  103.                                     //ไม้ตรี
  104.                                     switch (aCode) {
  105.                                         case 0xd1:
  106.                                             //ไม้หันอากาศ
  107.                                             aNextCode = 0x82;
  108.                                             break;
  109.                                         case 0xd4:
  110.                                             //อิ
  111.                                             aNextCode = 0x86;
  112.                                             break;
  113.                                         case 0xd5:
  114.                                             //อี
  115.                                             aNextCode = 0x8b;
  116.                                             break;
  117.                                         case 0xd6:
  118.                                             //อึ
  119.                                             aNextCode = 0x8f;
  120.                                             break;
  121.                                         case 0xd7:
  122.                                             //อื
  123.                                             aNextCode = 0x93;
  124.                                             break;
  125.                                     }
  126.                                     break;
  127.                                 case 0xeb:
  128.                                     //ไม้จักวา
  129.                                     switch (aCode) {
  130.                                         case 0xd1:
  131.                                             //ไม้หันอากาศ
  132.                                             aNextCode = 0x83;
  133.                                             break;
  134.                                         case 0xd4:
  135.                                             //อิ
  136.                                             aNextCode = 0x87;
  137.                                             break;
  138.                                         case 0xd5:
  139.                                             //อี
  140.                                             aNextCode = 0x8c;
  141.                                             break;
  142.                                         case 0xd6:
  143.                                             //อึ
  144.                                             aNextCode = 0x90;
  145.                                             break;
  146.                                         case 0xd7:
  147.                                             //อื
  148.                                             aNextCode = 0x94;
  149.                                             break;
  150.                                     }
  151.                                     break;
  152.                                 case 0xec:
  153.                                     //การันต์
  154.                                     switch (aCode) {
  155.                                         case 0xd4:
  156.                                             //อิ
  157.                                             aNextCode = 0x88;
  158.  
  159.                                             break;
  160.                                     }
  161.                                     break;
  162.                             }
  163.                             strChar = Strings.Chr(aNextCode);
  164.                             i += 1;
  165.  
  166.                             break;
  167.                         default:
  168.                             strChar = prntTxt[i];
  169.                             break;
  170.                     }
  171.                 }
  172.                 strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + strChar;
  173.  
  174.                 break;
  175.             case 0xe7:
  176.             case 232:
  177.             case 233:
  178.             case 234:
  179.             case 235:
  180.             case 236:
  181.             case 237:
  182.                 //วรรณยุกต์
  183.                 //Check if letter next to it is วรรณยุกต์
  184.                 if (i == Strings.Len(prntTxt) - 1) {
  185.                     //This is the last letter
  186.                     strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + prntTxt[i];
  187.                 } else {
  188.                     aNextCode = Strings.Asc(prntTxt[i + 1]);
  189.                     switch (aNextCode) {
  190.                         case 0xd3:
  191.                             //สระอำ
  192.                             switch (aCode) {
  193.                                 //เปลี่ยน สระอำ เป็น สระอา และ เปลี่ยน ลูกกลมข้างบนรวมกับวรรณยุกต์
  194.                                 case 0xe8:
  195.                                     //ไม้เอก
  196.                                     strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + Strings.Chr(0x95) + " ";
  197.                                     break;
  198.                                 case 0xe9:
  199.                                     //ไม้โท
  200.                                     strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + Strings.Chr(0x96) + " ";
  201.                                     break;
  202.                                 case 0xea:
  203.                                     //ไม้ตรี
  204.                                     strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + Strings.Chr(0x97) + " ";
  205.                                     break;
  206.                                 case 0xeb:
  207.                                     //ไม้จักวา
  208.                                     strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + Strings.Chr(0x98) + " ";
  209.                                     break;
  210.                             }
  211.                             strLine2 += Strings.Chr(0xd2);
  212.                             strLine3 += " ";
  213.                             i += 1;
  214.                             break;
  215.                         default:
  216.                             strLine1 = Strings.Mid(strLine1, 1, Strings.Len(strLine1) - 1) + prntTxt[i];
  217.                             break;
  218.                     }
  219.                 }
  220.  
  221.                 break;
  222.             case 0xd8:
  223.             case 217:
  224.                 //สระ อุ อู
  225.                 strLine3 = Strings.Mid(strLine3, 1, Strings.Len(strLine3) - 1) + prntTxt[i];
  226.  
  227.                 break;
  228.             default:
  229.                 strLine1 += " ";
  230.                 strLine2 += prntTxt[i];
  231.                 strLine3 += " ";
  232.                 break;
  233.         }
  234.     }
  235.     resultText.TextLine1 = strLine1;
  236.     resultText.TextLine2 = strLine2;
  237.     resultText.TextLine3 = strLine3;
  238.     return resultText;
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement