# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

st.h (3399B)

          1 /* See LICENSE for license details. */
          2
          3 #include <stdint.h>
          4 #include <sys/types.h>
          5
          6 /* macros */
          7 #define MIN(a, b)		((a) < (b) ? (a) : (b))
          8 #define MAX(a, b)		((a) < (b) ? (b) : (a))
          9 #define LEN(a)			(sizeof(a) / sizeof(a)[0])
         10 #define BETWEEN(x, a, b)	((a) <= (x) && (x) <= (b))
         11 #define DIVCEIL(n, d)		(((n) + ((d) - 1)) / (d))
         12 #define DEFAULT(a, b)		(a) = (a) ? (a) : (b)
         13 #define LIMIT(x, a, b)		(x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)
         14 #define ATTRCMP(a, b)		((a).mode != (b).mode || (a).fg != (b).fg || \
         15 				(a).bg != (b).bg)
         16 #define TIMEDIFF(t1, t2)	((t1.tv_sec-t2.tv_sec)*1000 + \
         17 				(t1.tv_nsec-t2.tv_nsec)/1E6)
         18 #define MODBIT(x, set, bit)	((set) ? ((x) |= (bit)) : ((x) &= ~(bit)))
         19
         20 #define TRUECOLOR(r,g,b)	(1 << 24 | (r) << 16 | (g) << 8 | (b))
         21 #define IS_TRUECOL(x)		(1 << 24 & (x))
         22
         23 enum glyph_attribute {
         24 	ATTR_NULL       = 0,
         25 	ATTR_BOLD       = 1 << 0,
         26 	ATTR_FAINT      = 1 << 1,
         27 	ATTR_ITALIC     = 1 << 2,
         28 	ATTR_UNDERLINE  = 1 << 3,
         29 	ATTR_BLINK      = 1 << 4,
         30 	ATTR_REVERSE    = 1 << 5,
         31 	ATTR_INVISIBLE  = 1 << 6,
         32 	ATTR_STRUCK     = 1 << 7,
         33 	ATTR_WRAP       = 1 << 8,
         34 	ATTR_WIDE       = 1 << 9,
         35 	ATTR_WDUMMY     = 1 << 10,
         36 	ATTR_BOXDRAW    = 1 << 11,
         37 	ATTR_BOLD_FAINT = ATTR_BOLD | ATTR_FAINT,
         38 };
         39
         40 enum selection_mode {
         41 	SEL_IDLE = 0,
         42 	SEL_EMPTY = 1,
         43 	SEL_READY = 2
         44 };
         45
         46 enum selection_type {
         47 	SEL_REGULAR = 1,
         48 	SEL_RECTANGULAR = 2
         49 };
         50
         51 enum selection_snap {
         52 	SNAP_WORD = 1,
         53 	SNAP_LINE = 2
         54 };
         55
         56 typedef unsigned char uchar;
         57 typedef unsigned int uint;
         58 typedef unsigned long ulong;
         59 typedef unsigned short ushort;
         60
         61 typedef uint_least32_t Rune;
         62
         63 #define Glyph Glyph_
         64 typedef struct {
         65 	Rune u;           /* character code */
         66 	ushort mode;      /* attribute flags */
         67 	uint32_t fg;      /* foreground  */
         68 	uint32_t bg;      /* background  */
         69 } Glyph;
         70
         71 typedef Glyph *Line;
         72
         73 typedef union {
         74 	int i;
         75 	uint ui;
         76 	float f;
         77 	const void *v;
         78 	const char *s;
         79 } Arg;
         80
         81 void die(const char *, ...);
         82 void redraw(void);
         83 void draw(void);
         84
         85 void kscrolldown(const Arg *);
         86 void kscrollup(const Arg *);
         87 void opencopied(const Arg *);
         88 void printscreen(const Arg *);
         89 void printsel(const Arg *);
         90 void sendbreak(const Arg *);
         91 void toggleprinter(const Arg *);
         92 void copyurl(const Arg *);
         93
         94 int tattrset(int);
         95 void tnew(int, int);
         96 void tresize(int, int);
         97 void tsetdirtattr(int);
         98 void ttyhangup(void);
         99 int ttynew(const char *, char *, const char *, char **);
        100 size_t ttyread(void);
        101 void ttyresize(int, int);
        102 void ttywrite(const char *, size_t, int);
        103
        104 void resettitle(void);
        105
        106 void selclear(void);
        107 void selinit(void);
        108 void selstart(int, int, int);
        109 void selextend(int, int, int, int);
        110 int selected(int, int);
        111 char *getsel(void);
        112
        113 size_t utf8encode(Rune, char *);
        114
        115 void *xmalloc(size_t);
        116 void *xrealloc(void *, size_t);
        117 char *xstrdup(const char *);
        118
        119 int isboxdraw(Rune);
        120 ushort boxdrawindex(const Glyph *);
        121 #ifdef XFT_VERSION
        122 /* only exposed to x.c, otherwise we'll need Xft.h for the types */
        123 void boxdraw_xinit(Display *, Colormap, XftDraw *, Visual *);
        124 void drawboxes(int, int, int, int, XftColor *, XftColor *, const XftGlyphFontSpec *, int);
        125 #endif
        126
        127 /* config.h globals */
        128 extern char *utmp;
        129 extern char *scroll;
        130 extern char *stty_args;
        131 extern char *vtiden;
        132 extern wchar_t *worddelimiters;
        133 extern int allowaltscreen;
        134 extern int allowwindowops;
        135 extern char *termname;
        136 extern unsigned int tabspaces;
        137 extern unsigned int defaultfg;
        138 extern unsigned int defaultbg;
        139 extern const int boxdraw, boxdraw_bold, boxdraw_braille;