1 /*
2  * textgfx flags
3  */
4 #define ASCII 1
5 #define WHITE_BG 2
6 #define MONOCHROME 4
7 #define HEIGHT_24L 8
8 
9 /* block styles */
10 #define BLACK_BRACKETS 16
11 #define TT_BLOCKS 32
12 #define TT_BLOCKS_BG 64
13 
14 #define XTERM 0x80
15 #define LINUX_TERM 0x100
16 #define GNOME_TERM 0x200
17 #define CYGWIN 0x400
18 #define TERM_RESIZED 0x800
19 #define LOST_FOCUS 0x1000
20 
21 extern unsigned textgfx_flags;
22 
23 #define _ASCII	    (textgfx_flags & ASCII)
24 #define _WHITE_BG   (textgfx_flags & WHITE_BG)
25 #define _MONOCHROME (textgfx_flags & MONOCHROME)
26 #define _HEIGHT_24L (textgfx_flags & HEIGHT_24L)
27 #define _TT_BLOCKS  (textgfx_flags & TT_BLOCKS)
28 #define _TT_BLOCKS_BG (textgfx_flags & TT_BLOCKS_BG)
29 #define TT_MONO (TT_BLOCKS | MONOCHROME)
30 #define _XTERM (textgfx_flags & XTERM)
31 #define _LINUX_TERM (textgfx_flags & LINUX_TERM)
32 
33 extern char term_width;
34 extern char term_height;
35 
36 extern short block_chars[2];
37 extern short bgdot;
38 
39 int default_bgdot();
40 void reset_block_chars();
41 
42 void gettermsize();
43 void settermwidth(int cols);
44 void settermheight(int lines);
45 void gettermoptions();
46 
47 void textgfx_init();
48 void textgfx_end();
49 
50 #ifdef NO_MENU
51 #define in_menu 0
52 #define textgfx_entermenu()
53 #else
54 extern int in_menu;
55 void textgfx_entermenu();
56 #endif
57 void textgfx_entergame();
58 
59 /* Windows
60  0 - standard screen
61  1 - board 1
62  2 - board 2 */
63 #define WIN_NEXT 3
64 /* WIN_NEXT+1 - player 2's next */
65 #define WIN_PANEL 5
66 #define WIN_TETROM_STATS 6
67 #define WIN_TOP_SCORES 7
68 
69 int getmargin_x();
70 void getwin_xy(int win, int *x, int *y);
71 
72 void setcurs(int x, int y);
73 void setwcurs(int win, int x, int y);
74 void movefwd(int n);
75 void newln(int x);
76 void setcurs_end();
77 int is_outside_screen(int x, int y);
78 void get_xy(int *x, int *y);
79 
80 void refreshscreen();
81 
82 /* refreshwin(-1) refreshes the current window */
83 void refreshwin(int win);
84 
85 void clearwin(int win);
86 void cleartoeol();
87 
88 /* Color pairs.
89  * 1-7 are used for blocks.
90  * 0x11-0x17 are block colors without bg. */
91 #define MAGENTA_FG 8
92 #define WHITE_ON_BLUE 9
93 #define BOARD_BG_COLOR 10
94 #define BOARD_FRAME_COLOR 11
95 #define PANEL_LABEL_COLOR 12
96 #define RED_FG 13
97 #define YELLOW_ON_GREEN 14
98 #define YELLOW_ON_BLUE 0x18
99 
100 void setcolorpair(int pair);
101 
102 /* inner func - doesn't set PANEL_LABEL_COLOR which depends on tetris level */
103 void set_color_pair(int pair);
104 
105 /* Set color pair and block chars based on block style.
106  * clr = 1-7 or 0 for board bg. */
107 void setblockcolor(int clr);
108 
109 void setattr_normal();
110 void setattr_standout();
111 void setattr_bold();
112 void setattr_underline();
113 
114 /* Line drawing characters - used with putch */
115 
116 #define UPLEFT	 ('l' | 0x100)
117 #define LOWLEFT  ('m' | 0x100)
118 #define UPRIGHT	 ('k' | 0x100)
119 #define LOWRIGHT ('j' | 0x100)
120 #define CROSSLINES ('n' | 0x100)
121 #define HLINE	 ('q' | 0x100)
122 #define VLINE	 ('x' | 0x100)
123 #define LEFT_T	 ('t' | 0x100)
124 #define RIGHT_T	 ('u' | 0x100)
125 #define BOTTOM_T ('v' | 0x100)
126 #define TOP_T	 ('w' | 0x100)
127 #define TEXTURE1 ('a' | 0x100)	/* ACS_CKBOARD */
128 #define TEXTURE2 ('h' | 0x100)	/* ACS_BOARD or blank */
129 #define BULLET	 ('~' | 0x100)
130 #define UPARROW	 ('-' | 0x100)
131 
132 /* putch conflicts with DOS conio */
133 void put_ch(int ch);
134 #ifndef conio_h
135 #define putch(ch) put_ch(ch)
136 #endif
137 int printstr(const char *str);
138 void printint(const char *fmt, int d);
139 void printlong(const char *fmt, long d);
140 
141 /* takes a line drawing character and prints ascii */
142 void putch_ascii(int ch);
143 
144 int putnchars(int ch, int n);
145 
146 /* prints lowercase letters in str using alternate character set,
147  * and repeats a character followed by 'N' n times */
148 void printstr_acs(const char *str, int n);
149 
150 int isprintable(int c);
151 
152 void enable_term_resizing();
153 void upd_termresize();
154