blob: 711c8ab3ced63852e0e48e5ce6723eb4fc32cc70 [file] [log] [blame]
adamdunkelsb9614dc2004-08-09 20:33:51 +00001#ifndef __CTK_TERM_INT_H__
2#define __CTK_TERM_INT_H__
3
4/* Color definitions */
5
6#define TERM_BACKGROUNDCOLOR 0
7#define TERM_WINDOWCOLOR 1
8#define TERM_SEPARATORCOLOR 7 /*(TERM_WINDOWCOLOR + 6)*/
9#define TERM_LABELCOLOR 13 /*(TERM_SEPARATORCOLOR + 6)*/
10#define TERM_BUTTONCOLOR 19 /*(TERM_LABELCOLOR + 6)*/
11#define TERM_HYPERLINKCOLOR 25 /*(TERM_BUTTONCOLOR + 6)*/
12#define TERM_TEXTENTRYCOLOR 31 /*(TERM_HYPERLINKCOLOR + 6)*/
13#define TERM_ICONCOLOR 37 /*(TERM_TEXTENTRYCOLOR + 6)*/
14#define TERM_MENUCOLOR 43 /*(TERM_ICONCOLOR + 6)*/
15#define TERM_OPENMENUCOLOR 44/*(TERM_MENUCOLOR + 1)*/
16#define TERM_ACTIVEMENUCOLOR 45 /*(TERM_OPENMENUCOLOR + 1) */
17
18/* Structure describing an updated region */
19struct ctk_term_update {
20 struct ctk_term_update *next;
21
22#define UPDATE_NONE 0
23#define UPDATE_PARTS 1
24#define UPDATE_FULL 2
25
26 unsigned char type;
27
28 unsigned char x, y;
29 unsigned char w, h;
30};
31
32/* Character sequence parsing states */
33enum { ANS_IDLE, ANS_ESCSEQ,ANS_ESCSEQ_1,ANS_SS3, ANS_CTRLSEQ};
34
35struct ctk_term_state {
36 unsigned char type;
37 unsigned char state;
38 unsigned char height, width;
39
40 /* Variables used when sending screen updates. */
41 unsigned char x, y, x1, y1, x2, y2;
42 unsigned char w, h;
43 unsigned char c1, c2;
44
45#define CTK_TERM_MAX_UPDATES 8
46 struct ctk_term_update *updates_current;
47 struct ctk_term_update *updates_pending;
48 struct ctk_term_update *updates_free;
49 struct ctk_term_update updates_pool[CTK_TERM_MAX_UPDATES];
50
51 /* Variables used when parsing input sequences */
52 unsigned char inputstate;
53#define CTK_TERM_CTRLBUFLEN 5
54 unsigned char ctrlbuf[CTK_TERM_CTRLBUFLEN+1];
55 unsigned char ctrlCnt;
56};
57
58struct ctk_term_update * ctk_term_update_alloc(struct ctk_term_state *vs);
59void ctk_term_update_free(struct ctk_term_state *ts, struct ctk_term_update *a);
60void ctk_term_update_remove(struct ctk_term_state *ts, struct ctk_term_update *a);
61
62void ctk_term_update_add(struct ctk_term_state *ts, struct ctk_term_update *a);
63struct ctk_term_update * ctk_term_update_dequeue(struct ctk_term_state *ts);
64
65void ctk_term_input_init();
66
adamdunkelsa2f3c422004-09-12 20:24:53 +000067#endif /* __CTK_TERM_INT_H__ */