--- rxvt-unicode/src/rxvt.h 2006/02/02 18:04:46 1.254 +++ rxvt-unicode/src/rxvt.h 2007/06/18 12:53:26 1.274 @@ -10,15 +10,16 @@ #endif #if ENABLE_PERL -# define ENABLE_FRILLS 1 +# define ENABLE_FRILLS 1 # define ENABLE_COMBINING 1 #endif #if ENABLE_FRILLS -# define ENABLE_XEMBED 1 -# define ENABLE_EWMH 1 +# define ENABLE_XEMBED 1 +# define ENABLE_EWMH 1 # define ENABLE_XIM_ONTHESPOT 1 -# define CURSOR_BLINK 1 +# define CURSOR_BLINK 1 +# define OPTION_HC 1 #else # define ENABLE_MINIMAL 1 #endif @@ -71,21 +72,14 @@ typedef char *XPointer; #endif -#ifdef HAVE_TERMIOS_H -# include +#include typedef struct termios ttymode_t; -#else -# include -typedef struct { - struct sgttyb sg; - struct tchars tc; - struct ltchars lc; - int line; - int local; -} ttymode_t; -#endif -#ifdef XPM_BACKGROUND +#ifdef HAVE_AFTERIMAGE +# include +#undef min +#undef max +#elif defined(XPM_BACKGROUND) # ifdef XPM_INC_X11 # include # else @@ -189,6 +183,7 @@ #ifdef XPM_BACKGROUND typedef struct { short w, h, x, y; + bool auto_resize ; Pixmap pixmap; } bgPixmap_t; #endif @@ -521,6 +516,8 @@ */ enum colour_list { + Color_none = -2, + Color_transparent = -1, Color_fg = 0, Color_bg, minCOLOR, /* 2 */ @@ -683,10 +680,9 @@ */ #define dLocal(type,name) type const name = this->name -// for speed reasons, we assume that all latin1 characters -// are single-width (the first unicode combining character -// is actually 0x300, but ascii is what matters most). -#define WCWIDTH(c) ((c) & ~0xff ? wcwidth (c) : 1) +// for speed reasons, we assume that all codepoints 32 to 126 are +// single-width. +#define WCWIDTH(c) (IN_RANGE_INC (c, 0x20, 0x7e) ? 1 : wcwidth (c)) /* convert pixel dimensions to row/column values. Everything as int32_t */ #define Pixel2Col(x) Pixel2Width((int32_t)(x)) @@ -698,11 +694,6 @@ #define Width2Pixel(n) ((int32_t)(n) * (int32_t)fwidth) #define Height2Pixel(n) ((int32_t)(n) * (int32_t)fheight) -#define OPTION(opt) (options & (opt)) -#define DEFAULT_OPTIONS (Opt_scrollBar | Opt_scrollTtyOutput \ - | Opt_jumpScroll | Opt_secondaryScreen \ - | Opt_pastableTabs | Opt_intensityStyles) - // for m >= -n, ensure remainder lies between 0..n-1 #define MOD(m,n) (((m) + (n)) % (n)) @@ -775,8 +766,8 @@ # define XPMClearArea(a, b, c, d, e, f, g) #endif -typedef callback1 log_callback; -typedef callback1 getfd_callback; +typedef callback log_callback; +typedef callback getfd_callback; #define SET_LOCALE(locale) rxvt_set_locale (locale) extern bool rxvt_set_locale (const char *locale) NOTHROW; @@ -788,6 +779,8 @@ #define LINE_LONGER 0x0001 // line is continued on the next row #define LINE_FILTERED 0x0002 // line has been filtered #define LINE_COMPRESSED 0x0004 // line has been compressed (NYI) +#define LINE_FILTER 0x0008 // line needs to be filtered before display (NYI) +#define LINE_BIDI 0x0010 // line needs bidi (NYI) struct line_t { text_t *t; // terminal the text @@ -910,8 +903,6 @@ unsigned char want_refresh:1, #ifdef TRANSPARENT want_full_refresh:1, /* awaiting full screen refresh */ -#endif -#if defined(XPM_BACKGROUND) || defined(TRANSPARENT) am_transparent:1, /* is a transparent term */ am_pixmap_trans:1, /* transparency w/known root pixmap */ #endif @@ -964,7 +955,6 @@ mouse_slip_wheel_speed, #endif refresh_count, - refresh_limit, last_bot, /* scrollbar last bottom position */ last_top, /* scrollbar last top position */ last_state, /* scrollbar last state */ @@ -1032,7 +1022,13 @@ row_col_t oldcursor; #ifdef XPM_BACKGROUND bgPixmap_t bgPixmap; +#ifdef HAVE_AFTERIMAGE + ASImageManager *asimman; + ASImage *original_asim; + struct { unsigned int width, height; } xpmAttr; /* all we need is width/height */ +#else XpmAttributes xpmAttr; /* originally loaded pixmap and its scaling */ +#endif #endif #if ENABLE_OVERLAY @@ -1100,10 +1096,15 @@ XSelectInput (dpy, vt, vt_emask | vt_emask_perl | vt_emask_xim); } -#if TRANSPARENT +#if TRANSPARENT || ENABLE_PERL void rootwin_cb (XEvent &xev); xevent_watcher rootwin_ev; #endif +#if TRANSPARENT + int check_our_parents (); + void check_our_parents_cb (time_watcher &w); + time_watcher check_our_parents_ev; +#endif void x_cb (XEvent &xev); void flush (); @@ -1172,8 +1173,8 @@ void make_current () const // make this the "currently active" urxvt instance { SET_R (this); - rxvt_set_locale (locale); set_environ (envv); + rxvt_set_locale (locale); } void init_secondary (); @@ -1208,13 +1209,14 @@ bool IMisRunning (); void IMSendSpot (); bool IM_get_IC (const char *modifiers); - void IMSetStatusPosition (); + void IMSetPosition (); #endif void resize_scrollbar (); // command.C - void lookup_key (XKeyEvent &ev); + void key_press (XKeyEvent &ev); + void key_release (XKeyEvent &ev); unsigned int cmd_write (const char *str, unsigned int count); wchar_t next_char () NOTHROW; @@ -1228,7 +1230,7 @@ void button_release (XButtonEvent &ev); void focus_in (); void focus_out (); - int check_our_parents (); + void update_fade_color (unsigned int idx); #ifdef PRINTPIPE FILE *popen_printer (); int pclose_printer (FILE *stream); @@ -1299,7 +1301,7 @@ #ifndef NO_BRIGHTCOLOR if (r & RS_Bold # if ENABLE_STYLES - && OPTION (Opt_intensityStyles) + && option (Opt_intensityStyles) # endif && IN_RANGE_INC (base, minCOLOR, minBrightCOLOR)) base += minBrightCOLOR - minCOLOR; @@ -1313,7 +1315,7 @@ #ifndef NO_BRIGHTCOLOR if (r & RS_Blink # if ENABLE_STYLES - && OPTION (Opt_intensityStyles) + && option (Opt_intensityStyles) # endif && IN_RANGE_INC (base, minCOLOR, minBrightCOLOR)) base += minBrightCOLOR - minCOLOR; @@ -1321,17 +1323,17 @@ return base; } - bool option (uint32_t opt) const NOTHROW + bool option (uint8_t opt) const NOTHROW { - return OPTION (opt); + return options[opt >> 3] & (1 << (opt & 7)); } - void set_option (uint32_t opt, bool set) NOTHROW + void set_option (uint8_t opt, bool set = true) NOTHROW { if (set) - options |= opt; + options[opt >> 3] |= (1 << (opt & 7)); else - options &= ~opt; + options[opt >> 3] &= ~(1 << (opt & 7)); } void scr_blank_line (line_t &l, unsigned int col, unsigned int width, rend_t efs) const NOTHROW;