| 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); |
| 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; |
| 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; |
| 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 |
|
|