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