Introduction
Introduction Statistics Contact Development Disclaimer Help
st.h - st - simple terminal
git clone git://git.suckless.org/st
Log
Files
Refs
README
LICENSE
---
st.h (2923B)
---
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) …
14 #define ATTRCMP(a, b) ((a).mode != (b).mode || (a).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) &= ~(b…
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_BOLD_FAINT = ATTR_BOLD | ATTR_FAINT,
37 };
38
39 enum selection_mode {
40 SEL_IDLE = 0,
41 SEL_EMPTY = 1,
42 SEL_READY = 2
43 };
44
45 enum selection_type {
46 SEL_REGULAR = 1,
47 SEL_RECTANGULAR = 2
48 };
49
50 enum selection_snap {
51 SNAP_WORD = 1,
52 SNAP_LINE = 2
53 };
54
55 typedef unsigned char uchar;
56 typedef unsigned int uint;
57 typedef unsigned long ulong;
58 typedef unsigned short ushort;
59
60 typedef uint_least32_t Rune;
61
62 #define Glyph Glyph_
63 typedef struct {
64 Rune u; /* character code */
65 ushort mode; /* attribute flags */
66 uint32_t fg; /* foreground */
67 uint32_t bg; /* background */
68 } Glyph;
69
70 typedef Glyph *Line;
71
72 typedef union {
73 int i;
74 uint ui;
75 float f;
76 const void *v;
77 const char *s;
78 } Arg;
79
80 void die(const char *, ...);
81 void redraw(void);
82 void draw(void);
83
84 void printscreen(const Arg *);
85 void printsel(const Arg *);
86 void sendbreak(const Arg *);
87 void toggleprinter(const Arg *);
88
89 int tattrset(int);
90 void tnew(int, int);
91 void tresize(int, int);
92 void tsetdirtattr(int);
93 void ttyhangup(void);
94 int ttynew(const char *, char *, const char *, char **);
95 size_t ttyread(void);
96 void ttyresize(int, int);
97 void ttywrite(const char *, size_t, int);
98
99 void resettitle(void);
100
101 void selclear(void);
102 void selinit(void);
103 void selstart(int, int, int);
104 void selextend(int, int, int, int);
105 int selected(int, int);
106 char *getsel(void);
107
108 size_t utf8encode(Rune, char *);
109
110 void *xmalloc(size_t);
111 void *xrealloc(void *, size_t);
112 char *xstrdup(const char *);
113
114 /* config.h globals */
115 extern char *utmp;
116 extern char *scroll;
117 extern char *stty_args;
118 extern char *vtiden;
119 extern wchar_t *worddelimiters;
120 extern int allowaltscreen;
121 extern int allowwindowops;
122 extern char *termname;
123 extern unsigned int tabspaces;
124 extern unsigned int defaultfg;
125 extern unsigned int defaultbg;
126 extern unsigned int defaultcs;
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.