Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/ttpcmn/ttcmn.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3409 by maya, Mon May 18 11:25:37 2009 UTC revision 3419 by doda, Mon May 25 12:45:32 2009 UTC
# Line 1176  int TextOutJP(PComVar cv, PCHAR B, int C Line 1176  int TextOutJP(PComVar cv, PCHAR B, int C
1176    
1177                          } else {                          } else {
1178    
1179                                  if (cv->KanjiCodeSend == IdEUC) {                                  if (cv->Language == IdJapanese) {
1180                                          K = SJIS2EUC(K);                                          if (cv->KanjiCodeSend == IdEUC) {
1181                                  }                                                  K = SJIS2EUC(K);
1182                                  else if (cv->KanjiCodeSend != IdSJIS) {                                          }
1183                                          K = SJIS2JIS(K);                                          else if (cv->KanjiCodeSend != IdSJIS) {
1184                                  }                                                  K = SJIS2JIS(K);
1185                                            }
1186                                  if ((cv->SendCode==IdKatakana) &&  
1187                                      (cv->KanjiCodeSend==IdJIS) &&                                          if ((cv->SendCode==IdKatakana) &&
1188                                      (cv->JIS7KatakanaSend==1)) {                                              (cv->KanjiCodeSend==IdJIS) &&
1189                                          TempStr[TempLen] = SI;                                              (cv->JIS7KatakanaSend==1)) {
1190                                          TempLen++;                                                  TempStr[TempLen] = SI;
1191                                                    TempLen++;
1192                                            }
1193                                  }                                  }
1194    
1195                                  TempStr[TempLen] = HIBYTE(K);                                  TempStr[TempLen] = HIBYTE(K);
# Line 1195  int TextOutJP(PComVar cv, PCHAR B, int C Line 1197  int TextOutJP(PComVar cv, PCHAR B, int C
1197                                  TempLen = TempLen + 2;                                  TempLen = TempLen + 2;
1198                          }                          }
1199                  }                  }
1200                  else if (IsDBCSLeadByteEx(*cv->CodePage, d))                  else if (IsDBCSLeadByteEx(*cv->CodePage, d)) {
                 {  
1201                          KanjiFlagNew = TRUE;                          KanjiFlagNew = TRUE;
1202                          cv->SendKanjiFirst = d;                          cv->SendKanjiFirst = d;
1203                          SendCodeNew = IdKanji;                          SendCodeNew = IdKanji;
# Line 1324  int TextOutJP(PComVar cv, PCHAR B, int C Line 1325  int TextOutJP(PComVar cv, PCHAR B, int C
1325          return i;          return i;
1326  }  }
1327    
 int TextOutKR(PComVar cv, PCHAR B, int C) //HKS  
 {  
         int i, TempLen;  
         WORD K;  
         char TempStr[11];  
         int SendCodeNew;  
         BYTE d;  
         BOOL Full, KanjiFlagNew;  
   
         Full = FALSE;  
         i = 0;  
         while (! Full && (i < C)) {  
                 TempLen = 0;  
                 d = (BYTE)B[i];  
                 SendCodeNew = cv->SendCode;  
   
                 if (cv->SendKanjiFlag) {  
                         KanjiFlagNew = FALSE;  
                         SendCodeNew = IdKanji;  
   
                         K = (cv->SendKanjiFirst << 8) + d;  
   
                         // UTF-8への変換を行う。1〜3バイトまでの対応なので注意。  
                         if (cv->KanjiCodeSend == IdUTF8) {  
                                 OutputTextUTF8(K, TempStr, &TempLen, cv);  
   
                         } else {  
   
                                 if (cv->KanjiCodeSend == IdEUC) {  
                                         K = K;  
                                 }  
                                 else if (cv->KanjiCodeSend != IdSJIS) {  
                                         K = K;  
                                 }  
   
                                 if ((cv->SendCode==IdKatakana) &&  
                                     (cv->KanjiCodeSend==IdJIS) &&  
                                     (cv->JIS7KatakanaSend==1)) {  
                                         TempStr[TempLen] = SI;  
                                         TempLen++;  
                                 }  
   
                                 TempStr[TempLen] = HIBYTE(K);  
                                 TempStr[TempLen+1] = LOBYTE(K);  
                                 TempLen = TempLen + 2;  
                         }  
                 }  
                 else if (IsDBCSLeadByteEx(*cv->CodePage, d))  
                 {  
                         KanjiFlagNew = TRUE;  
                         cv->SendKanjiFirst = d;  
                         SendCodeNew = IdKanji;  
   
                         if ((cv->SendCode!=IdKanji) &&  
                             (cv->KanjiCodeSend==IdJIS)) {  
                                 TempStr[0] = 0x1B;  
                                 TempStr[1] = '$';  
                                 if (cv->KanjiIn == IdKanjiInB) {  
                                         TempStr[2] = 'B';  
                                 }  
                                 else {  
                                         TempStr[2] = '@';  
                                 }  
                                 TempLen = 3;  
                         }  
                         else {  
                                 TempLen = 0;  
                         }  
                 }  
                 else {  
                         KanjiFlagNew = FALSE;  
   
                         if ((cv->SendCode==IdKanji) &&  
                             (cv->KanjiCodeSend==IdJIS)) {  
                                 TempStr[0] = 0x1B;  
                                 TempStr[1] = '(';  
                                 switch (cv->KanjiOut) {  
                                         case IdKanjiOutJ:  
                                                 TempStr[2] = 'J';  
                                                 break;  
                                         case IdKanjiOutH:  
                                                 TempStr[2] = 'H';  
                                                 break;  
                                         default:  
                                                 TempStr[2] = 'B';  
                                 }  
                                 TempLen = 3;  
                         }  
                         else {  
                                 TempLen = 0;  
                         }  
   
                         if ((0xa0<d) && (d<0xe0)) {  
                                 SendCodeNew = IdKatakana;  
                                 if ((cv->SendCode!=IdKatakana) &&  
                                     (cv->KanjiCodeSend==IdJIS) &&  
                                     (cv->JIS7KatakanaSend==1)) {  
                                         TempStr[TempLen] = SO;  
                                         TempLen++;  
                                 }  
                         }  
                         else {  
                                 SendCodeNew = IdASCII;  
                                 if ((cv->SendCode==IdKatakana) &&  
                                     (cv->KanjiCodeSend==IdJIS) &&  
                                     (cv->JIS7KatakanaSend==1)) {  
                                         TempStr[TempLen] = SI;  
                                         TempLen++;  
                                 }  
                         }  
   
                         if (d==0x0d) {  
                                 TempStr[TempLen] = 0x0d;  
                                 TempLen++;  
                                 if (cv->CRSend==IdCRLF) {  
                                         TempStr[TempLen] = 0x0a;  
                                         TempLen++;  
                                 }  
                                 else if ((cv->CRSend==IdCR) &&  
                                           cv->TelFlag && ! cv->TelBinSend) {  
                                         TempStr[TempLen] = 0;  
                                         TempLen++;  
                                 }  
                         }  
                         else if ((d>=0xa1) && (d<=0xe0)) {  
                                 /* Katakana */  
                                 if (cv->KanjiCodeSend==IdEUC) {  
                                         TempStr[TempLen] = (char)0x8E;  
                                         TempLen++;  
                                 }  
                                 if ((cv->KanjiCodeSend==IdJIS) &&  
                                         (cv->JIS7KatakanaSend==1)) {  
                                         TempStr[TempLen] = d & 0x7f;  
                                 }  
                                 else {  
                                         TempStr[TempLen] = d;  
                                 }  
                                 TempLen++;  
   
                                 // 半角カナはUnicodeでは2バイトになる (2004.10.4 yutaka)  
                                 if (cv->KanjiCodeSend==IdUTF8) {  
                                         TempLen = 0;  
                                         K = d;  
                                         OutputTextUTF8(K, TempStr, &TempLen, cv);  
                                 }  
                         }  
                         else {  
                                 TempStr[TempLen] = d;  
                                 TempLen++;  
                                 if (cv->TelFlag && (d==0xff)) {  
                                         TempStr[TempLen] = (char)0xff;  
                                         TempLen++;  
                                 }  
                         }  
                 } // if (cv->SendKanjiFlag) else if ... else ... end  
   
                 if (TempLen == 0) {  
                         i++;  
                         cv->SendCode = SendCodeNew;  
                         cv->SendKanjiFlag = KanjiFlagNew;  
                 }  
                 else {  
                         Full = OutBuffSize-cv->OutBuffCount-TempLen < 0;  
                         if (! Full) {  
                                 i++;  
                                 cv->SendCode = SendCodeNew;  
                                 cv->SendKanjiFlag = KanjiFlagNew;  
                                 CommRawOut(cv,TempStr,TempLen);  
                         }  
                 }  
   
         } // end of "while {}"  
   
         return i;  
 }  
   
1328  int FAR PASCAL CommTextOut(PComVar cv, PCHAR B, int C)  int FAR PASCAL CommTextOut(PComVar cv, PCHAR B, int C)
1329  {  {
1330          int i, TempLen;          int i, TempLen;
# Line 1514  int FAR PASCAL CommTextOut(PComVar cv, P Line 1339  int FAR PASCAL CommTextOut(PComVar cv, P
1339          switch (cv->Language) {          switch (cv->Language) {
1340            case IdJapanese:            case IdJapanese:
1341            case IdUtf8:            case IdUtf8:
                 return TextOutJP(cv, B, C);  
                 break;  
1342            case IdKorean:            case IdKorean:
1343                  return TextOutKR(cv, B, C);                  return TextOutJP(cv, B, C);
1344                  break;                  break;
1345          }          }
1346    

Legend:
Removed from v.3409  
changed lines
  Added in v.3419

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26