#define NATTR 6
#define ATTR_DI 0
#define ATTR_US 1
#define ATTR_BD 2
#define ATTR_RV 3
#define ATTR_SO 4
#define ATTR_BL 5
#define A_DI (1<<ATTR_DI)
#define A_US (1<<ATTR_US)
#define A_BD (1<<ATTR_BD)
#define A_RV (1<<ATTR_RV)
#define A_SO (1<<ATTR_SO)
#define A_BL (1<<ATTR_BL)
#define A_MAX (1<<(NATTR-1))
#define ATYP_M (1<<0)
#define ATYP_S (1<<1)
#define ATYP_U (1<<2)
#ifdef COLORS16
# define ATTR_BFG 6
# define ATTR_BBG 7
# define A_BFG (1<<ATTR_BFG)
# define A_BBG (1<<ATTR_BBG)
#endif
enum state_t
{
LIT,
ESC,
ASTR,
STRESC,
CSI,
PRIN,
PRINESC,
PRINCSI,
PRIN4
};
enum string_t
{
NONE,
DCS,
OSC,
APC,
PM,
AKA,
GM,
STATUS
};
enum move_t {
M_NONE,
M_UP,
M_CUP,
M_DO,
M_CDO,
M_LE,
M_CLE,
M_RI,
M_CRI,
M_RW,
M_CR
};
#define EXPENSIVE 1000
#define G0 0
#define G1 1
#define G2 2
#define G3 3
#define ASCII 0
#ifdef TOPSTAT
#define STATLINE (0)
#else
#define STATLINE (D_height-1)
#endif
#ifdef ENCODINGS
#define KANJI ('B' & 037)
#define KANJI0212 ('D' & 037)
#define KANA 'I'
#define EUC_JP 1
#define SJIS 2
#define EUC_KR 3
#define EUC_CN 4
#define BIG5 5
#define KOI8R 6
#define CP1251 7
#define GBK 20
#define EUC EUC_JP
#endif
#ifdef UTF8
#undef UTF8
#define UTF8 8
#endif
#ifdef UTF8
# define UCS_REPL 0xfffd
# define UCS_REPL_DW 0xff1f
# define UCS_HIDDEN 0xffff
#endif
#ifdef DW_CHARS
# define is_dw_font(f) ((f) && ((f) & 0x60) == 0)
# ifdef UTF8
# define dw_left(ml, x, enc) ((enc == UTF8) ? \
(unsigned char)(ml)->font[(x) + 1] == 0xff && (unsigned char)(ml)->image[(x) + 1] == 0xff : \
((unsigned char)(ml)->font[x] & 0x1f) != 0 && ((unsigned char)(ml)->font[x] & 0xe0) == 0 \
)
# define dw_right(ml, x, enc) ((enc == UTF8) ? \
(unsigned char)(ml)->font[x] == 0xff && (unsigned char)(ml)->image[x] == 0xff : \
((unsigned char)(ml)->font[x] & 0xe0) == 0x80 \
)
# else
# define dw_left(ml, x, enc) ( \
((unsigned char)(ml)->font[x] & 0x1f) != 0 && ((unsigned char)(ml)->font[x] & 0xe0) == 0 \
)
# define dw_right(ml, x, enc) ( \
((unsigned char)(ml)->font[x] & 0xe0) == 0x80 \
)
# endif
#else
# define dw_left(ml, x, enc) 0
# define dw_right(ml, x, enc) 0
#endif