mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-16 14:50:17 +00:00
formating
svn-id: r38671
This commit is contained in:
parent
ecf0cbe94e
commit
0d3f2573c6
@ -23,7 +23,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/* Static binary lookup tree lookup */
|
||||
// Static binary lookup tree lookup
|
||||
|
||||
#include "common/util.h"
|
||||
#include "sci/include/sci_memory.h"
|
||||
@ -38,14 +38,11 @@ typedef struct {
|
||||
void *value;
|
||||
} sbcell_t;
|
||||
|
||||
int
|
||||
int_compar(const void *a, const void *b) {
|
||||
int int_compar(const void *a, const void *b) {
|
||||
return (*((int *)a)) - (*((int *)b));
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
insert_interval(sbcell_t *data, int start, int stop, int *keys, int plus) {
|
||||
void insert_interval(sbcell_t *data, int start, int stop, int *keys, int plus) {
|
||||
int center = start + ((stop - start) >> 1);
|
||||
|
||||
data->key = keys[center];
|
||||
@ -60,8 +57,7 @@ insert_interval(sbcell_t *data, int start, int stop, int *keys, int plus) {
|
||||
insert_interval(data + plus + 1, center + 1, stop, keys, ((plus << 1) + 1));
|
||||
}
|
||||
|
||||
sbtree_t *
|
||||
sbtree_new(int size, int *keys) {
|
||||
sbtree_t *sbtree_new(int size, int *keys) {
|
||||
int table_size = 2;
|
||||
int levels = 0;
|
||||
sbcell_t *table;
|
||||
@ -79,7 +75,7 @@ sbtree_new(int size, int *keys) {
|
||||
if (table_size > 1)
|
||||
--table_size;
|
||||
|
||||
table = (sbcell_t*)sci_calloc(sizeof(sbcell_t), table_size);
|
||||
table = (sbcell_t *)sci_calloc(sizeof(sbcell_t), table_size);
|
||||
for (i = 0; i < table_size; i++)
|
||||
table[i].key = NOT_A_KEY;
|
||||
|
||||
@ -88,7 +84,7 @@ sbtree_new(int size, int *keys) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
tree = (sbtree_t*)sci_malloc(sizeof(sbtree_t));
|
||||
tree = (sbtree_t *)sci_malloc(sizeof(sbtree_t));
|
||||
|
||||
if (!tree) {
|
||||
error("SBTree: Could not allocate tree structure\n");
|
||||
@ -114,9 +110,7 @@ sbtree_new(int size, int *keys) {
|
||||
return tree;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
sbtree_free(sbtree_t *tree) {
|
||||
void sbtree_free(sbtree_t *tree) {
|
||||
if (!tree) {
|
||||
error("SBTree: Attempt to free NULL sbtree\n");
|
||||
return;
|
||||
@ -126,10 +120,7 @@ sbtree_free(sbtree_t *tree) {
|
||||
free(tree);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
sbtree_foreach(sbtree_t *tree, void *args, void *(*operation)(sbtree_t *, const int,
|
||||
const void *, void *)) {
|
||||
void sbtree_foreach(sbtree_t *tree, void *args, void *(*operation)(sbtree_t *, const int, const void *, void *)) {
|
||||
int i;
|
||||
sbcell_t *cell = (sbcell_t *) tree->data;
|
||||
|
||||
@ -140,14 +131,12 @@ sbtree_foreach(sbtree_t *tree, void *args, void *(*operation)(sbtree_t *, const
|
||||
}
|
||||
}
|
||||
|
||||
sbcell_t *
|
||||
locate(sbcell_t *start, int key, int level, int levels, int plus) {
|
||||
sbcell_t *locate(sbcell_t *start, int key, int level, int levels, int plus) {
|
||||
int comparison;
|
||||
|
||||
if (level >= levels && (level != levels || start->key == NOT_A_KEY))
|
||||
/* For large tables, the speed improvement caused by this comparison
|
||||
** scheme is almost (cough) measurable...
|
||||
*/
|
||||
// For large tables, the speed improvement caused by this comparison
|
||||
// scheme is almost (cough) measurable...
|
||||
return NULL;
|
||||
|
||||
comparison = key - start->key;
|
||||
@ -158,9 +147,7 @@ locate(sbcell_t *start, int key, int level, int levels, int plus) {
|
||||
return locate(start + plus + (comparison > 0), key, level + 1, levels, (plus << 1) + (comparison > 0));
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
sbtree_set(sbtree_t *tree, int key, void *value) {
|
||||
int sbtree_set(sbtree_t *tree, int key, void *value) {
|
||||
sbcell_t *cell = locate((sbcell_t *) tree->data, key, 0, tree->levels, 1);
|
||||
|
||||
if (cell)
|
||||
@ -171,9 +158,7 @@ sbtree_set(sbtree_t *tree, int key, void *value) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void *
|
||||
sbtree_get(sbtree_t *tree, int key) {
|
||||
void *sbtree_get(sbtree_t *tree, int key) {
|
||||
sbcell_t *cell = locate((sbcell_t *) tree->data, key, 0, tree->levels, 1);
|
||||
|
||||
if (cell)
|
||||
@ -183,10 +168,9 @@ sbtree_get(sbtree_t *tree, int key) {
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void
|
||||
sbtree_print(sbtree_t *tree) {
|
||||
static void sbtree_print(sbtree_t *tree) {
|
||||
int l, i;
|
||||
sbcell_t *cells = (sbcell_t *) tree->data;
|
||||
sbcell_t *cells = (sbcell_t *)tree->data;
|
||||
|
||||
error("\tTree:\n");
|
||||
for (l = 0; l <= tree->levels; l++) {
|
||||
@ -209,48 +193,45 @@ sbtree_print(sbtree_t *tree) {
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/***************************** TEST CODE ********************************/
|
||||
//**************************** TEST CODE *******************************
|
||||
|
||||
|
||||
#ifdef SBTREE_DEBUG
|
||||
|
||||
static int any_error;
|
||||
|
||||
|
||||
void *
|
||||
foreach_double_func(sbtree_t *tree, const int key, const void *value, void *args) {
|
||||
void *foreach_double_func(sbtree_t *tree, const int key, const void *value, void *args) {
|
||||
int *real_value = (int *) value;
|
||||
|
||||
if (!real_value)
|
||||
error("foreach_double_func(): key %d mapped to non-value", key);
|
||||
else *real_value *= 2;
|
||||
else
|
||||
*real_value *= 2;
|
||||
|
||||
return real_value;
|
||||
}
|
||||
|
||||
int *
|
||||
generate_linear_forward(int numbers) {
|
||||
int *generate_linear_forward(int numbers) {
|
||||
int i;
|
||||
int *data = sci_malloc(sizeof(int) * numbers);
|
||||
|
||||
for (i = 0; i < numbers; i++)
|
||||
data[i] = i + 1;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
int *
|
||||
generate_linear_backward(int numbers) {
|
||||
int *generate_linear_backward(int numbers) {
|
||||
int i;
|
||||
int *data = sci_malloc(sizeof(int) * numbers);
|
||||
|
||||
for (i = 0; i < numbers; i++)
|
||||
data[i] = numbers - i;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
int *
|
||||
generate_random(int numbers, int max) {
|
||||
int *generate_random(int numbers, int max) {
|
||||
int i;
|
||||
int *data = sci_malloc(sizeof(int) * numbers);
|
||||
|
||||
@ -260,9 +241,7 @@ generate_random(int numbers, int max) {
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
insert_values(sbtree_t *tree, int nr, int *data) {
|
||||
void insert_values(sbtree_t *tree, int nr, int *data) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < nr; i++)
|
||||
@ -272,14 +251,12 @@ insert_values(sbtree_t *tree, int nr, int *data) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#define MODE_LINEAR 0
|
||||
#define MODE_LINEAR_MAP 1
|
||||
#define MODE_RANDOM 2
|
||||
#define MODE_LINEAR_DOUBLE 3
|
||||
|
||||
void
|
||||
test_value(sbtree_t *tree, int times, int max, int numbers, int *data, int mode) {
|
||||
void test_value(sbtree_t *tree, int times, int max, int numbers, int *data, int mode) {
|
||||
int i;
|
||||
int failed = 0;
|
||||
|
||||
@ -310,9 +287,7 @@ test_value(sbtree_t *tree, int times, int max, int numbers, int *data, int mode)
|
||||
error("OK\n");
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
test_boundary(sbtree_t *tree, int max, int random) {
|
||||
void test_boundary(sbtree_t *tree, int max, int random) {
|
||||
int *value_too_low = sbtree_get(tree, 0);
|
||||
int *value_too_high = sbtree_get(tree, max + 1);
|
||||
int *value_low = sbtree_get(tree, 1);
|
||||
@ -340,9 +315,7 @@ test_boundary(sbtree_t *tree, int max, int random) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
test_empty(sbtree_t *tree, int count, int max) {
|
||||
void test_empty(sbtree_t *tree, int count, int max) {
|
||||
int i;
|
||||
int errors = 0;
|
||||
|
||||
@ -362,8 +335,7 @@ test_empty(sbtree_t *tree, int count, int max) {
|
||||
error("OK\n");
|
||||
}
|
||||
|
||||
void
|
||||
run_test(sbtree_t *tree, int entries, int *data, int random, int max_value) {
|
||||
void run_test(sbtree_t *tree, int entries, int *data, int random, int max_value) {
|
||||
char *tests[] = {"\tLinear reference test: \t\t", "\tKey map reference test: \t", "\tRandom access test: \t\t"};
|
||||
int i;
|
||||
|
||||
@ -398,20 +370,19 @@ run_test(sbtree_t *tree, int entries, int *data, int random, int max_value) {
|
||||
sbtree_free(tree);
|
||||
}
|
||||
|
||||
|
||||
#define TESTS_NR 11
|
||||
|
||||
int
|
||||
main(int argc, char **argv) {
|
||||
int main(int argc, char **argv) {
|
||||
int tests_nr = TESTS_NR;
|
||||
int test_sizes[TESTS_NR] = {1, 2, 3, 7, 8, 9, 1000, 16383, 16384, 16385, 1000000};
|
||||
int i;
|
||||
|
||||
error("sbtree.c Copyright (C) 2000 Christoph Reichenbach <jameson@linuxgames.com>\n"
|
||||
"This program is provided WITHOUT WARRANTY of any kind\n"
|
||||
"Please refer to the file COPYING that should have come with this program\n");
|
||||
error("Static Binary Tree testing facility\n");
|
||||
|
||||
free(malloc(42)); /* Make sure libefence's Copyright message is print here if we're using it */
|
||||
free(malloc(42)); // Make sure libefence's Copyright message is print here if we're using it
|
||||
|
||||
error("\nsbtree.c: Running %d tests.\n", tests_nr);
|
||||
|
||||
@ -449,5 +420,4 @@ main(int argc, char **argv) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#endif /* SBTREE_DEBUG */
|
||||
#endif // SBTREE_DEBUG
|
||||
|
@ -32,9 +32,7 @@
|
||||
#define SCI_SPECIAL_CHAR_ARROW_UP 0x18
|
||||
#define SCI_SPECIAL_CHAR_ARROW_DOWN 0x19
|
||||
|
||||
|
||||
static void
|
||||
clear_titlebar(gfxw_port_t *titlebar) {
|
||||
static void clear_titlebar(gfxw_port_t *titlebar) {
|
||||
if (titlebar->contents) {
|
||||
titlebar->contents->widfree(titlebar->contents);
|
||||
titlebar->contents = NULL;
|
||||
@ -42,8 +40,7 @@ clear_titlebar(gfxw_port_t *titlebar) {
|
||||
}
|
||||
}
|
||||
|
||||
static gfxw_list_t *
|
||||
make_titlebar_list(state_t *s, rect_t bounds, gfxw_port_t *status_bar) {
|
||||
static gfxw_list_t *make_titlebar_list(state_t *s, rect_t bounds, gfxw_port_t *status_bar) {
|
||||
gfx_color_t color = status_bar->bgcolor;
|
||||
gfxw_list_t *list;
|
||||
gfxw_box_t *bgbox;
|
||||
@ -58,21 +55,18 @@ make_titlebar_list(state_t *s, rect_t bounds, gfxw_port_t *status_bar) {
|
||||
return list;
|
||||
}
|
||||
|
||||
static gfxw_list_t *
|
||||
finish_titlebar_list(state_t *s, gfxw_list_t *list, gfxw_port_t *status_bar) {
|
||||
static gfxw_list_t *finish_titlebar_list(state_t *s, gfxw_list_t *list, gfxw_port_t *status_bar) {
|
||||
gfx_color_t black = s->ega_colors[0];
|
||||
gfxw_primitive_t *line;
|
||||
|
||||
line = gfxw_new_line(Common::Point(0, status_bar->bounds.yl - 1),
|
||||
Common::Point(status_bar->bounds.xl, status_bar->bounds.yl - 1),
|
||||
line = gfxw_new_line(Common::Point(0, status_bar->bounds.yl - 1), Common::Point(status_bar->bounds.xl, status_bar->bounds.yl - 1),
|
||||
black, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL);
|
||||
list->add((gfxw_container_t *) list, (gfxw_widget_t *) line);
|
||||
list->add((gfxw_container_t *)list, (gfxw_widget_t *)line);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
void
|
||||
sciw_set_status_bar(state_t *s, gfxw_port_t *status_bar, char *text, int fgcolor, int bgcolor) {
|
||||
void sciw_set_status_bar(state_t *s, gfxw_port_t *status_bar, char *text, int fgcolor, int bgcolor) {
|
||||
gfx_state_t *state;
|
||||
gfxw_list_t *list;
|
||||
gfx_color_t bg = status_bar->bgcolor;
|
||||
@ -100,7 +94,7 @@ sciw_set_status_bar(state_t *s, gfxw_port_t *status_bar, char *text, int fgcolor
|
||||
|
||||
list = make_titlebar_list(s, status_bar->bounds, status_bar);
|
||||
|
||||
list->add((gfxw_container_t *) list, (gfxw_widget_t *) textw);
|
||||
list->add((gfxw_container_t *)list, (gfxw_widget_t *)textw);
|
||||
|
||||
} else {
|
||||
gfxw_box_t *bgbox = gfxw_new_box(state, gfx_rect(0, 0, status_bar->bounds.xl, status_bar->bounds.yl - 1),
|
||||
@ -108,7 +102,7 @@ sciw_set_status_bar(state_t *s, gfxw_port_t *status_bar, char *text, int fgcolor
|
||||
|
||||
list = gfxw_new_list(status_bar->bounds, 0);
|
||||
|
||||
list->add((gfxw_container_t *) list, (gfxw_widget_t *) bgbox);
|
||||
list->add((gfxw_container_t *)list, (gfxw_widget_t *)bgbox);
|
||||
}
|
||||
|
||||
list->add(GFXWC(status_bar), GFXW(list));
|
||||
@ -118,9 +112,8 @@ sciw_set_status_bar(state_t *s, gfxw_port_t *status_bar, char *text, int fgcolor
|
||||
gfxop_update(state);
|
||||
}
|
||||
|
||||
static void
|
||||
sciw_make_window_fit(rect_t *rect, gfxw_port_t *parent) {
|
||||
/* This window is meant to cover the whole screen, so we allow it to go through. */
|
||||
static void sciw_make_window_fit(rect_t *rect, gfxw_port_t *parent) {
|
||||
// This window is meant to cover the whole screen, so we allow it to go through.
|
||||
if (rect->xl == 319 && rect->yl == 189) return;
|
||||
|
||||
if (rect->x + rect->xl > parent->bounds.x + parent->bounds.xl)
|
||||
@ -130,10 +123,8 @@ sciw_make_window_fit(rect_t *rect, gfxw_port_t *parent) {
|
||||
rect->y -= (rect->y + rect->yl) - (parent->bounds.y + parent->bounds.yl) + 2;
|
||||
}
|
||||
|
||||
gfxw_port_t *
|
||||
sciw_new_window(state_t *s, rect_t area, int font, gfx_color_t color, gfx_color_t bgcolor,
|
||||
int title_font, gfx_color_t title_color, gfx_color_t title_bgcolor,
|
||||
const char *title, int flags) {
|
||||
gfxw_port_t *sciw_new_window(state_t *s, rect_t area, int font, gfx_color_t color, gfx_color_t bgcolor,
|
||||
int title_font, gfx_color_t title_color, gfx_color_t title_bgcolor, const char *title, int flags) {
|
||||
gfxw_visual_t *visual = s->visual;
|
||||
gfx_state_t *state = s->gfx_state;
|
||||
int shadow_offset = 2;
|
||||
@ -146,20 +137,18 @@ sciw_new_window(state_t *s, rect_t area, int font, gfx_color_t color, gfx_color_
|
||||
|
||||
if (area.xl == 319 && area.yl == 189) {
|
||||
flags |= WINDOW_FLAG_NOFRAME;
|
||||
/* The below line makes the points bar in QfG2 work, but breaks
|
||||
the one in QfG1. Hm. */
|
||||
// The below line makes the points bar in QfG2 work, but breaks
|
||||
// the one in QfG1. Hm.
|
||||
if ((byte)bgcolor.priority == 255) /* Yep, QfG2 */
|
||||
area.y += 3;
|
||||
}
|
||||
|
||||
/*
|
||||
if (area.y + area.yl > visual->bounds.y + visual->bounds.yl)
|
||||
{
|
||||
if (area.y + area.yl > visual->bounds.y + visual->bounds.yl) {
|
||||
area.y -= (area.y + area.yl) - (visual->bounds.y + visual->bounds.yl) + yextra;
|
||||
}
|
||||
|
||||
if (area.x + area.xl > visual->bounds.x + visual->bounds.xl)
|
||||
{
|
||||
if (area.x + area.xl > visual->bounds.x + visual->bounds.xl) {
|
||||
area.x -= (area.x + area.xl) - (visual->bounds.x + visual->bounds.xl) + xextra;
|
||||
}
|
||||
*/
|
||||
@ -168,7 +157,7 @@ sciw_new_window(state_t *s, rect_t area, int font, gfx_color_t color, gfx_color_
|
||||
area. y += 10;
|
||||
|
||||
if (!(flags & (WINDOW_FLAG_TITLE | WINDOW_FLAG_NOFRAME)))
|
||||
area.yl -= 1; /* Normal windows are drawn one pixel too small. */
|
||||
area.yl -= 1; // Normal windows are drawn one pixel too small.
|
||||
|
||||
sciw_make_window_fit(&area, s->wm_port);
|
||||
win = gfxw_new_port(visual, s->wm_port, area, color, bgcolor);
|
||||
@ -183,44 +172,40 @@ sciw_new_window(state_t *s, rect_t area, int font, gfx_color_t color, gfx_color_
|
||||
flags = WINDOW_FLAG_TRANSPARENT | WINDOW_FLAG_NOFRAME;
|
||||
|
||||
if (flags == (WINDOW_FLAG_TRANSPARENT | WINDOW_FLAG_NOFRAME))
|
||||
return win; /* Fully transparent window */
|
||||
return win; // Fully transparent window
|
||||
|
||||
if (flags & WINDOW_FLAG_TITLE)
|
||||
frame = gfx_rect(area.x - 1, area.y - 10, area.xl + 2, area.yl + 11);
|
||||
else
|
||||
frame = gfx_rect(area.x - 1, area.y - 1, area.xl + 2, area.yl + 2);
|
||||
|
||||
/* Set visible window boundaries */
|
||||
// Set visible window boundaries
|
||||
win->bounds = gfx_rect(frame.x, frame.y, frame.xl + shadow_offset, frame.yl + shadow_offset);
|
||||
|
||||
decorations = gfxw_new_list(gfx_rect(frame.x, frame.y,
|
||||
frame.xl + 1 + shadow_offset, frame.yl + 1 + shadow_offset), 0);
|
||||
decorations = gfxw_new_list(gfx_rect(frame.x, frame.y, frame.xl + 1 + shadow_offset, frame.yl + 1 + shadow_offset), 0);
|
||||
|
||||
if (!(flags & WINDOW_FLAG_TRANSPARENT)) {
|
||||
/* Draw window background */
|
||||
win->port_bg = (gfxw_widget_t *) gfxw_new_box(state,
|
||||
gfx_rect(1, (flags & WINDOW_FLAG_TITLE) ? 10 : 1,
|
||||
area.xl, area.yl),
|
||||
bgcolor, bgcolor, GFX_BOX_SHADE_FLAT);
|
||||
// Draw window background
|
||||
win->port_bg = (gfxw_widget_t *)gfxw_new_box(state, gfx_rect(1, (flags & WINDOW_FLAG_TITLE) ? 10 : 1,
|
||||
area.xl, area.yl), bgcolor, bgcolor, GFX_BOX_SHADE_FLAT);
|
||||
decorations->add((gfxw_container_t *) decorations, win->port_bg);
|
||||
win->flags |= GFXW_FLAG_OPAQUE;
|
||||
}
|
||||
|
||||
if (flags & WINDOW_FLAG_TITLE) {
|
||||
/* Add window title */
|
||||
// Add window title
|
||||
rect_t title_rect = gfx_rect(1, 1, area.xl, 8);
|
||||
|
||||
decorations->add((gfxw_container_t *) decorations, (gfxw_widget_t *)
|
||||
gfxw_new_box(state, title_rect, title_bgcolor, title_bgcolor, GFX_BOX_SHADE_FLAT));
|
||||
decorations->add((gfxw_container_t *)decorations, (gfxw_widget_t *)
|
||||
gfxw_new_box(state, title_rect, title_bgcolor, title_bgcolor, GFX_BOX_SHADE_FLAT));
|
||||
|
||||
decorations->add((gfxw_container_t *) decorations, (gfxw_widget_t *)
|
||||
gfxw_new_text(state, title_rect, title_font, title,
|
||||
ALIGN_CENTER, ALIGN_CENTER, title_color, title_color,
|
||||
title_bgcolor, GFXR_FONT_FLAG_NO_NEWLINES));
|
||||
decorations->add((gfxw_container_t *)decorations, (gfxw_widget_t *)
|
||||
gfxw_new_text(state, title_rect, title_font, title, ALIGN_CENTER, ALIGN_CENTER, title_color, title_color,
|
||||
title_bgcolor, GFXR_FONT_FLAG_NO_NEWLINES));
|
||||
}
|
||||
|
||||
if (!(flags & WINDOW_FLAG_NOFRAME)) {
|
||||
/* Draw backdrop shadow */
|
||||
// Draw backdrop shadow
|
||||
|
||||
if (!(flags & WINDOW_FLAG_NO_DROP_SHADOW)) {
|
||||
if (gfxop_set_color(state, &black, 0, 0, 0, 0x80, bgcolor.priority, -1)) {
|
||||
@ -228,18 +213,16 @@ sciw_new_window(state_t *s, rect_t area, int font, gfx_color_t color, gfx_color_
|
||||
return NULL;
|
||||
}
|
||||
|
||||
decorations->add((gfxw_container_t *) decorations, (gfxw_widget_t *)
|
||||
decorations->add((gfxw_container_t *)decorations, (gfxw_widget_t *)
|
||||
gfxw_new_box(state, gfx_rect(shadow_offset + 1, frame.yl - 1,
|
||||
frame.xl - 4, shadow_offset),
|
||||
black, black, GFX_BOX_SHADE_FLAT));
|
||||
frame.xl - 4, shadow_offset), black, black, GFX_BOX_SHADE_FLAT));
|
||||
|
||||
decorations->add((gfxw_container_t *) decorations, (gfxw_widget_t *)
|
||||
decorations->add((gfxw_container_t *)decorations, (gfxw_widget_t *)
|
||||
gfxw_new_box(state, gfx_rect(frame.xl - 1, shadow_offset + 1,
|
||||
shadow_offset, frame.yl - 2),
|
||||
black, black, GFX_BOX_SHADE_FLAT));
|
||||
shadow_offset, frame.yl - 2), black, black, GFX_BOX_SHADE_FLAT));
|
||||
}
|
||||
|
||||
/* Draw frame */
|
||||
// Draw frame
|
||||
|
||||
if (gfxop_set_color(state, &black, 0, 0, 0, 0, bgcolor.priority, -1)) {
|
||||
GFXERROR("Could not get black color entry");
|
||||
@ -248,21 +231,16 @@ sciw_new_window(state_t *s, rect_t area, int font, gfx_color_t color, gfx_color_
|
||||
|
||||
if (!(flags & WINDOW_FLAG_NO_DROP_SHADOW)) {
|
||||
|
||||
decorations->add((gfxw_container_t *) decorations, (gfxw_widget_t *)
|
||||
gfxw_new_rect(gfx_rect(0, 0, frame.xl - 1, frame.yl - 1),
|
||||
black, GFX_LINE_MODE_FINE, GFX_LINE_STYLE_NORMAL));
|
||||
decorations->add((gfxw_container_t *)decorations, (gfxw_widget_t *)
|
||||
gfxw_new_rect(gfx_rect(0, 0, frame.xl - 1, frame.yl - 1), black, GFX_LINE_MODE_FINE, GFX_LINE_STYLE_NORMAL));
|
||||
|
||||
if (flags & WINDOW_FLAG_TITLE)
|
||||
decorations->add((gfxw_container_t *) decorations, (gfxw_widget_t *)
|
||||
gfxw_new_line(Common::Point(1, 9),
|
||||
Common::Point(frame.xl - 2, 9),
|
||||
black, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL));
|
||||
decorations->add((gfxw_container_t *)decorations, (gfxw_widget_t *)gfxw_new_line(Common::Point(1, 9),
|
||||
Common::Point(frame.xl - 2, 9), black, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL));
|
||||
} else {
|
||||
decorations->add((gfxw_container_t *) decorations, (gfxw_widget_t *)
|
||||
gfxw_new_rect(gfx_rect(0, 0, frame.xl, frame.yl),
|
||||
black, GFX_LINE_MODE_FINE, GFX_LINE_STYLE_NORMAL));
|
||||
decorations->add((gfxw_container_t *)decorations, (gfxw_widget_t *)
|
||||
gfxw_new_rect(gfx_rect(0, 0, frame.xl, frame.yl), black, GFX_LINE_MODE_FINE, GFX_LINE_STYLE_NORMAL));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
win->decorations = decorations;
|
||||
@ -271,21 +249,14 @@ sciw_new_window(state_t *s, rect_t area, int font, gfx_color_t color, gfx_color_
|
||||
return win;
|
||||
}
|
||||
|
||||
//*** Controls ***
|
||||
|
||||
|
||||
/*----------------*/
|
||||
/**** Controls ****/
|
||||
/*----------------*/
|
||||
static inline rect_t
|
||||
_move_and_extend_rect(rect_t rect, Common::Point point, int yplus) {
|
||||
static inline rect_t _move_and_extend_rect(rect_t rect, Common::Point point, int yplus) {
|
||||
return gfx_rect(rect.x + point.x, rect.y + point.y, rect.xl + 1, rect.yl + yplus);
|
||||
}
|
||||
|
||||
|
||||
gfxw_list_t *
|
||||
_sciw_add_text_to_list(gfxw_list_t *list, gfxw_port_t *port, rect_t zone, char *text,
|
||||
int font, gfx_alignment_t align, char framed, char inverse, int flags,
|
||||
char gray_text) {
|
||||
gfxw_list_t *_sciw_add_text_to_list(gfxw_list_t *list, gfxw_port_t *port, rect_t zone, char *text,
|
||||
int font, gfx_alignment_t align, char framed, char inverse, int flags, char gray_text) {
|
||||
gfx_color_t *color1, *color2, *bgcolor;
|
||||
|
||||
if (inverse) {
|
||||
@ -299,25 +270,20 @@ _sciw_add_text_to_list(gfxw_list_t *list, gfxw_port_t *port, rect_t zone, char *
|
||||
bgcolor = &(port->bgcolor);
|
||||
}
|
||||
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_text(port->visual->gfx_state, zone,
|
||||
font, text, align, ALIGN_TOP,
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_text(port->visual->gfx_state, zone, font, text, align, ALIGN_TOP,
|
||||
*color1, *color2, *bgcolor, flags)));
|
||||
|
||||
|
||||
zone.xl--;
|
||||
zone.yl -= 2;
|
||||
|
||||
if (framed) {
|
||||
list->add(GFXWC(list),
|
||||
GFXW(gfxw_new_rect(zone, *color2, GFX_LINE_MODE_CORRECT,
|
||||
GFX_LINE_STYLE_STIPPLED)));
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_rect(zone, *color2, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_STIPPLED)));
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
gfxw_list_t *
|
||||
sciw_new_button_control(gfxw_port_t *port, reg_t ID, rect_t zone, char *text, int font, char selected, char inverse, char grayed_out) {
|
||||
gfxw_list_t *sciw_new_button_control(gfxw_port_t *port, reg_t ID, rect_t zone, char *text, int font, char selected, char inverse, char grayed_out) {
|
||||
gfx_color_t *frame_col = (inverse) ? &(port->bgcolor) : &(port->color);
|
||||
gfxw_list_t *list;
|
||||
|
||||
@ -357,10 +323,8 @@ sciw_new_button_control(gfxw_port_t *port, reg_t ID, rect_t zone, char *text, in
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
gfxw_list_t *
|
||||
sciw_new_text_control(gfxw_port_t *port, reg_t ID, rect_t zone, char *text, int font,
|
||||
gfx_alignment_t align, char framed, char inverse) {
|
||||
gfxw_list_t *sciw_new_text_control(gfxw_port_t *port, reg_t ID, rect_t zone, char *text, int font,
|
||||
gfx_alignment_t align, char framed, char inverse) {
|
||||
gfxw_list_t *list = gfxw_new_list(_move_and_extend_rect(zone, Common::Point(port->zone.x, port->zone.y), 2), 0);
|
||||
|
||||
gfxw_set_id(GFXW(list), ID.segment, ID.offset);
|
||||
@ -371,10 +335,8 @@ sciw_new_text_control(gfxw_port_t *port, reg_t ID, rect_t zone, char *text, int
|
||||
return _sciw_add_text_to_list(list, port, zone, text, font, align, framed, inverse, 0, port->gray_text);
|
||||
}
|
||||
|
||||
|
||||
gfxw_list_t *
|
||||
sciw_new_edit_control(gfxw_port_t *port, reg_t ID, rect_t zone, char *text, int font, unsigned int cursor,
|
||||
char inverse) {
|
||||
gfxw_list_t *sciw_new_edit_control(gfxw_port_t *port, reg_t ID, rect_t zone, char *text, int font, unsigned int cursor,
|
||||
char inverse) {
|
||||
gfxw_text_t *text_handle;
|
||||
long draw_cursor;
|
||||
long foo;
|
||||
@ -396,22 +358,20 @@ sciw_new_edit_control(gfxw_port_t *port, reg_t ID, rect_t zone, char *text, int
|
||||
draw_cursor = draw_cursor > 500000;
|
||||
|
||||
if (!draw_cursor) {
|
||||
text_handle = gfxw_new_text(port->visual->gfx_state, zone,
|
||||
font, text, ALIGN_LEFT, ALIGN_TOP,
|
||||
text_handle = gfxw_new_text(port->visual->gfx_state, zone, font, text, ALIGN_LEFT, ALIGN_TOP,
|
||||
port->color, port->color, port->bgcolor, GFXR_FONT_FLAG_NO_NEWLINES);
|
||||
|
||||
list->add(GFXWC(list), GFXW(text_handle));
|
||||
} else {
|
||||
char *textdup = (char*)sci_malloc(strlen(text) + 1);
|
||||
char *textdup = (char *)sci_malloc(strlen(text) + 1);
|
||||
|
||||
strncpy(textdup, text, cursor);
|
||||
|
||||
if (cursor <= strlen(text))
|
||||
textdup[cursor] = 0; /* terminate */
|
||||
textdup[cursor] = 0; // terminate
|
||||
|
||||
if (cursor > 0) {
|
||||
text_handle = gfxw_new_text(port->visual->gfx_state, zone,
|
||||
font, textdup, ALIGN_LEFT, ALIGN_TOP,
|
||||
text_handle = gfxw_new_text(port->visual->gfx_state, zone, font, textdup, ALIGN_LEFT, ALIGN_TOP,
|
||||
port->color, port->color, port->bgcolor, GFXR_FONT_FLAG_NO_NEWLINES);
|
||||
|
||||
list->add(GFXWC(list), GFXW(text_handle));
|
||||
@ -421,40 +381,33 @@ sciw_new_edit_control(gfxw_port_t *port, reg_t ID, rect_t zone, char *text, int
|
||||
if (cursor < strlen(text)) {
|
||||
textdup[0] = text[cursor];
|
||||
textdup[1] = 0;
|
||||
text_handle = gfxw_new_text(port->visual->gfx_state, zone,
|
||||
font, textdup, ALIGN_LEFT, ALIGN_TOP,
|
||||
text_handle = gfxw_new_text(port->visual->gfx_state, zone, font, textdup, ALIGN_LEFT, ALIGN_TOP,
|
||||
port->bgcolor, port->bgcolor, port->color, GFXR_FONT_FLAG_NO_NEWLINES);
|
||||
list->add(GFXWC(list), GFXW(text_handle));
|
||||
zone.x += text_handle->width;
|
||||
};
|
||||
|
||||
if (cursor + 1 < strlen(text)) {
|
||||
text_handle = gfxw_new_text(port->visual->gfx_state, zone,
|
||||
font, text + cursor + 1, ALIGN_LEFT, ALIGN_TOP,
|
||||
text_handle = gfxw_new_text(port->visual->gfx_state, zone, font, text + cursor + 1, ALIGN_LEFT, ALIGN_TOP,
|
||||
port->color, port->color, port->bgcolor, GFXR_FONT_FLAG_NO_NEWLINES);
|
||||
list->add(GFXWC(list), GFXW(text_handle));
|
||||
zone.x += text_handle->width;
|
||||
};
|
||||
|
||||
if (cursor == strlen(text))
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_line(Common::Point(zone.x, zone.y),
|
||||
Common::Point(zone.x, zone.y + cursor_height - 1),
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_line(Common::Point(zone.x, zone.y), Common::Point(zone.x, zone.y + cursor_height - 1),
|
||||
port->color, GFX_LINE_MODE_FAST, GFX_LINE_STYLE_NORMAL)));
|
||||
free(textdup);
|
||||
}
|
||||
|
||||
|
||||
zone.x = zone.y = 0;
|
||||
|
||||
list->add(GFXWC(list),
|
||||
GFXW(gfxw_new_rect(zone, port->color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_rect(zone, port->color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
gfxw_list_t *
|
||||
sciw_new_icon_control(gfxw_port_t *port, reg_t ID, rect_t zone, int view, int loop, int cel,
|
||||
gfxw_list_t *sciw_new_icon_control(gfxw_port_t *port, reg_t ID, rect_t zone, int view, int loop, int cel,
|
||||
char frame, char inverse) {
|
||||
gfxw_list_t *list = gfxw_new_list(_move_and_extend_rect(zone, Common::Point(port->zone.x, port->zone.y), 1), 0);
|
||||
gfxw_widget_t *icon;
|
||||
@ -483,9 +436,7 @@ sciw_new_icon_control(gfxw_port_t *port, reg_t ID, rect_t zone, int view, int lo
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
gfxw_list_t *
|
||||
sciw_new_list_control(gfxw_port_t *port, reg_t ID, rect_t zone, int font_nr, char **entries_list,
|
||||
gfxw_list_t *sciw_new_list_control(gfxw_port_t *port, reg_t ID, rect_t zone, int font_nr, char **entries_list,
|
||||
int entries_nr, int list_top, int selection, char inverse) {
|
||||
gfxw_list_t *list;
|
||||
|
||||
@ -522,10 +473,9 @@ sciw_new_list_control(gfxw_port_t *port, reg_t ID, rect_t zone, int font_nr, cha
|
||||
zone.x = 1;
|
||||
zone.y = 11;
|
||||
|
||||
/* Draw text */
|
||||
// Draw text
|
||||
|
||||
for (i = list_top; columns-- && i < entries_nr; i++) {
|
||||
|
||||
if (i != selection)
|
||||
list->add(GFXWC(list),
|
||||
GFXW(gfxw_new_text(port->visual->gfx_state, gfx_rect(zone.x, zone.y, zone.xl - 2, font_height),
|
||||
@ -534,8 +484,7 @@ sciw_new_list_control(gfxw_port_t *port, reg_t ID, rect_t zone, int font_nr, cha
|
||||
else {
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_box(port->visual->gfx_state, gfx_rect(zone.x, zone.y, zone.xl - 1, font_height),
|
||||
port->color, port->color, GFX_BOX_SHADE_FLAT)));
|
||||
list->add(GFXWC(list),
|
||||
GFXW(gfxw_new_text(port->visual->gfx_state, gfx_rect(zone.x, zone.y, zone.xl - 2, font_height),
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_text(port->visual->gfx_state, gfx_rect(zone.x, zone.y, zone.xl - 2, font_height),
|
||||
font_nr, entries_list[i], ALIGN_LEFT, ALIGN_TOP,
|
||||
port->bgcolor, port->bgcolor, port->color, GFXR_FONT_FLAG_NO_NEWLINES)));
|
||||
}
|
||||
@ -543,37 +492,29 @@ sciw_new_list_control(gfxw_port_t *port, reg_t ID, rect_t zone, int font_nr, cha
|
||||
zone.y += font_height;
|
||||
}
|
||||
|
||||
/* Draw frames */
|
||||
// Draw frames
|
||||
|
||||
zone.x = 0;
|
||||
zone.y = 0;
|
||||
|
||||
/* Add up arrow */
|
||||
list->add(GFXWC(list),
|
||||
GFXW(gfxw_new_text(port->visual->gfx_state, gfx_rect(1, 0, zone.xl - 2, 8),
|
||||
// Add up arrow
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_text(port->visual->gfx_state, gfx_rect(1, 0, zone.xl - 2, 8),
|
||||
port->font_nr, arr_up, ALIGN_CENTER, ALIGN_CENTER,
|
||||
port->color, port->color, port->bgcolor, 0)));
|
||||
|
||||
/* Add down arrow */
|
||||
list->add(GFXWC(list),
|
||||
GFXW(gfxw_new_text(port->visual->gfx_state, gfx_rect(1, zone.yl - 9, zone.xl - 2, 8),
|
||||
// Add down arrow
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_text(port->visual->gfx_state, gfx_rect(1, zone.yl - 9, zone.xl - 2, 8),
|
||||
port->font_nr, arr_down, ALIGN_CENTER, ALIGN_CENTER,
|
||||
port->color, port->color, port->bgcolor, 0)));
|
||||
|
||||
if (list_top & 1) { /* Hack to work around aggressive caching */
|
||||
|
||||
list->add(GFXWC(list),
|
||||
GFXW(gfxw_new_rect(zone, port->color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
|
||||
|
||||
list->add(GFXWC(list),
|
||||
GFXW(gfxw_new_rect(gfx_rect(zone.x, zone.y + 10, zone.xl, zone.yl - 20),
|
||||
if (list_top & 1) { // Hack to work around aggressive caching
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_rect(zone, port->color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_rect(gfx_rect(zone.x, zone.y + 10, zone.xl, zone.yl - 20),
|
||||
port->color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
|
||||
} else {
|
||||
|
||||
list->add(GFXWC(list),
|
||||
GFXW(gfxw_new_rect(gfx_rect(zone.x, zone.y, zone.xl, zone.yl - 10),
|
||||
port->color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
|
||||
|
||||
list->add(GFXWC(list),
|
||||
GFXW(gfxw_new_rect(gfx_rect(zone.x, zone.y + 10, zone.xl, zone.yl - 10),
|
||||
port->color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
|
||||
@ -582,9 +523,7 @@ sciw_new_list_control(gfxw_port_t *port, reg_t ID, rect_t zone, int font_nr, cha
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
sciw_set_menubar(state_t *s, gfxw_port_t *status_bar, menubar_t *menubar, int selection) {
|
||||
void sciw_set_menubar(state_t *s, gfxw_port_t *status_bar, menubar_t *menubar, int selection) {
|
||||
gfxw_list_t *list = make_titlebar_list(s, status_bar->bounds, status_bar);
|
||||
int offset = MENU_LEFT_BORDER;
|
||||
int i;
|
||||
@ -598,16 +537,13 @@ sciw_set_menubar(state_t *s, gfxw_port_t *status_bar, menubar_t *menubar, int se
|
||||
if (i == selection) {
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_box(status_bar->visual->gfx_state, gfx_rect(offset, 0, width, MENU_BAR_HEIGHT),
|
||||
status_bar->color, status_bar->color, GFX_BOX_SHADE_FLAT)));
|
||||
list->add(GFXWC(list),
|
||||
GFXW(gfxw_new_text(s->gfx_state, gfx_rect(offset, 0, width, MENU_BAR_HEIGHT),
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_text(s->gfx_state, gfx_rect(offset, 0, width, MENU_BAR_HEIGHT),
|
||||
status_bar->font_nr, menu->title, ALIGN_CENTER, ALIGN_CENTER,
|
||||
status_bar->bgcolor, status_bar->bgcolor, status_bar->color, GFXR_FONT_FLAG_NO_NEWLINES)));
|
||||
} else
|
||||
list->add(GFXWC(list),
|
||||
GFXW(gfxw_new_text(s->gfx_state, gfx_rect(offset, 0, width, MENU_BAR_HEIGHT),
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_text(s->gfx_state, gfx_rect(offset, 0, width, MENU_BAR_HEIGHT),
|
||||
status_bar->font_nr, menu->title, ALIGN_CENTER, ALIGN_CENTER,
|
||||
status_bar->color, status_bar->color, status_bar->bgcolor, GFXR_FONT_FLAG_NO_NEWLINES)));
|
||||
|
||||
offset += width;
|
||||
}
|
||||
|
||||
@ -615,8 +551,7 @@ sciw_set_menubar(state_t *s, gfxw_port_t *status_bar, menubar_t *menubar, int se
|
||||
finish_titlebar_list(s, list, status_bar);
|
||||
}
|
||||
|
||||
gfxw_port_t *
|
||||
sciw_new_menu(state_t *s, gfxw_port_t *status_bar, menubar_t *menubar, int selection) {
|
||||
gfxw_port_t *sciw_new_menu(state_t *s, gfxw_port_t *status_bar, menubar_t *menubar, int selection) {
|
||||
gfxw_port_t *retval;
|
||||
menu_t *menu = menubar->menus + selection;
|
||||
rect_t area = gfx_rect(MENU_LEFT_BORDER, 10, 0, 0);
|
||||
@ -637,8 +572,7 @@ sciw_new_menu(state_t *s, gfxw_port_t *status_bar, menubar_t *menubar, int selec
|
||||
area.yl = menu->items_nr * 10;
|
||||
|
||||
retval = sciw_new_window(s, area, status_bar->font_nr, status_bar->color, status_bar->bgcolor,
|
||||
0, status_bar->color, status_bar->bgcolor,
|
||||
NULL, WINDOW_FLAG_NO_DROP_SHADOW | WINDOW_FLAG_TRANSPARENT);
|
||||
0, status_bar->color, status_bar->bgcolor, NULL, WINDOW_FLAG_NO_DROP_SHADOW | WINDOW_FLAG_TRANSPARENT);
|
||||
|
||||
retval->set_visual(GFXW(retval), s->visual);
|
||||
|
||||
@ -650,20 +584,18 @@ sciw_new_menu(state_t *s, gfxw_port_t *status_bar, menubar_t *menubar, int selec
|
||||
|
||||
#define MAGIC_ID_OFFSET 0x2000
|
||||
|
||||
static inline gfx_color_t
|
||||
un_prioritize(gfx_color_t col) {
|
||||
static inline gfx_color_t un_prioritize(gfx_color_t col) {
|
||||
col.priority = -1;
|
||||
col.mask &= ~GFX_MASK_PRIORITY;
|
||||
|
||||
return col;
|
||||
}
|
||||
|
||||
gfxw_widget_t *
|
||||
_make_menu_entry(menu_item_t *item, int offset, int width, gfxw_port_t *port, gfx_color_t color, gfx_color_t bgcolor, int ID, int gray) {
|
||||
rect_t area = gfx_rect(MENU_BOX_LEFT_PADDING, 0, width - MENU_BOX_LEFT_PADDING, 10);
|
||||
rect_t list_area = gfx_rect(port->zone.x, area.y + offset + port->zone.y, width, area.yl);
|
||||
gfxw_list_t *list = (gfxw_list_t *) gfxw_set_id(GFXW(gfxw_new_list(list_area, 0)), ID, GFXW_NO_ID);
|
||||
gfx_color_t xcolor = {{0, 0, 0, 0}, 0, 0, 0, 0};
|
||||
gfxw_widget_t *_make_menu_entry(menu_item_t *item, int offset, int width, gfxw_port_t *port, gfx_color_t color, gfx_color_t bgcolor, int ID, int gray) {
|
||||
rect_t area = gfx_rect(MENU_BOX_LEFT_PADDING, 0, width - MENU_BOX_LEFT_PADDING, 10);
|
||||
rect_t list_area = gfx_rect(port->zone.x, area.y + offset + port->zone.y, width, area.yl);
|
||||
gfxw_list_t *list = (gfxw_list_t *) gfxw_set_id(GFXW(gfxw_new_list(list_area, 0)), ID, GFXW_NO_ID);
|
||||
gfx_color_t xcolor = {{0, 0, 0, 0}, 0, 0, 0, 0};
|
||||
|
||||
color = un_prioritize(color);
|
||||
bgcolor = un_prioritize(bgcolor);
|
||||
@ -683,8 +615,7 @@ _make_menu_entry(menu_item_t *item, int offset, int width, gfxw_port_t *port, gf
|
||||
return GFXW(list);
|
||||
}
|
||||
|
||||
gfxw_widget_t *
|
||||
_make_menu_hbar(int offset, int width, gfxw_port_t *port, gfx_color_t color, gfx_color_t bgcolor, int ID) {
|
||||
gfxw_widget_t *_make_menu_hbar(int offset, int width, gfxw_port_t *port, gfx_color_t color, gfx_color_t bgcolor, int ID) {
|
||||
rect_t area = gfx_rect(0, 0, width, 10);
|
||||
rect_t list_area = gfx_rect(area.x + port->zone.x, area.y + offset + port->zone.y, area.xl, area.yl);
|
||||
gfxw_list_t *list = (gfxw_list_t *) gfxw_set_id(GFXW(gfxw_new_list(list_area, 0)), ID, GFXW_NO_ID);
|
||||
@ -693,16 +624,13 @@ _make_menu_hbar(int offset, int width, gfxw_port_t *port, gfx_color_t color, gfx
|
||||
bgcolor = un_prioritize(bgcolor);
|
||||
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_box(port->visual->gfx_state, area, bgcolor, bgcolor, GFX_BOX_SHADE_FLAT)));
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_line(Common::Point(0, 5),
|
||||
Common::Point(width, 5),
|
||||
color,
|
||||
list->add(GFXWC(list), GFXW(gfxw_new_line(Common::Point(0, 5), Common::Point(width, 5), color,
|
||||
GFX_LINE_MODE_FAST, GFX_LINE_STYLE_STIPPLED)));
|
||||
|
||||
return GFXW(list);
|
||||
}
|
||||
|
||||
gfxw_port_t *
|
||||
sciw_unselect_item(state_t *s, gfxw_port_t *menu_port, menu_t *menu, int selection) {
|
||||
gfxw_port_t *sciw_unselect_item(state_t *s, gfxw_port_t *menu_port, menu_t *menu, int selection) {
|
||||
menu_item_t *item = menu->items + selection;
|
||||
|
||||
if (selection < 0 || selection >= menu->items_nr)
|
||||
@ -710,19 +638,16 @@ sciw_unselect_item(state_t *s, gfxw_port_t *menu_port, menu_t *menu, int selecti
|
||||
|
||||
if (item->type == MENU_TYPE_NORMAL)
|
||||
menu_port->add(GFXWC(menu_port), GFXW(_make_menu_entry(item, selection * 10, menu_port->zone.xl + 1,
|
||||
menu_port, menu_port->color,
|
||||
menu_port->bgcolor, selection + MAGIC_ID_OFFSET,
|
||||
menu_port, menu_port->color, menu_port->bgcolor, selection + MAGIC_ID_OFFSET,
|
||||
item->enabled)));
|
||||
else
|
||||
menu_port->add(GFXWC(menu_port), GFXW(_make_menu_hbar(selection * 10, menu_port->zone.xl + 1,
|
||||
menu_port, menu_port->color,
|
||||
menu_port->bgcolor, selection + MAGIC_ID_OFFSET)));
|
||||
menu_port, menu_port->color, menu_port->bgcolor, selection + MAGIC_ID_OFFSET)));
|
||||
|
||||
return menu_port;
|
||||
}
|
||||
|
||||
gfxw_port_t *
|
||||
sciw_select_item(state_t *s, gfxw_port_t *menu_port, menu_t *menu, int selection) {
|
||||
gfxw_port_t *sciw_select_item(state_t *s, gfxw_port_t *menu_port, menu_t *menu, int selection) {
|
||||
menu_item_t *item = menu->items + selection;
|
||||
|
||||
if (selection < 0 || selection >= menu->items_nr)
|
||||
@ -730,13 +655,11 @@ sciw_select_item(state_t *s, gfxw_port_t *menu_port, menu_t *menu, int selection
|
||||
|
||||
if (item->type == MENU_TYPE_NORMAL)
|
||||
menu_port->add(GFXWC(menu_port), GFXW(_make_menu_entry(item, selection * 10, menu_port->zone.xl + 1,
|
||||
menu_port, menu_port->bgcolor,
|
||||
menu_port->color, selection + MAGIC_ID_OFFSET,
|
||||
menu_port, menu_port->bgcolor, menu_port->color, selection + MAGIC_ID_OFFSET,
|
||||
item->enabled)));
|
||||
else
|
||||
menu_port->add(GFXWC(menu_port), GFXW(_make_menu_hbar(selection * 10, menu_port->zone.xl + 1,
|
||||
menu_port, menu_port->bgcolor,
|
||||
menu_port->color, selection + MAGIC_ID_OFFSET)));
|
||||
menu_port, menu_port->bgcolor, menu_port->color, selection + MAGIC_ID_OFFSET)));
|
||||
|
||||
return menu_port;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user