| 25 |
|
|
| 26 |
#include "vtterm.h" |
#include "vtterm.h" |
| 27 |
|
|
| 28 |
|
#define MAPSIZE(x) (sizeof(x)/sizeof((x)[0])) |
| 29 |
|
|
| 30 |
/* Parsing modes */ |
/* Parsing modes */ |
| 31 |
#define ModeFirst 0 |
#define ModeFirst 0 |
| 32 |
#define ModeESC 1 |
#define ModeESC 1 |
| 3086 |
wchar[1] = (code >> 8) & 0xff; |
wchar[1] = (code >> 8) & 0xff; |
| 3087 |
|
|
| 3088 |
if (ts.UnicodeDecSpMapping) { |
if (ts.UnicodeDecSpMapping) { |
| 3089 |
cset = ConvertUnicode(code, mapUnicodeSymbolToDecSp, sizeof(mapUnicodeSymbolToDecSp)/sizeof(mapUnicodeSymbolToDecSp[0])); |
cset = ConvertUnicode(code, mapUnicodeSymbolToDecSp, MAPSIZE(mapUnicodeSymbolToDecSp)); |
| 3090 |
} |
} |
| 3091 |
if (((cset >> 8) & ts.UnicodeDecSpMapping) != 0) { |
if (((cset >> 8) & ts.UnicodeDecSpMapping) != 0) { |
| 3092 |
PutDecSp(cset & 0xff); |
PutDecSp(cset & 0xff); |
| 3098 |
case -1: |
case -1: |
| 3099 |
if (_stricmp(ts.Locale, DEFAULT_LOCALE) == 0) { |
if (_stricmp(ts.Locale, DEFAULT_LOCALE) == 0) { |
| 3100 |
// U+301Cなどは変換できない。Unicode -> Shift_JISへ変換してみる。 |
// U+301Cなどは変換できない。Unicode -> Shift_JISへ変換してみる。 |
| 3101 |
cset = ConvertUnicode(code, mapUnicodeToSJIS, sizeof(mapUnicodeToSJIS)/sizeof(mapUnicodeToSJIS[0])); |
cset = ConvertUnicode(code, mapUnicodeToSJIS, MAPSIZE(mapUnicodeToSJIS)); |
| 3102 |
if (cset != 0) { |
if (cset != 0) { |
| 3103 |
Kanji = cset & 0xff00; |
Kanji = cset & 0xff00; |
| 3104 |
PutKanji(cset & 0x00ff); |
PutKanji(cset & 0x00ff); |
| 3218 |
if (hfsplus_mode == 1) { |
if (hfsplus_mode == 1) { |
| 3219 |
if (maybe_hfsplus == 0) { |
if (maybe_hfsplus == 0) { |
| 3220 |
if ((first_code_index = GetIndexOfHFSPlusFirstCode( |
if ((first_code_index = GetIndexOfHFSPlusFirstCode( |
| 3221 |
code, mapHFSPlusUnicode, sizeof(mapHFSPlusUnicode)/sizeof(mapHFSPlusUnicode[0]) |
code, mapHFSPlusUnicode, MAPSIZE(mapHFSPlusUnicode) |
| 3222 |
)) != -1) { |
)) != -1) { |
| 3223 |
maybe_hfsplus = 1; |
maybe_hfsplus = 1; |
| 3224 |
first_code = code; |
first_code = code; |
| 3227 |
} |
} |
| 3228 |
} else { |
} else { |
| 3229 |
maybe_hfsplus = 0; |
maybe_hfsplus = 0; |
| 3230 |
cset = GetIllegalUnicode(first_code_index, first_code, code, mapHFSPlusUnicode, sizeof(mapHFSPlusUnicode)/sizeof(mapHFSPlusUnicode[0])); |
cset = GetIllegalUnicode(first_code_index, first_code, code, mapHFSPlusUnicode, MAPSIZE(mapHFSPlusUnicode)); |
| 3231 |
if (cset != 0) { // success |
if (cset != 0) { // success |
| 3232 |
code = cset; |
code = cset; |
| 3233 |
|
|
| 3234 |
} else { // error |
} else { // error |
| 3235 |
// 2つめの文字が半濁点の1文字目に相当する場合は、再度検索を続ける。(2005.10.15 yutaka) |
// 2つめの文字が半濁点の1文字目に相当する場合は、再度検索を続ける。(2005.10.15 yutaka) |
| 3236 |
if ((first_code_index = GetIndexOfHFSPlusFirstCode( |
if ((first_code_index = GetIndexOfHFSPlusFirstCode( |
| 3237 |
code, mapHFSPlusUnicode, sizeof(mapHFSPlusUnicode)/sizeof(mapHFSPlusUnicode[0]) |
code, mapHFSPlusUnicode, MAPSIZE(mapHFSPlusUnicode) |
| 3238 |
)) != -1) { |
)) != -1) { |
| 3239 |
|
|
| 3240 |
// 1つめの文字はそのまま出力する |
// 1つめの文字はそのまま出力する |