1 /* fbpad header file */
3 #define MIN(a, b) ((a) < (b) ? (a) : (b))
4 #define MAX(a, b) ((a) > (b) ? (a) : (b))
5 #define LEN(a) (sizeof(a) / sizeof((a)[0]))
7 #define ESC 27 /* escape code */
8 #define NCOLS 256 /* maximum number of screen columns */
9 #define NROWS 128 /* maximum number of screen rows */
10 #define NDOTS 1024 /* maximum pixels in glyphs */
11 #define NHIST 128 /* scrolling history lines */
14 #define DWCHAR 0x40000000u /* 2nd half of a fullwidth char */
27 int screen
[NROWS
* NCOLS
]; /* screen content */
28 int hist
[NHIST
* NCOLS
]; /* scrolling history */
29 short fgs
[NROWS
* NCOLS
]; /* foreground color */
30 short bgs
[NROWS
* NCOLS
]; /* background color */
31 int dirty
[NROWS
]; /* changed rows in lazy mode */
32 struct term_state cur
, sav
; /* terminal saved state */
33 int fd
; /* terminal file descriptor */
34 int hrow
; /* the next history row in hist[] */
35 int hpos
; /* scrolling history; position */
36 int lazy
; /* lazy mode */
37 int pid
; /* pid of the terminal program */
38 int top
, bot
; /* terminal scrolling region */
41 void term_load(struct term
*term
, int visible
);
42 void term_save(struct term
*term
);
45 void term_send(int c
);
46 void term_exec(char **args
);
48 void term_screenshot(void);
49 void term_scrl(int pos
);
50 void term_redraw(int all
);
53 #define FN_I 0x100 /* italic font */
54 #define FN_B 0x200 /* bold font */
55 #define FN_C 0x0ff /* font color mask */
59 int pad_font(char *fr
, char *fi
, char *fb
);
60 void pad_put(int ch
, int r
, int c
, int fg
, int bg
);
63 void pad_fill(int sr
, int er
, int sc
, int ec
, int c
);
66 struct font
*font_open(char *path
);
67 void font_free(struct font
*font
);
68 int font_rows(struct font
*font
);
69 int font_cols(struct font
*font
);
70 int font_bitmap(struct font
*font
, void *dst
, int c
);
73 void scr_snap(void *owner
);
74 int scr_load(void *owner
);
75 void scr_free(void *owner
);