chiark / gitweb /
*** empty log message ***
[sympathy.git] / src / ansi.h
1 /*
2  * ansi.h:
3  *
4  * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>,
5  * All rights reserved.
6  *
7  */
8
9 /*
10  * $Id$
11  */
12
13 /*
14  * $Log$
15  * Revision 1.13  2008/02/24 00:42:53  james
16  * *** empty log message ***
17  *
18  * Revision 1.12  2008/02/23 11:48:37  james
19  * *** empty log message ***
20  *
21  * Revision 1.11  2008/02/20 20:16:07  james
22  * *** empty log message ***
23  *
24  * Revision 1.10  2008/02/20 19:44:37  james
25  * @@
26  *
27  * Revision 1.9  2008/02/20 19:36:06  james
28  * @@
29  *
30  * Revision 1.8  2008/02/20 19:25:09  james
31  * *** empty log message ***
32  *
33  * Revision 1.7  2008/02/13 16:57:29  james
34  * *** empty log message ***
35  *
36  * Revision 1.6  2008/02/13 01:08:18  james
37  * *** empty log message ***
38  *
39  * Revision 1.5  2008/02/07 12:16:04  james
40  * *** empty log message ***
41  *
42  * Revision 1.4  2008/02/07 00:43:27  james
43  * *** empty log message ***
44  *
45  * Revision 1.3  2008/02/07 00:39:13  james
46  * *** empty log message ***
47  *
48  * Revision 1.2  2008/02/06 11:30:37  james
49  * *** empty log message ***
50  *
51  * Revision 1.1  2008/02/03 23:31:25  james
52  * *** empty log message ***
53  *
54  */
55
56 #ifndef __ANSI_H__
57 #define __ANSI_H__
58
59 #define ANSI_INVAL -1
60
61 #define ANSI_ESCAPE_BUF_LEN 10
62 #define ANSI_ESCAPE_TIMEOUT     100000 /*in ms */
63
64 typedef struct
65 {
66   int in_escape;
67   struct timeval last_escape;
68   char escape_buf[ANSI_ESCAPE_BUF_LEN];
69   int escape_ptr;
70 } ANSI_Parser;
71
72 struct CRT_struct;
73 struct Context_struct;
74
75 typedef struct ANSI_struct
76 {
77   ANSI_Parser parser;
78
79   TTY *terminal;
80
81   CRT crt;
82   CRT_Pos pos;
83   CRT_Pos size;
84   int hide_cursor;
85   int attr;
86   int color;
87
88   int utf8;
89
90   int history_ptr;
91   FILE *file;
92
93   int (*dispatch) (struct ANSI_struct *, struct Context_struct *);
94   void (*update) (struct ANSI_struct *, struct Context_struct *);
95   void (*one_shot) (struct ANSI_struct *, struct CRT_struct *);
96   void (*reset) (struct ANSI_struct *, struct CRT_struct *);
97   void (*terminal_reset) (struct ANSI_struct *);
98   void (*close) (struct ANSI_struct *);
99 } ANSI;
100
101
102 #endif /* __ANSI_H__ */