00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #define NATTR 6
00026
00027 #define ATTR_DI 0
00028 #define ATTR_US 1
00029 #define ATTR_BD 2
00030 #define ATTR_RV 3
00031 #define ATTR_SO 4
00032 #define ATTR_BL 5
00033
00034 #define A_DI (1<<ATTR_DI)
00035 #define A_US (1<<ATTR_US)
00036 #define A_BD (1<<ATTR_BD)
00037 #define A_RV (1<<ATTR_RV)
00038 #define A_SO (1<<ATTR_SO)
00039 #define A_BL (1<<ATTR_BL)
00040 #define A_MAX (1<<(NATTR-1))
00041
00042 #define ATYP_M (1<<0)
00043 #define ATYP_S (1<<1)
00044 #define ATYP_U (1<<2)
00045
00046 #ifdef COLORS16
00047
00048 # define ATTR_BFG 6
00049 # define ATTR_BBG 7
00050 # define A_BFG (1<<ATTR_BFG)
00051 # define A_BBG (1<<ATTR_BBG)
00052 #endif
00053
00054
00055
00056
00057
00058 enum state_t
00059 {
00060 LIT,
00061 ESC,
00062 ASTR,
00063 STRESC,
00064 CSI,
00065 PRIN,
00066 PRINESC,
00067 PRINCSI,
00068 PRIN4
00069 };
00070
00071
00072 enum string_t
00073 {
00074 NONE,
00075 DCS,
00076 OSC,
00077 APC,
00078
00079 PM,
00080 AKA,
00081 GM,
00082 STATUS
00083 };
00084
00085
00086
00087
00088 enum move_t {
00089 M_NONE,
00090 M_UP,
00091 M_CUP,
00092 M_DO,
00093 M_CDO,
00094 M_LE,
00095 M_CLE,
00096 M_RI,
00097 M_CRI,
00098 M_RW,
00099 M_CR
00100 };
00101
00102 #define EXPENSIVE 1000
00103
00104 #define G0 0
00105 #define G1 1
00106 #define G2 2
00107 #define G3 3
00108
00109 #define ASCII 0
00110
00111 #ifdef TOPSTAT
00112 #define STATLINE (0)
00113 #else
00114 #define STATLINE (D_height-1)
00115 #endif
00116
00117 #ifdef ENCODINGS
00118
00119 #define KANJI ('B' & 037)
00120 #define KANJI0212 ('D' & 037)
00121 #define KANA 'I'
00122
00123 #define EUC_JP 1
00124 #define SJIS 2
00125 #define EUC_KR 3
00126 #define EUC_CN 4
00127 #define BIG5 5
00128 #define KOI8R 6
00129 #define CP1251 7
00130 #define GBK 20
00131
00132 #define EUC EUC_JP
00133
00134 #endif
00135
00136 #ifdef UTF8
00137 #undef UTF8
00138 #define UTF8 8
00139 #endif
00140
00141 #ifdef UTF8
00142 # define UCS_REPL 0xfffd
00143 # define UCS_REPL_DW 0xff1f
00144 # define UCS_HIDDEN 0xffff
00145 #endif
00146
00147 #ifdef DW_CHARS
00148 # define is_dw_font(f) ((f) && ((f) & 0x60) == 0)
00149
00150 # ifdef UTF8
00151 # define dw_left(ml, x, enc) ((enc == UTF8) ? \
00152 (unsigned char)(ml)->font[(x) + 1] == 0xff && (unsigned char)(ml)->image[(x) + 1] == 0xff : \
00153 ((unsigned char)(ml)->font[x] & 0x1f) != 0 && ((unsigned char)(ml)->font[x] & 0xe0) == 0 \
00154 )
00155 # define dw_right(ml, x, enc) ((enc == UTF8) ? \
00156 (unsigned char)(ml)->font[x] == 0xff && (unsigned char)(ml)->image[x] == 0xff : \
00157 ((unsigned char)(ml)->font[x] & 0xe0) == 0x80 \
00158 )
00159 # else
00160 # define dw_left(ml, x, enc) ( \
00161 ((unsigned char)(ml)->font[x] & 0x1f) != 0 && ((unsigned char)(ml)->font[x] & 0xe0) == 0 \
00162 )
00163 # define dw_right(ml, x, enc) ( \
00164 ((unsigned char)(ml)->font[x] & 0xe0) == 0x80 \
00165 )
00166 # endif
00167 #else
00168 # define dw_left(ml, x, enc) 0
00169 # define dw_right(ml, x, enc) 0
00170 #endif