igramscii.h - gramscii - A simple editor for ASCII box-and-arrow charts Err bitreich.org 70 1Log /scm/gramscii/log.gph bitreich.org 70 1Files /scm/gramscii/files.gph bitreich.org 70 1Refs /scm/gramscii/refs.gph bitreich.org 70 1Tags /scm/gramscii/tag bitreich.org 70 1README /scm/gramscii/file/README.md.gph bitreich.org 70 1LICENSE /scm/gramscii/file/COPYING.gph bitreich.org 70 i--- Err bitreich.org 70 igramscii.h (3758B) Err bitreich.org 70 i--- Err bitreich.org 70 i 1 #ifndef __GRAMSCII_H__ Err bitreich.org 70 i 2 #define __GRAMSCII_H__ Err bitreich.org 70 i 3 Err bitreich.org 70 i 4 #define _POSIX_C_SOURCE 200112L Err bitreich.org 70 i 5 Err bitreich.org 70 i 6 #include Err bitreich.org 70 i 7 #include Err bitreich.org 70 i 8 #include Err bitreich.org 70 i 9 Err bitreich.org 70 i 10 Err bitreich.org 70 i 11 Err bitreich.org 70 i 12 /** constants **/ Err bitreich.org 70 i 13 Err bitreich.org 70 i 14 /* modes */ Err bitreich.org 70 i 15 #define MOVE 0x00 Err bitreich.org 70 i 16 #define BOX 0x01 Err bitreich.org 70 i 17 #define ARROW 0x02 Err bitreich.org 70 i 18 #define TEXT 0x04 Err bitreich.org 70 i 19 #define DEL 0x08 Err bitreich.org 70 i 20 #define VIS 0x10 Err bitreich.org 70 i 21 #define PAR 0x20 Err bitreich.org 70 i 22 #define REM 0x40 Err bitreich.org 70 i 23 #define TRP 0x80 Err bitreich.org 70 i 24 /**/ Err bitreich.org 70 i 25 Err bitreich.org 70 i 26 /* directions */ Err bitreich.org 70 i 27 #define DIR_N 0x00 Err bitreich.org 70 i 28 #define DIR_R 0x01 Err bitreich.org 70 i 29 #define DIR_U 0x02 Err bitreich.org 70 i 30 #define DIR_D 0x04 Err bitreich.org 70 i 31 #define DIR_L 0x08 Err bitreich.org 70 i 32 Err bitreich.org 70 i 33 #define DIR_HOR (DIR_R | DIR_L) Err bitreich.org 70 i 34 #define DIR_VER (DIR_D | DIR_U) Err bitreich.org 70 i 35 /**/ Err bitreich.org 70 i 36 Err bitreich.org 70 i 37 /** box style **/ Err bitreich.org 70 i 38 /* rectangular box */ Err bitreich.org 70 i 39 #define BOX_RECT 0x00 Err bitreich.org 70 i 40 /* parallelograms */ Err bitreich.org 70 i 41 #define BOX_PAR 0x10 Err bitreich.org 70 i 42 /* parallelogram (leaning right) */ Err bitreich.org 70 i 43 #define BOX_PARR 0x11 Err bitreich.org 70 i 44 /* parallelogram (leaning left) */ Err bitreich.org 70 i 45 #define BOX_PARL 0x12 Err bitreich.org 70 i 46 /* trapezium */ Err bitreich.org 70 i 47 #define BOX_TRAP 0x20 Err bitreich.org 70 i 48 #define BOX_TRAP_U 0x24 Err bitreich.org 70 i 49 #define BOX_TRAP_D 0x28 Err bitreich.org 70 i 50 #define BOX_TRAP_R 0x21 Err bitreich.org 70 i 51 #define BOX_TRAP_C 0x22 Err bitreich.org 70 i 52 #define BOX_TRAP_L 0x23 Err bitreich.org 70 i 53 #define BOX_TRAP_UR 0x25 Err bitreich.org 70 i 54 #define BOX_TRAP_UC 0x26 Err bitreich.org 70 i 55 #define BOX_TRAP_UL 0x27 Err bitreich.org 70 i 56 #define BOX_TRAP_DL 0x29 Err bitreich.org 70 i 57 #define BOX_TRAP_DC 0x2a Err bitreich.org 70 i 58 #define BOX_TRAP_DR 0x2b Err bitreich.org 70 i 59 #define STYLE_IS(x, y) (((x) & (y) ) == y) Err bitreich.org 70 i 60 /**/ Err bitreich.org 70 i 61 Err bitreich.org 70 i 62 #define NOFIX 0x0 Err bitreich.org 70 i 63 #define FIX 0x1 Err bitreich.org 70 i 64 Err bitreich.org 70 i 65 /* markers */ Err bitreich.org 70 i 66 #define BG ' ' Err bitreich.org 70 i 67 #define PTR '+' Err bitreich.org 70 i 68 #define UND '_' Err bitreich.org 70 i 69 #define ARR_L '<' Err bitreich.org 70 i 70 #define ARR_R '>' Err bitreich.org 70 i 71 #define ARR_U '^' Err bitreich.org 70 i 72 #define ARR_D 'v' Err bitreich.org 70 i 73 /**/ Err bitreich.org 70 i 74 Err bitreich.org 70 i 75 /* global positions */ Err bitreich.org 70 i 76 #define HOME 0x01 Err bitreich.org 70 i 77 #define END 0x02 Err bitreich.org 70 i 78 #define MIDDLE 0x04 Err bitreich.org 70 i 79 /**/ Err bitreich.org 70 i 80 Err bitreich.org 70 i 81 /* video modes */ Err bitreich.org 70 i 82 #define VIDEO_NRM 0 Err bitreich.org 70 i 83 #define VIDEO_REV 7 Err bitreich.org 70 i 84 /**/ Err bitreich.org 70 i 85 Err bitreich.org 70 i 86 /* undo buffer elem types */ Err bitreich.org 70 i 87 #define PRV_STATE 0x01 Err bitreich.org 70 i 88 #define NEW_STATE 0x02 Err bitreich.org 70 i 89 /**/ Err bitreich.org 70 i 90 Err bitreich.org 70 i 91 /* file types */ Err bitreich.org 70 i 92 #define FFILE 0x01 Err bitreich.org 70 i 93 #define FPIPE 0x02 Err bitreich.org 70 i 94 Err bitreich.org 70 i 95 /** types **/ Err bitreich.org 70 i 96 Err bitreich.org 70 i 97 typedef struct{ Err bitreich.org 70 i 98 int sz;/* allocated size */ Err bitreich.org 70 i 99 int n;/* line number */ Err bitreich.org 70 i 100 int lst;/* last visible char (before the first \0) */ Err bitreich.org 70 i 101 char *s; Err bitreich.org 70 i 102 } line_t; Err bitreich.org 70 i 103 Err bitreich.org 70 i 104 typedef struct{ Err bitreich.org 70 i 105 int sz;/* allocated size */ Err bitreich.org 70 i 106 int num;/* number of lines stored */ Err bitreich.org 70 i 107 line_t *l; Err bitreich.org 70 i 108 } lineset_t; Err bitreich.org 70 i 109 Err bitreich.org 70 i 110 typedef struct{ Err bitreich.org 70 i 111 int x; Err bitreich.org 70 i 112 int y; Err bitreich.org 70 i 113 } pos_t; Err bitreich.org 70 i 114 Err bitreich.org 70 i 115 Err bitreich.org 70 i 116 /** MACROS **/ Err bitreich.org 70 i 117 Err bitreich.org 70 i 118 #define MIN(x,y) (x) < (y) ? (x) : (y) Err bitreich.org 70 i 119 #define MAX(x,y) (x) > (y) ? (x) : (y) Err bitreich.org 70 i 120 Err bitreich.org 70 i 121 #define progr_x(d) ((d) == DIR_L ? -1 : (d) == DIR_R ? 1 : 0) Err bitreich.org 70 i 122 #define progr_y(d) ((d) == DIR_U ? -1 : (d) == DIR_D ? 1 : 0) Err bitreich.org 70 i 123 Err bitreich.org 70 i 124 Err bitreich.org 70 i 125 /** screen-related functions **/ Err bitreich.org 70 i 126 void reset_styles(); Err bitreich.org 70 i 127 void redraw(); Err bitreich.org 70 i 128 int move_around(char c, FILE *fc, char global); Err bitreich.org 70 i 129 void check_bound(int *x, int *y); Err bitreich.org 70 i 130 void status_bar(); Err bitreich.org 70 i 131 void show_cursor(); Err bitreich.org 70 i 132 void set_cur(char c); Err bitreich.org 70 i 133 void update_current(); Err bitreich.org 70 i 134 void set_xy(int _x, int _y, char c); Err bitreich.org 70 i 135 void draw_xy(int x, int y, char c); Err bitreich.org 70 i 136 char get_mark(char dir); Err bitreich.org 70 i 137 void set_video(int v); Err bitreich.org 70 i 138 char get_key(FILE *fc, char *msg); Err bitreich.org 70 i 139 void get_string(FILE *fc, char *msg, char *s, int sz); Err bitreich.org 70 i 140 void erase_box(int x1, int y1, char c); Err bitreich.org 70 i 141 int is_yes(char c); Err bitreich.org 70 i 142 void init_screen(); Err bitreich.org 70 i 143 void erase_line(int i); Err bitreich.org 70 i 144 void erase_screen(); Err bitreich.org 70 i 145 void go_to(int where); Err bitreich.org 70 i 146 void crop_to_nonblank(); Err bitreich.org 70 i 147 void crop_to_rect(); Err bitreich.org 70 i 148 void erase_blank_lines(int y1, int y2); Err bitreich.org 70 i 149 int _isblank(int c); Err bitreich.org 70 i 150 void mark_pos(FILE *fc); Err bitreich.org 70 i 151 /**/ Err bitreich.org 70 i 152 Err bitreich.org 70 i 153 /** drawing-related functions **/ Err bitreich.org 70 i 154 int change_style(char c); Err bitreich.org 70 i 155 void get_text(FILE *fc); Err bitreich.org 70 i 156 void get_box(FILE *fc, char st); Err bitreich.org 70 i 157 void get_arrow(FILE *fc); Err bitreich.org 70 i 158 void erase(FILE *fc); Err bitreich.org 70 i 159 void visual_box(FILE *fc); Err bitreich.org 70 i 160 void paste(); Err bitreich.org 70 i 161 void undo_change(); Err bitreich.org 70 i 162 void redo_change(); Err bitreich.org 70 i 163 void get_comment(FILE *fc); Err bitreich.org 70 i 164 /**/ Err bitreich.org 70 i 165 Err bitreich.org 70 i 166 /** file-related functions **/ Err bitreich.org 70 i 167 void write_file(FILE *fc); Err bitreich.org 70 i 168 void check_modified(FILE *fc); Err bitreich.org 70 i 169 void load_file(FILE *fc); Err bitreich.org 70 i 170 void new_file(FILE *fc); Err bitreich.org 70 i 171 void read_file_at(FILE *fc, int xl, int yl); Err bitreich.org 70 i 172 /**/ Err bitreich.org 70 i 173 Err bitreich.org 70 i 174 /** line-related functions **/ Err bitreich.org 70 i 175 void dump_lines(lineset_t ls, FILE *f); Err bitreich.org 70 i 176 void alloc_line(line_t *l); Err bitreich.org 70 i 177 void ensure_line_length(line_t *l, int len); Err bitreich.org 70 i 178 void ensure_num_lines(lineset_t *ls, int n); Err bitreich.org 70 i 179 void yank_region(int x1, int y1, int x2, int y2); Err bitreich.org 70 i 180 void paste_region(int x1, int y1); Err bitreich.org 70 i 181 void copy_lines_to_ring(int y1, int y2, int which); Err bitreich.org 70 i 182 void invalidate_undo(); Err bitreich.org 70 i 183 /**/ Err bitreich.org 70 i 184 Err bitreich.org 70 i 185 void cleanup(int); Err bitreich.org 70 i 186 Err bitreich.org 70 i 187 #endif Err bitreich.org 70 .