blob: 711c8ab3ced63852e0e48e5ce6723eb4fc32cc70 [file] [log] [blame]
#ifndef __CTK_TERM_INT_H__
#define __CTK_TERM_INT_H__
/* Color definitions */
#define TERM_BACKGROUNDCOLOR 0
#define TERM_WINDOWCOLOR 1
#define TERM_SEPARATORCOLOR 7 /*(TERM_WINDOWCOLOR + 6)*/
#define TERM_LABELCOLOR 13 /*(TERM_SEPARATORCOLOR + 6)*/
#define TERM_BUTTONCOLOR 19 /*(TERM_LABELCOLOR + 6)*/
#define TERM_HYPERLINKCOLOR 25 /*(TERM_BUTTONCOLOR + 6)*/
#define TERM_TEXTENTRYCOLOR 31 /*(TERM_HYPERLINKCOLOR + 6)*/
#define TERM_ICONCOLOR 37 /*(TERM_TEXTENTRYCOLOR + 6)*/
#define TERM_MENUCOLOR 43 /*(TERM_ICONCOLOR + 6)*/
#define TERM_OPENMENUCOLOR 44/*(TERM_MENUCOLOR + 1)*/
#define TERM_ACTIVEMENUCOLOR 45 /*(TERM_OPENMENUCOLOR + 1) */
/* Structure describing an updated region */
struct ctk_term_update {
struct ctk_term_update *next;
#define UPDATE_NONE 0
#define UPDATE_PARTS 1
#define UPDATE_FULL 2
unsigned char type;
unsigned char x, y;
unsigned char w, h;
};
/* Character sequence parsing states */
enum { ANS_IDLE, ANS_ESCSEQ,ANS_ESCSEQ_1,ANS_SS3, ANS_CTRLSEQ};
struct ctk_term_state {
unsigned char type;
unsigned char state;
unsigned char height, width;
/* Variables used when sending screen updates. */
unsigned char x, y, x1, y1, x2, y2;
unsigned char w, h;
unsigned char c1, c2;
#define CTK_TERM_MAX_UPDATES 8
struct ctk_term_update *updates_current;
struct ctk_term_update *updates_pending;
struct ctk_term_update *updates_free;
struct ctk_term_update updates_pool[CTK_TERM_MAX_UPDATES];
/* Variables used when parsing input sequences */
unsigned char inputstate;
#define CTK_TERM_CTRLBUFLEN 5
unsigned char ctrlbuf[CTK_TERM_CTRLBUFLEN+1];
unsigned char ctrlCnt;
};
struct ctk_term_update * ctk_term_update_alloc(struct ctk_term_state *vs);
void ctk_term_update_free(struct ctk_term_state *ts, struct ctk_term_update *a);
void ctk_term_update_remove(struct ctk_term_state *ts, struct ctk_term_update *a);
void ctk_term_update_add(struct ctk_term_state *ts, struct ctk_term_update *a);
struct ctk_term_update * ctk_term_update_dequeue(struct ctk_term_state *ts);
void ctk_term_input_init();
#endif /* __CTK_TERM_INT_H__ */