1 #ifndef _EDITOR_H
2 #define _EDITOR_H
3 
4 #define SPACE ' '
5 
6 /* editor macros */
7 #define HY(page) page->hy
8 #define LY(page) page->ly
9 #define CS(page) (page->l_cs_offset + page->l_cs)
10 
11 /* local editor macros */
12 
13 #define L_FG(page) page->l_fg
14 #define L_BG(page) page->l_bg
15 #define L_BOLD(page) page->l_bold
16 #define L_BLINK(page) page->l_blink
17 #define L_RY(page) (page->l_y + page->l_oy)
18 #define L_Y(page) page->l_y
19 #define L_OY(page) page->l_oy
20 #define L_X(page) page->l_x
21 #define L_INSERT(page) page->l_insert
22 #define L_CS(page) page->l_cs
23 #define L_CS_OFFSET(page) page->l_cs_offset
24 #define L_WRAPPED(page) page->l_wrapped
25 
26 /* remote editor macros */
27 #define R_FG(page) page->r_fg
28 #define R_BG(page) page->r_bg
29 #define R_BOLD(page) page->r_bold
30 #define R_BLINK(page) page->r_blink
31 #define R_RY(page) (page->r_y + page->r_oy)
32 #define R_Y(page) page->r_y
33 #define R_OY(page) page->r_oy
34 #define R_X(page) page->r_x
35 #define R_INSERT(page) page->r_insert
36 #define R_CS(page) page->r_cs
37 #define R_WRAPPED(page) page->l_wrapped
38 
39 typedef struct {
40 	coordinate l_x;
41 	coordinate l_y;
42 	coordinate l_oy;
43 
44 	colour		 l_fg;
45 	colour	 	 l_bg;
46 	flag 			 l_bold;
47 	flag 			 l_blink;
48 	flag			 l_insert;
49 
50 	int 			 l_cs;
51 	int				 l_cs_offset;
52 
53 	flag			 l_wrapped;
54 
55 
56 	coordinate r_x;
57 	coordinate r_y;
58 	coordinate r_oy;
59 
60 	colour		 r_fg;
61 	colour		 r_bg;
62 	flag			 r_bold;
63 	flag			 r_blink;
64 	flag			 r_insert;
65 
66 	flag			 r_wrapped;
67 
68 	character **buffer;
69 	coordinate hy;
70 	coordinate ly;
71 
72 	flag modified;
73 } canvas;
74 
75 typedef struct {
76 	flag sb_top;
77 	flag fix_flip;
78 	flag show_logo;
79 
80 	flag save_sauce;
81 	flag dot_files;
82 	flag soft_cursor;
83 
84 	int autosave;
85 
86 	char highascii[20][10];
87 
88 	char default_st[10];
89 
90 	char sauce_author[20];
91 	char sauce_group[20];
92 	char sauce_title[35];
93 
94 	int default_cs;
95 } t_options;
96 
97 extern t_options options;
98 
99 /* general editor functions */
100 void move_down(canvas *, int);
101 void move_up(canvas *, int);
102 void move_left(canvas *, int);
103 void move_right(canvas *, int);
104 void setpos(canvas *, int, int);
105 
106 void char_add_l(canvas *, character );
107 void char_add(canvas *, character);
108 void char_insert(canvas *, character);
109 void char_delete(canvas *, int);
110 
111 void setfg(canvas *,colour);
112 void setbg(canvas *,colour);
113 void setbold(canvas *,flag);
114 void setblink(canvas *,flag);
115 void toginsert(canvas *);
116 void savepos(canvas *, int *, int *);
117 void restorepos(canvas *, int , int );
118 
119 canvas *erase_display(canvas *);
120 void erase_line(canvas *);
121 
122 void line_add(canvas *, int);
123 void line_delete(canvas *, int);
124 void line_insert(canvas *, int);
125 void line_trim(canvas *, int);
126 void v_line_insert(canvas *, int);
127 void v_line_delete(canvas *, int);
128 
129 void wrapped(canvas *, flag);
130 void colour_ch(canvas *);
131 
132 /* local editor functions */
133 
134 void l_move_down(canvas *, int);
135 void l_move_up(canvas *, int);
136 void l_move_left(canvas *, int);
137 void l_move_right(canvas *, int);
138 void l_setpos(canvas *, int, int);
139 
140 void l_char_add_l(canvas *, character);
141 void l_char_add(canvas *, character);
142 void l_char_insert(canvas *, character);
143 void l_char_delete(canvas *, int);
144 
145 void l_setfg(canvas *,colour);
146 void l_setbg(canvas *,colour);
147 void l_setbold(canvas *,flag);
148 void l_setblink(canvas *,flag);
149 void l_toginsert(canvas *);
150 void l_savepos(canvas *, int *, int *);
151 void l_restorepos(canvas *, int , int );
152 
153 attribute l_colour(canvas *);
154 attribute l_ocolour(canvas *);
155 
156 canvas *l_erase_display(canvas *);
157 void l_erase_line(canvas *);
158 
159 void l_line_add(canvas *, int);
160 void l_line_delete(canvas *, int);
161 void l_line_insert(canvas *, int);
162 void l_line_trim(canvas *, int);
163 void l_v_line_insert(canvas *, int);
164 void l_v_line_delete(canvas *, int);
165 
166 void l_wrapped(canvas *, flag);
167 void l_colour_ch(canvas *);
168 
169 /* remote editor functions */
170 
171 void r_move_down(canvas *, int);
172 void r_move_up(canvas *, int);
173 void r_move_left(canvas *, int);
174 void r_move_right(canvas *, int);
175 void r_setpos(canvas *, int, int);
176 
177 void r_char_add_l(canvas *, character);
178 void r_char_add(canvas *, character);
179 void r_char_insert(canvas *, character);
180 void r_char_delete(canvas *, int);
181 
182 attribute r_colour(canvas *);
183 attribute r_ocolour(canvas *);
184 
185 void r_setfg(canvas *,colour);
186 void r_setbg(canvas *,colour);
187 void r_setbold(canvas *,flag);
188 void r_setblink(canvas *,flag);
189 void r_toginsert(canvas *);
190 void r_savepos(canvas *, int *, int *);
191 void r_restorepos(canvas *, int , int );
192 
193 void r_wrapped(canvas *, flag);
194 void r_colour_ch(canvas *);
195 
196 #define PAGE_CREATE 0
197 #define PAGE_DESTROY 1
198 #define PAGE_CLEAN 2
199 
200 canvas *page_factory(canvas *, flag);
201 
202 #define LINE_ADD 0
203 #define LINE_DELETE 1
204 #define LINE_INSERT 2
205 #define LINE_TRIM 3
206 #define V_LINE_INSERT 4
207 #define V_LINE_DELETE 5
208 
209 void line_factory(canvas *, flag, int );
210 
211 #endif
212