1 | /********************************************************************** <BR>
|
---|
2 | This file is part of Crack dot Com's free source code release of
|
---|
3 | Golgotha. <a href="http://www.crack.com/golgotha_release"> <BR> for
|
---|
4 | information about compiling & licensing issues visit this URL</a>
|
---|
5 | <PRE> If that doesn't help, contact Jonathan Clark at
|
---|
6 | golgotha_source@usa.net (Subject should have "GOLG" in it)
|
---|
7 | ***********************************************************************/
|
---|
8 |
|
---|
9 | #ifndef __STYLE_HPP_
|
---|
10 | #define __STYLE_HPP_
|
---|
11 |
|
---|
12 | #include "init/init.hh"
|
---|
13 | #include "window/window.hh"
|
---|
14 | #include "string/string.hh"
|
---|
15 | #include "video/display.hh"
|
---|
16 | #include "menu/menu.hh"
|
---|
17 | #include "font/font.hh"
|
---|
18 |
|
---|
19 | class i4_font_hint_class
|
---|
20 | {
|
---|
21 | public:
|
---|
22 | i4_font_hint_class();
|
---|
23 |
|
---|
24 | i4_font_class *normal_font;
|
---|
25 | i4_font_class *small_font;
|
---|
26 |
|
---|
27 | ~i4_font_hint_class();
|
---|
28 | };
|
---|
29 |
|
---|
30 |
|
---|
31 | class i4_color_hint_class
|
---|
32 | {
|
---|
33 | public:
|
---|
34 | i4_color black,white;
|
---|
35 |
|
---|
36 | i4_color text_foreground,
|
---|
37 | text_background;
|
---|
38 |
|
---|
39 | i4_color selected_text_foreground,
|
---|
40 | selected_text_background;
|
---|
41 |
|
---|
42 | struct bevel
|
---|
43 | {
|
---|
44 | i4_color bright, medium, dark;
|
---|
45 | };
|
---|
46 |
|
---|
47 | struct bevel_actor { bevel active,passive; };
|
---|
48 |
|
---|
49 | bevel_actor window, button;
|
---|
50 |
|
---|
51 | i4_color_hint_class();
|
---|
52 |
|
---|
53 | i4_color neutral() { return window.passive.medium; }
|
---|
54 | };
|
---|
55 |
|
---|
56 | class i4_cursor_hint_class
|
---|
57 | {
|
---|
58 | i4_cursor_class *normal,*text;
|
---|
59 | public:
|
---|
60 | i4_cursor_class *normal_cursor() const { return normal; }
|
---|
61 | i4_cursor_class *text_cursor() const { return text; }
|
---|
62 |
|
---|
63 | i4_cursor_hint_class();
|
---|
64 | ~i4_cursor_hint_class()
|
---|
65 | {
|
---|
66 | delete normal;
|
---|
67 | delete text;
|
---|
68 | }
|
---|
69 | };
|
---|
70 |
|
---|
71 |
|
---|
72 | class i4_icon_hint_class
|
---|
73 | {
|
---|
74 | public:
|
---|
75 | i4_image_class *close_icon;
|
---|
76 | i4_image_class *up_icon;
|
---|
77 | i4_image_class *down_icon;
|
---|
78 | i4_image_class *left_icon;
|
---|
79 | i4_image_class *right_icon;
|
---|
80 | i4_image_class *plus_icon;
|
---|
81 | i4_image_class *minus_icon;
|
---|
82 | i4_image_class *ok_icon;
|
---|
83 | i4_image_class *cancel_icon;
|
---|
84 |
|
---|
85 | i4_image_class *background_bitmap;
|
---|
86 |
|
---|
87 | i4_icon_hint_class();
|
---|
88 | ~i4_icon_hint_class();
|
---|
89 | } ;
|
---|
90 |
|
---|
91 | class i4_time_hint_class
|
---|
92 | {
|
---|
93 | public:
|
---|
94 | w32 button_repeat, // these are in milli seconds
|
---|
95 | button_delay,
|
---|
96 | double_click;
|
---|
97 |
|
---|
98 | i4_time_hint_class();
|
---|
99 | };
|
---|
100 |
|
---|
101 | class i4_graphical_style_class : public i4_init_class
|
---|
102 | {
|
---|
103 | virtual void init();
|
---|
104 | void cleanup();
|
---|
105 |
|
---|
106 | public:
|
---|
107 | virtual void uninit();
|
---|
108 |
|
---|
109 | virtual i4_bool available_for_display(i4_display_class *whom) = 0;
|
---|
110 | virtual char *name() = 0;
|
---|
111 |
|
---|
112 | // window will automatically be added to parent at location x,y
|
---|
113 | // on_delete will be deleted when the window closes
|
---|
114 | // x=-1 and y=-1 then center window in parent
|
---|
115 | virtual i4_parent_window_class *create_mp_window(i4_coord x, i4_coord y, w16 w, w16 h,
|
---|
116 | const i4_const_str &title,
|
---|
117 | i4_event_reaction_class *on_delete=0
|
---|
118 | ) = 0;
|
---|
119 |
|
---|
120 | virtual i4_bool close_mp_window(i4_parent_window_class *created_window) = 0;
|
---|
121 |
|
---|
122 | virtual i4_menu_class *create_menu(i4_bool hide_on_pick) = 0;
|
---|
123 |
|
---|
124 | virtual void prepare_for_mode(const i4_pal *pal, i4_display_class::mode *mode);
|
---|
125 |
|
---|
126 |
|
---|
127 | virtual void get_in_deco_size(w32 &left, w32 &top, w32 &right, w32 &bottom) = 0;
|
---|
128 | virtual void get_out_deco_size(w32 &left, w32 &top, w32 &right, w32 &bottom) = 0;
|
---|
129 |
|
---|
130 | virtual void deco_neutral_fill(i4_image_class *screen,
|
---|
131 | sw32 x1, sw32 y1, sw32 x2, sw32 y2,
|
---|
132 | i4_draw_context_class &context) = 0;
|
---|
133 |
|
---|
134 | // draw a decoration around an area that looks like it's pressed into the screen
|
---|
135 | virtual void draw_in_deco(i4_image_class *screen,
|
---|
136 | i4_coord x1, i4_coord y1,
|
---|
137 | i4_coord x2, i4_coord y2,
|
---|
138 | i4_bool active,
|
---|
139 | i4_draw_context_class &context) = 0;
|
---|
140 |
|
---|
141 | // draw a decoration around an area that looks like it sticks out the screen
|
---|
142 | virtual void draw_out_deco(i4_image_class *screen,
|
---|
143 | i4_coord x1, i4_coord y1,
|
---|
144 | i4_coord x2, i4_coord y2,
|
---|
145 | i4_bool active,
|
---|
146 | i4_draw_context_class &context) = 0;
|
---|
147 |
|
---|
148 | // this will create a temporary (quick) context help window at the mouse cursor
|
---|
149 | // you are responsible for deleting the window
|
---|
150 | virtual i4_window_class *create_quick_context_help(int mouse_x, int mouse_y,
|
---|
151 | const i4_const_str &str) = 0;
|
---|
152 |
|
---|
153 | i4_color_hint_class *color_hint;
|
---|
154 | i4_font_hint_class *font_hint;
|
---|
155 | i4_cursor_hint_class *cursor_hint;
|
---|
156 | i4_icon_hint_class *icon_hint;
|
---|
157 | i4_time_hint_class *time_hint;
|
---|
158 |
|
---|
159 | i4_graphical_style_class *next;
|
---|
160 |
|
---|
161 | i4_graphical_style_class()
|
---|
162 | {
|
---|
163 | color_hint=0;
|
---|
164 | font_hint=0;
|
---|
165 | cursor_hint=0;
|
---|
166 | icon_hint=0;
|
---|
167 | time_hint=0;
|
---|
168 | }
|
---|
169 | };
|
---|
170 |
|
---|
171 |
|
---|
172 | class i4_style_manager_class
|
---|
173 | {
|
---|
174 | i4_graphical_style_class *list;
|
---|
175 | public:
|
---|
176 | void add_style(i4_graphical_style_class *which);
|
---|
177 | i4_graphical_style_class *find_style(char *name);
|
---|
178 | i4_graphical_style_class *first_style();
|
---|
179 | i4_graphical_style_class *next_style(i4_graphical_style_class *last);
|
---|
180 | };
|
---|
181 |
|
---|
182 |
|
---|
183 | i4_color i4_read_color_from_resource(char *name);
|
---|
184 | extern i4_style_manager_class i4_style_man;
|
---|
185 |
|
---|
186 | #endif
|
---|
187 |
|
---|