ScummVM API documentation
window.h
1/* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 */
21
22#ifndef MADS_CORE_WINDOW_H
23#define MADS_CORE_WINDOW_H
24
25#include "mads/core/general.h"
26
27namespace MADS {
28
29#define WINDOW_DETECT_VALID 0
30#define WINDOW_DETECT_START -1
31#define WINDOW_DETECT_NOTHING -2
32#define WINDOW_DETECT_SCROLL -3
33#define WINDOW_DETECT_SCROLL_LOWER -4
34#define WINDOW_DETECT_SCROLL_HIGHER -5
35#define WINDOW_DETECT_PAGE_LOWER -6
36#define WINDOW_DETECT_PAGE_HIGHER -7
37#define WINDOW_DETECT_LOWER -8
38#define WINDOW_DETECT_HIGHER -9
39
40/* frame drawing character defines */
41
42#define window_shadow_color colorbyte(hi_black,black)
43#define abort_color colorbyte(black, white)
44
45#define ul_corner 0x0da
46#define ur_corner 0x0bf
47#define ll_corner 0x0c0
48#define lr_corner 0x0d9
49
50#define horiz_frame 0x0c4
51#define vert_frame 0x0b3
52
53#define upper_join 0x0c2
54#define lower_join 0x0c1
55#define left_join 0x0c3
56#define right_join 0x0b4
57
58#define four_way 0x0c5
59
60/* scroll bar drawing character defines */
61
62#define scroll_bar 0x0b2
63#define thumb_mark 0x008
64#define up_mark 0x018
65#define down_mark 0x019
66#define left_mark 0x01b
67#define right_mark 0x01a
68
69#define WINDOW_MAX_TRAP_ROUTINES 8
70
71#define WINDOW_SINGLE 0x01
72#define WINDOW_DOUBLE 0x02
73#define WINDOW_OBESE 0x03
74
75struct WindowBox {
76 int ul_x, ul_y, lr_x, lr_y;
77 byte *storage;
78};
79
80typedef WindowBox Window;
81typedef Window *WindowPtr;
82
83struct ScrollBar {
84 WindowPtr window;
85 int vertical;
86 int side;
87 int normal_color;
88 int select_color;
89 long min_value;
90 long max_value;
91 long scroll_value;
92 long page_value;
93};
94
95typedef ScrollBar *ScrollBarPtr;
96
97extern int window_box_mode;
98extern int window_num_trap_routines;
99extern byte *window_trap_routine[WINDOW_MAX_TRAP_ROUTINES];
100extern char window_trap_string[WINDOW_MAX_TRAP_ROUTINES][80];
101
102extern byte *window_incoming_string;
103extern int window_display_string;
104
105
109extern void window_set(WindowPtr window, int ul_x, int ul_y, int lr_x, int lr_y);
110
114extern void window_line_across(WindowPtr window, int line_y);
115
119extern void window_color(WindowPtr window, int new_color);
120
124extern void window_wipe(WindowPtr window);
125
129extern void window_shadow(WindowPtr window);
130
131extern void window_define_scrollbar(WindowPtr window, ScrollBarPtr scroll, int vertical,
132 int left_or_bottom, long min_value, long max_value, long scroll_value,
133 long page_value, int normal_color, int select_color);
134extern void window_draw_scrollbar(ScrollBarPtr scroll);
135extern long window_translate_thumb(ScrollBarPtr scroll, long current_value);
136extern long window_make_thumb(ScrollBarPtr scroll, long current_value);
137extern long window_draw_thumb(ScrollBarPtr scroll, long current_value);
138extern int window_scrollbar_detect(ScrollBarPtr scroll, int x, int y,
139 long value, long *new_value, int prior_detect);
140extern int window_detect(ScrollBarPtr scroll, int x, int y, long value, long *new_value,
141 int prior_detect, long base_value, long value_mult);
142extern int window_vert_detect(WindowPtr window, int x, int y,
143 int tight_vert, int tight_horiz);
144
148extern void window_horiz_scrollbar(WindowPtr window, int bar_color);
149
153extern void window_vert_scrollbar(WindowPtr window, int bar_color);
154
158extern void window_title(WindowPtr window, const char *title, int title_color, int background_color);
159extern void window_abort(const char *message);
160extern byte *window_create(WindowPtr window);
161extern void window_destroy(WindowPtr window);
162extern int window_normal_color(WindowPtr window);
163extern int window_line_width(WindowPtr window);
164extern void window_text_setup(WindowPtr window, int follow);
165extern void window_init_screen(WindowPtr main_window, const char *prog_name, const char *prog_author,
166 const char *prog_version, const char *lib_version_no, const char *compile_date);
167extern void window_draw_box(WindowPtr window, int type);
168
187extern void window_trap_output(WindowPtr window, void (*(any_char_routine))(),
188 const char *trap_string, ...);
189
193extern void window_restore_output();
194
195extern void window_define(WindowPtr window, int x1, int y1, int x2, int y2,
196 int color, int shadow, int save);
197extern void window_center(WindowPtr window, const char *text, int line, int color);
198extern int window_show(WindowPtr window, const char *text, int xx, int yy);
199extern void window_repeat(WindowPtr window, char wipe_item, int x1, int x2, int y1);
200extern void window_wipe_line(WindowPtr window, int yy);
201extern int window_printf(WindowPtr window, int x, int y, const char *string, ...);
202extern void window_clear(WindowPtr window);
203extern int window_show_color(WindowPtr window, const char *text, int xx, int yy, int color);
204extern void window_10_install();
205extern void window_10_remove();
206
207} // namespace MADS
208
209#endif
Definition: window.h:83
Definition: window.h:75