1 /* 2 * $LynxId: HTCJK.h,v 1.19 2012/08/15 23:11:03 tom Exp $ 3 * 4 * CJK character converter HTCJK.h 5 * ======================= 6 * 7 * Added 11-Jun-96 by FM, based on jiscode.h for 8 * Yutaka Sato's (ysato@etl.go.jp) SJIS.c, and 9 * Takuya ASADA's (asada@three-a.co.jp) CJK patches. 10 * (see SGML.c). 11 * 12 */ 13 14 #ifndef HTCJK_H 15 #define HTCJK_H 16 17 #ifndef HTUTILS_H 18 #include <HTUtils.h> 19 #endif 20 21 #ifdef __cplusplus 22 extern "C" { 23 #endif 24 /* 25 * STATUS CHANGE CODES 26 */ 27 #define TO_2BCODE '$' 28 #define TO_1BCODE '(' 29 #define TO_KANA '\016' 30 #define TO_KANAOUT '\017' 31 #define TO_KANJI "\033$B" 32 #define TO_HANJI "\033$A" 33 #define TO_HANGUL "\033$(C" 34 #define TO_ASCII "\033(B" 35 #define IS_SJIS_LO(lo) ((0x40<=lo)&&(lo!=0x7F)&&(lo<=0xFC)) 36 #define IS_SJIS_HI1(hi) ((0x81 <= (hi)) && ((hi) <= 0x9F)) /* 1st lev. */ 37 #define IS_SJIS_HI2(hi) ((0xE0 <= (hi)) && ((hi) <= 0xEF)) /* 2nd lev. */ 38 #define IS_SJIS(hi,lo,in_sjis) (!IS_SJIS_LO(lo)?0:IS_SJIS_HI1(hi)?(in_sjis=1):in_sjis&&IS_SJIS_HI2(hi)) 39 #define IS_SJIS_2BYTE(hi,lo) (IS_SJIS_LO(lo)&&(IS_SJIS_HI1(hi)||IS_SJIS_HI2(hi))) 40 #define IS_SJIS_X0201KANA(lo) ((0xA1<=lo)&&(lo<=0xDF)) 41 #define IS_EUC_LOX(lo) ((0xA1<=lo)&&(lo<=0xFE)) /* extended */ 42 #define IS_EUC_HI(hi) ((0xA1<=hi)&&(hi<=0xFE)) 43 #define IS_EUC_X0201KANA(hi,lo) ((hi==0x8E)&&(0xA1<=lo)&&(lo<=0xDF)) 44 #define IS_EUC(hi,lo) ((IS_EUC_HI(hi) && IS_EUC_LOX(lo))||IS_EUC_X0201KANA(hi,lo)) 45 #define IS_JAPANESE_2BYTE(hi,lo) (IS_SJIS_2BYTE(hi,lo) || IS_EUC(hi,lo)) 46 #define IS_BIG5_LOS(lo) ((0x40<=lo)&&(lo<=0x7E)) /* standard */ 47 #define IS_BIG5_LOX(lo) ((0xA1<=lo)&&(lo<=0xFE)) /* extended */ 48 #define IS_BIG5_HI(hi) ((0xA1<=hi)&&(hi<=0xFE)) 49 #define IS_BIG5(hi,lo) (IS_BIG5_HI(hi) && (IS_BIG5_LOS(lo) || IS_BIG5_LOX(lo))) 50 typedef enum { 51 NOKANJI = 0, EUC, SJIS, JIS 52 } HTkcode; 53 typedef enum { 54 NOCJK = 0, JAPANESE, CHINESE, KOREAN, TAIPEI 55 } HTCJKlang; 56 57 extern HTCJKlang HTCJK; 58 59 /* 60 * Function prototypes. 61 */ 62 extern void JISx0201TO0208_EUC(unsigned IHI, 63 unsigned ILO, 64 unsigned char *OHI, 65 unsigned char *OLO); 66 67 extern unsigned char *SJIS_TO_JIS1(unsigned HI, 68 unsigned LO, 69 unsigned char *JCODE); 70 71 extern unsigned char *JIS_TO_SJIS1(unsigned HI, 72 unsigned LO, 73 unsigned char *SJCODE); 74 75 extern unsigned char *EUC_TO_SJIS1(unsigned HI, 76 unsigned LO, 77 register unsigned char *SJCODE); 78 79 extern void JISx0201TO0208_SJIS(unsigned I, 80 unsigned char *OHI, 81 unsigned char *OLO); 82 83 extern unsigned char *SJIS_TO_EUC1(unsigned HI, 84 unsigned LO, 85 unsigned char *EUCp); 86 87 extern unsigned char *SJIS_TO_EUC(unsigned char *src, 88 unsigned char *dst); 89 90 extern unsigned char *EUC_TO_SJIS(unsigned char *src, 91 unsigned char *dst); 92 93 extern unsigned char *EUC_TO_JIS(unsigned char *src, 94 unsigned char *dst, 95 const char *toK, 96 const char *toA); 97 98 extern unsigned char *TO_EUC(const unsigned char *jis, 99 unsigned char *euc); 100 101 extern void TO_SJIS(const unsigned char *any, 102 unsigned char *sjis); 103 104 extern void TO_JIS(const unsigned char *any, 105 unsigned char *jis); 106 107 extern char *str_kcode(HTkcode code); 108 109 #ifdef __cplusplus 110 } 111 #endif 112 #endif /* HTCJK_H */ 113