/* See LICENSE for license details. */

enum win_mode {
	MODE_VISIBLE     = 1 << 0,
	MODE_FOCUSED     = 1 << 1,
	MODE_APPKEYPAD   = 1 << 2,
	MODE_MOUSEBTN    = 1 << 3,
	MODE_MOUSEMOTION = 1 << 4,
	MODE_REVERSE     = 1 << 5,
	MODE_KBDLOCK     = 1 << 6,
	MODE_HIDE        = 1 << 7,
	MODE_APPCURSOR   = 1 << 8,
	MODE_MOUSESGR    = 1 << 9,
	MODE_8BIT        = 1 << 10,
	MODE_BLINK       = 1 << 11,
	MODE_FBLINK      = 1 << 12,
	MODE_FOCUS       = 1 << 13,
	MODE_MOUSEX10    = 1 << 14,
	MODE_MOUSEMANY   = 1 << 15,
	MODE_BRCKTPASTE  = 1 << 16,
	MODE_NUMLOCK     = 1 << 17,
	MODE_MOUSE       = MODE_MOUSEBTN|MODE_MOUSEMOTION|MODE_MOUSEX10\
	                  |MODE_MOUSEMANY,
	#if VIM_BROWSE_PATCH
	MODE_NORMAL      = 1 << 18,
	#endif // VIM_BROWSE_PATCH
	#if KEYBOARDSELECT_PATCH
	MODE_KBDSELECT   = 1 << 19,
	#endif // KEYBOARDSELECT_PATCH
};

void xbell(void);
void xclipcopy(void);
#if LIGATURES_PATCH
void xdrawcursor(int, int, Glyph, int, int, Glyph, Line, int);
#else
void xdrawcursor(int, int, Glyph, int, int, Glyph);
#endif // LIGATURES_PATCH
void xdrawline(Line, int, int, int);
void xfinishdraw(void);
void xloadcols(void);
int xsetcolorname(int, const char *);
void xseticontitle(char *);
#if CSI_22_23_PATCH
void xfreetitlestack(void);
void xsettitle(char *, int);
void xpushtitle(void);
#else
void xsettitle(char *);
#endif // CSI_22_23_PATCH
int xsetcursor(int);
void xsetmode(int, unsigned int);
void xsetpointermotion(int);
void xsetsel(char *);
int xstartdraw(void);
void xximspot(int, int);
void xclearwin(void);