| 1268 |
return i; |
return i; |
| 1269 |
} |
} |
| 1270 |
|
|
| 1271 |
|
int TextOutKR(PComVar cv, PCHAR B, int C) //HKS |
| 1272 |
|
{ |
| 1273 |
|
int i, TempLen; |
| 1274 |
|
WORD K; |
| 1275 |
|
char TempStr[11]; |
| 1276 |
|
int SendCodeNew; |
| 1277 |
|
BYTE d; |
| 1278 |
|
BOOL Full, KanjiFlagNew; |
| 1279 |
|
|
| 1280 |
|
Full = FALSE; |
| 1281 |
|
i = 0; |
| 1282 |
|
while (! Full && (i < C)) |
| 1283 |
|
{ |
| 1284 |
|
TempLen = 0; |
| 1285 |
|
d = (BYTE)B[i]; |
| 1286 |
|
SendCodeNew = cv->SendCode; |
| 1287 |
|
|
| 1288 |
|
if (cv->SendKanjiFlag) |
| 1289 |
|
{ |
| 1290 |
|
KanjiFlagNew = FALSE; |
| 1291 |
|
SendCodeNew = IdKanji; |
| 1292 |
|
|
| 1293 |
|
K = (cv->SendKanjiFirst << 8) + d; |
| 1294 |
|
|
| 1295 |
|
// UTF-8への変換を行う。1?3バイトまでの対応なので注意。 |
| 1296 |
|
if (cv->KanjiCodeSend == IdUTF8) { |
| 1297 |
|
OutputTextUTF8(K, TempStr, &TempLen, cv); |
| 1298 |
|
|
| 1299 |
|
} else { |
| 1300 |
|
|
| 1301 |
|
if (cv->KanjiCodeSend == IdEUC) K = K; |
| 1302 |
|
else if (cv->KanjiCodeSend != IdSJIS) K = K; |
| 1303 |
|
|
| 1304 |
|
if ((cv->SendCode==IdKatakana) && |
| 1305 |
|
(cv->KanjiCodeSend==IdJIS) && |
| 1306 |
|
(cv->JIS7KatakanaSend==1)) |
| 1307 |
|
{ |
| 1308 |
|
TempStr[TempLen] = SI; |
| 1309 |
|
TempLen++; |
| 1310 |
|
} |
| 1311 |
|
|
| 1312 |
|
TempStr[TempLen] = HIBYTE(K); |
| 1313 |
|
TempStr[TempLen+1] = LOBYTE(K); |
| 1314 |
|
TempLen = TempLen + 2; |
| 1315 |
|
} |
| 1316 |
|
} |
| 1317 |
|
else if (IsDBCSLeadByteEx(*cv->CodePage, d)) |
| 1318 |
|
{ |
| 1319 |
|
KanjiFlagNew = TRUE; |
| 1320 |
|
cv->SendKanjiFirst = d; |
| 1321 |
|
SendCodeNew = IdKanji; |
| 1322 |
|
|
| 1323 |
|
if ((cv->SendCode!=IdKanji) && |
| 1324 |
|
(cv->KanjiCodeSend==IdJIS)) |
| 1325 |
|
{ |
| 1326 |
|
TempStr[0] = 0x1B; |
| 1327 |
|
TempStr[1] = '$'; |
| 1328 |
|
if (cv->KanjiIn == IdKanjiInB) |
| 1329 |
|
TempStr[2] = 'B'; |
| 1330 |
|
else |
| 1331 |
|
TempStr[2] = '@'; |
| 1332 |
|
TempLen = 3; |
| 1333 |
|
} |
| 1334 |
|
else TempLen = 0; |
| 1335 |
|
} |
| 1336 |
|
else { |
| 1337 |
|
KanjiFlagNew = FALSE; |
| 1338 |
|
|
| 1339 |
|
if ((cv->SendCode==IdKanji) && |
| 1340 |
|
(cv->KanjiCodeSend==IdJIS)) |
| 1341 |
|
{ |
| 1342 |
|
TempStr[0] = 0x1B; |
| 1343 |
|
TempStr[1] = '('; |
| 1344 |
|
switch (cv->KanjiOut) { |
| 1345 |
|
case IdKanjiOutJ: TempStr[2] = 'J'; break; |
| 1346 |
|
case IdKanjiOutH: TempStr[2] = 'H'; break; |
| 1347 |
|
default: |
| 1348 |
|
TempStr[2] = 'B'; |
| 1349 |
|
} |
| 1350 |
|
TempLen = 3; |
| 1351 |
|
} |
| 1352 |
|
else TempLen = 0; |
| 1353 |
|
|
| 1354 |
|
if ((0xa0<d) && (d<0xe0)) |
| 1355 |
|
{ |
| 1356 |
|
SendCodeNew = IdKatakana; |
| 1357 |
|
if ((cv->SendCode!=IdKatakana) && |
| 1358 |
|
(cv->KanjiCodeSend==IdJIS) && |
| 1359 |
|
(cv->JIS7KatakanaSend==1)) |
| 1360 |
|
{ |
| 1361 |
|
TempStr[TempLen] = SO; |
| 1362 |
|
TempLen++; |
| 1363 |
|
} |
| 1364 |
|
} |
| 1365 |
|
else { |
| 1366 |
|
SendCodeNew = IdASCII; |
| 1367 |
|
if ((cv->SendCode==IdKatakana) && |
| 1368 |
|
(cv->KanjiCodeSend==IdJIS) && |
| 1369 |
|
(cv->JIS7KatakanaSend==1)) |
| 1370 |
|
{ |
| 1371 |
|
TempStr[TempLen] = SI; |
| 1372 |
|
TempLen++; |
| 1373 |
|
} |
| 1374 |
|
} |
| 1375 |
|
|
| 1376 |
|
if (d==0x0d) |
| 1377 |
|
{ |
| 1378 |
|
TempStr[TempLen] = 0x0d; |
| 1379 |
|
TempLen++; |
| 1380 |
|
if (cv->CRSend==IdCRLF) |
| 1381 |
|
{ |
| 1382 |
|
TempStr[TempLen] = 0x0a; |
| 1383 |
|
TempLen++; |
| 1384 |
|
} |
| 1385 |
|
else if ((cv->CRSend==IdCR) && |
| 1386 |
|
cv->TelFlag && ! cv->TelBinSend) |
| 1387 |
|
{ |
| 1388 |
|
TempStr[TempLen] = 0; |
| 1389 |
|
TempLen++; |
| 1390 |
|
} |
| 1391 |
|
} |
| 1392 |
|
else if ((d>=0xa1) && (d<=0xe0)) |
| 1393 |
|
{ |
| 1394 |
|
/* Katakana */ |
| 1395 |
|
if (cv->KanjiCodeSend==IdEUC) |
| 1396 |
|
{ |
| 1397 |
|
TempStr[TempLen] = (char)0x8E; |
| 1398 |
|
TempLen++; |
| 1399 |
|
} |
| 1400 |
|
if ((cv->KanjiCodeSend==IdJIS) && |
| 1401 |
|
(cv->JIS7KatakanaSend==1)) |
| 1402 |
|
TempStr[TempLen] = d & 0x7f; |
| 1403 |
|
else |
| 1404 |
|
TempStr[TempLen] = d; |
| 1405 |
|
TempLen++; |
| 1406 |
|
|
| 1407 |
|
// 半角カナはUnicodeでは2バイトになる (2004.10.4 yutaka) |
| 1408 |
|
if (cv->KanjiCodeSend==IdUTF8) { |
| 1409 |
|
TempLen = 0; |
| 1410 |
|
K = d; |
| 1411 |
|
OutputTextUTF8(K, TempStr, &TempLen, cv); |
| 1412 |
|
} |
| 1413 |
|
} |
| 1414 |
|
else { |
| 1415 |
|
TempStr[TempLen] = d; |
| 1416 |
|
TempLen++; |
| 1417 |
|
if (cv->TelFlag && (d==0xff)) |
| 1418 |
|
{ |
| 1419 |
|
TempStr[TempLen] = (char)0xff; |
| 1420 |
|
TempLen++; |
| 1421 |
|
} |
| 1422 |
|
} |
| 1423 |
|
} // if (cv->SendKanjiFlag) else if ... else ... end |
| 1424 |
|
|
| 1425 |
|
if (TempLen == 0) |
| 1426 |
|
{ |
| 1427 |
|
i++; |
| 1428 |
|
cv->SendCode = SendCodeNew; |
| 1429 |
|
cv->SendKanjiFlag = KanjiFlagNew; |
| 1430 |
|
} |
| 1431 |
|
else { |
| 1432 |
|
Full = OutBuffSize-cv->OutBuffCount-TempLen < 0; |
| 1433 |
|
if (! Full) |
| 1434 |
|
{ |
| 1435 |
|
i++; |
| 1436 |
|
cv->SendCode = SendCodeNew; |
| 1437 |
|
cv->SendKanjiFlag = KanjiFlagNew; |
| 1438 |
|
CommRawOut(cv,TempStr,TempLen); |
| 1439 |
|
} |
| 1440 |
|
} |
| 1441 |
|
|
| 1442 |
|
} // end of "while {}" |
| 1443 |
|
|
| 1444 |
|
return i; |
| 1445 |
|
} |
| 1446 |
|
|
| 1447 |
int FAR PASCAL CommTextOut(PComVar cv, PCHAR B, int C) |
int FAR PASCAL CommTextOut(PComVar cv, PCHAR B, int C) |
| 1448 |
{ |
{ |
| 1449 |
int i, TempLen; |
int i, TempLen; |
| 1456 |
|
|
| 1457 |
if (cv->Language==IdJapanese) |
if (cv->Language==IdJapanese) |
| 1458 |
return TextOutJP(cv,B,C); |
return TextOutJP(cv,B,C); |
| 1459 |
|
if (cv->Language==IdKorean) // HKS |
| 1460 |
|
return TextOutKR(cv,B,C); |
| 1461 |
|
|
| 1462 |
|
|
| 1463 |
Full = FALSE; |
Full = FALSE; |
| 1464 |
i = 0; |
i = 0; |