89int main(
int argc,
char** argv) {
92 fprintf(stderr,
"Usage: %s [-V LOG_LEVEL]\n", argv[0]);
97 if (!al_init() || !al_init_font_addon() || !al_init_primitives_addon()) {
101 ALLEGRO_FONT*
font = al_create_builtin_font();
105 al_destroy_font(
font);
118 if (field < 0 || go < 0 || other < 0 || cancel < 0 || below < 0 || hidden < 0 || below >= 64) {
127 key(
gui, ALLEGRO_KEY_TAB, 0, 0);
129 key(
gui, ALLEGRO_KEY_TAB, 0, 0);
131 key(
gui, ALLEGRO_KEY_TAB, ALLEGRO_KEYMOD_SHIFT, 0);
137 key(
gui, ALLEGRO_KEY_RIGHT, 0, 0);
139 key(
gui, ALLEGRO_KEY_RIGHT, 0, 0);
141 key(
gui, ALLEGRO_KEY_DOWN, 0, 0);
143 key(
gui, ALLEGRO_KEY_RIGHT, 0, 0);
145 key(
gui, ALLEGRO_KEY_LEFT, 0, 0);
147 key(
gui, ALLEGRO_KEY_UP, 0, 0);
151 key(
gui, ALLEGRO_KEY_ENTER, 0, 0);
154 key(
gui, ALLEGRO_KEY_SPACE, 0, 0);
156 key(
gui, ALLEGRO_KEY_ENTER, 0, 1);
158 key(
gui, ALLEGRO_KEY_PAD_ENTER, 0, 0);
167 key(
gui, ALLEGRO_KEY_ENTER, 0, 0);
174 float x = 0.0f, y = 0.0f, w = 0.0f, h = 0.0f;
180 memset(&ev, 0,
sizeof(ev));
181 ev.type = ALLEGRO_EVENT_MOUSE_AXES;
182 ev.mouse.x = (int)(x + w * 0.5f);
183 ev.mouse.y = (int)(y + h * 0.5f);
185 ev.type = ALLEGRO_EVENT_MOUSE_BUTTON_DOWN;
188 ev.type = ALLEGRO_EVENT_MOUSE_BUTTON_UP;
199 ALLEGRO_COLOR mark = al_map_rgb(255, 0, 255);
201 al_map_rgb(90, 90, 90), al_map_rgb(100, 100, 100), mark,
202 al_map_rgb(220, 220, 220), al_map_rgb(230, 230, 230),
203 al_map_rgb(240, 240, 240), 1.0f, 0.0f, 0.0f);
205 int slider = 0, button = 0;
206 ALLEGRO_BITMAP* target = NULL;
207 int old = al_get_new_bitmap_flags();
208 float x = 0.0f, y = 0.0f, w = 0.0f, h = 0.0f;
209 unsigned char r = 0, g = 0, b = 0;
212 slider =
n_gui_add_slider(
gui, win2, 10, 10, 200, 24, 0.0, 100.0, 50.0,
N_GUI_SLIDER_VALUE, NULL, NULL);
214 al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP);
215 target = al_create_bitmap(800, 600);
216 al_set_new_bitmap_flags(old);
217 if (!target || slider < 0 || button < 0) {
220 int s_on = 0, s_off = 0, b_on = 0;
223 al_set_target_bitmap(target);
226 al_clear_to_color(al_map_rgb(0, 0, 0));
229 al_unmap_rgb(al_get_pixel(target, (
int)x + 1, (
int)(y + h * 0.5f)), &r, &g, &b);
230 s_off = (r == 255 && g == 0 && b == 255);
233 al_clear_to_color(al_map_rgb(0, 0, 0));
235 al_unmap_rgb(al_get_pixel(target, (
int)x + 1, (
int)(y + h * 0.5f)), &r, &g, &b);
236 s_on = (r == 255 && g == 0 && b == 255);
238 al_clear_to_color(al_map_rgb(0, 0, 0));
241 al_unmap_rgb(al_get_pixel(target, (
int)x + 1, (
int)(y + h * 0.5f)), &r, &g, &b);
242 b_on = (r == 255 && g == 0 && b == 255);
243 al_set_target_bitmap(NULL);
244 expect_true(
"a slider without the focus has no outline", !s_off);
245 expect_true(
"a focused slider is outlined in the active border colour", s_on);
248 if (target) al_destroy_bitmap(target);
252 al_destroy_font(
font);
N_GUI_THEME n_gui_make_theme(ALLEGRO_COLOR bg, ALLEGRO_COLOR bg_hover, ALLEGRO_COLOR bg_active, ALLEGRO_COLOR border, ALLEGRO_COLOR border_hover, ALLEGRO_COLOR border_active, ALLEGRO_COLOR text, ALLEGRO_COLOR text_hover, ALLEGRO_COLOR text_active, float border_thickness, float corner_rx, float corner_ry)
Create a custom theme with explicit colours.