aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/gfx/menubar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/gfx/menubar.cpp')
-rw-r--r--engines/sci/gfx/menubar.cpp163
1 files changed, 62 insertions, 101 deletions
diff --git a/engines/sci/gfx/menubar.cpp b/engines/sci/gfx/menubar.cpp
index e68fed3686..89d2d0335f 100644
--- a/engines/sci/gfx/menubar.cpp
+++ b/engines/sci/gfx/menubar.cpp
@@ -34,16 +34,14 @@
#define SIZE_INF 32767
-menubar_t *
-menubar_new() {
+menubar_t *menubar_new() {
menubar_t *tmp = (menubar_t*)sci_malloc(sizeof(menubar_t));
tmp->menus_nr = 0;
return tmp;
}
-void
-menubar_free(menubar_t *menubar) {
+void menubar_free(menubar_t *menubar) {
int i;
for (i = 0; i < menubar->menus_nr; i++) {
@@ -67,20 +65,18 @@ menubar_free(menubar_t *menubar) {
free(menubar);
}
-
-int
-_menubar_add_menu_item(gfx_state_t *state, menu_t *menu, int type, char *left, char *right,
- int font, int key, int modifiers, int tag, reg_t text_pos)
-/* Returns the total text size, plus MENU_BOX_CENTER_PADDING if (right != NULL) */
-{
+int _menubar_add_menu_item(gfx_state_t *state, menu_t *menu, int type, char *left, char *right,
+ int font, int key, int modifiers, int tag, reg_t text_pos) {
+// Returns the total text size, plus MENU_BOX_CENTER_PADDING if (right != NULL)
menu_item_t *item;
int total_left_size = 0;
int width, height;
if (menu->items_nr == 0) {
- menu->items = (menu_item_t *) sci_malloc(sizeof(menu_item_t));
+ menu->items = (menu_item_t *)sci_malloc(sizeof(menu_item_t));
menu->items_nr = 1;
- } else menu->items = (menu_item_t *) sci_realloc(menu->items, sizeof(menu_item_t) * ++(menu->items_nr));
+ } else
+ menu->items = (menu_item_t *)sci_realloc(menu->items, sizeof(menu_item_t) * ++(menu->items_nr));
item = &(menu->items[menu->items_nr - 1]);
@@ -89,13 +85,13 @@ _menubar_add_menu_item(gfx_state_t *state, menu_t *menu, int type, char *left, c
if ((item->type = type) == MENU_TYPE_HBAR)
return 0;
- /* else assume MENU_TYPE_NORMAL */
+ // else assume MENU_TYPE_NORMAL
item->text = left;
if (right) {
int end = strlen(right);
item->keytext = right;
while (end && isspace(right[end]))
- right[end--] = 0; /* Remove trailing whitespace */
+ right[end--] = 0; // Remove trailing whitespace
item->flags = MENU_ATTRIBUTE_FLAGS_KEY;
item->key = key;
item->modifiers = modifiers;
@@ -105,23 +101,19 @@ _menubar_add_menu_item(gfx_state_t *state, menu_t *menu, int type, char *left, c
}
if (right) {
- gfxop_get_text_params(state, font, right, SIZE_INF, &width, &height, 0,
- NULL, NULL, NULL);
+ gfxop_get_text_params(state, font, right, SIZE_INF, &width, &height, 0, NULL, NULL, NULL);
total_left_size = MENU_BOX_CENTER_PADDING + (item->keytext_size = width);
}
item->enabled = 1;
item->tag = tag;
item->text_pos = text_pos;
- gfxop_get_text_params(state, font, left, SIZE_INF, &width, &height, 0,
- NULL, NULL, NULL);
+ gfxop_get_text_params(state, font, left, SIZE_INF, &width, &height, 0, NULL, NULL, NULL);
return total_left_size + width;
}
-void
-menubar_add_menu(gfx_state_t *state, menubar_t *menubar, char *title, char *entries, int font,
- reg_t entries_base) {
+void menubar_add_menu(gfx_state_t *state, menubar_t *menubar, char *title, char *entries, int font, reg_t entries_base) {
int i, add_freesci = 0;
menu_t *menu;
char tracker;
@@ -135,31 +127,29 @@ menubar_add_menu(gfx_state_t *state, menubar_t *menubar, char *title, char *entr
#ifdef MENU_FREESCI_BLATANT_PLUG
add_freesci = 1;
#endif
- menubar->menus = (menu_t*)sci_malloc(sizeof(menu_t));
+ menubar->menus = (menu_t *)sci_malloc(sizeof(menu_t));
menubar->menus_nr = 1;
- } else menubar->menus = (menu_t*)sci_realloc(menubar->menus, ++(menubar->menus_nr) * sizeof(menu_t));
+ } else
+ menubar->menus = (menu_t *)sci_realloc(menubar->menus, ++(menubar->menus_nr) * sizeof(menu_t));
menu = &(menubar->menus[menubar->menus_nr-1]);
memset(menu, 0, sizeof(menu_t));
menu->items_nr = 0;
menu->title = sci_strdup(title);
- gfxop_get_text_params(state, font, menu->title, SIZE_INF, &(menu->title_width), &height, 0,
- NULL, NULL, NULL);
+ gfxop_get_text_params(state, font, menu->title, SIZE_INF, &(menu->title_width), &height, 0, NULL, NULL, NULL);
do {
tracker = *entries++;
entries_base.offset++;
- if (!left) { /* Left string not finished? */
-
- if (tracker == '=') { /* Hit early-SCI tag assignment? */
-
+ if (!left) { // Left string not finished?
+ if (tracker == '=') { // Hit early-SCI tag assignment?
left = sci_strndup(entries - string_len - 1, string_len);
tag = atoi(entries++);
tracker = *entries++;
}
- if ((tracker == 0 && string_len > 0) || (tracker == '=') || (tracker == ':')) { /* End of entry */
+ if ((tracker == 0 && string_len > 0) || (tracker == '=') || (tracker == ':')) { // End of entry
int entrytype = MENU_TYPE_NORMAL;
char *inleft;
reg_t beginning;
@@ -169,57 +159,54 @@ menubar_add_menu(gfx_state_t *state, menubar_t *menubar, char *title, char *entr
inleft = left;
while (isspace(*inleft))
- inleft++; /* Seek beginning of actual string */
+ inleft++; // Seek beginning of actual string
if (!strncmp(inleft, MENU_HBAR_STRING_1, strlen(MENU_HBAR_STRING_1))
|| !strncmp(inleft, MENU_HBAR_STRING_2, strlen(MENU_HBAR_STRING_2))
|| !strncmp(inleft, MENU_HBAR_STRING_3, strlen(MENU_HBAR_STRING_3))) {
- entrytype = MENU_TYPE_HBAR; /* Horizontal bar */
+ entrytype = MENU_TYPE_HBAR; // Horizontal bar
free(left);
left = NULL;
}
beginning = entries_base;
beginning.offset -= string_len + 1;
- c_width = _menubar_add_menu_item(state, menu, entrytype, left, NULL, font, 0, 0, tag,
- beginning);
+ c_width = _menubar_add_menu_item(state, menu, entrytype, left, NULL, font, 0, 0, tag, beginning);
if (c_width > max_width)
max_width = c_width;
string_len = 0;
- left = NULL; /* Start over */
-
- } else if (tracker == '`') { /* Start of right string */
-
+ left = NULL; // Start over
+ } else if (tracker == '`') { // Start of right string
if (!left) {
left_origin = entries_base;
left_origin.offset -= string_len + 1;
left = sci_strndup(entries - string_len - 1, string_len);
}
- string_len = 0; /* Continue with the right string */
-
- } else string_len++; /* Nothing special */
+ string_len = 0; // Continue with the right string
+ } else
+ string_len++; // Nothing special
- } else { /* Left string finished => working on right string */
- if ((tracker == ':') || (tracker == 0)) { /* End of entry */
+ } else { // Left string finished => working on right string
+ if ((tracker == ':') || (tracker == 0)) { // End of entry
int key, modifiers = 0;
right = sci_strndup(entries - string_len - 1, string_len);
if (right[0] == '#') {
- right[0] = SCI_SPECIAL_CHAR_FUNCTION; /* Function key */
+ right[0] = SCI_SPECIAL_CHAR_FUNCTION; // Function key
key = SCI_K_F1 + ((right[1] - '1') << 8);
if (right[1] == '0')
- key = SCI_K_F10; /* F10 */
+ key = SCI_K_F10; // F10
if (right[2] == '=') {
tag = atoi(right + 3);
right[2] = 0;
};
- } else if (right[0] == '@') { /* Alt key */
- right[0] = SCI_SPECIAL_CHAR_ALT; /* ALT */
+ } else if (right[0] == '@') { // Alt key
+ right[0] = SCI_SPECIAL_CHAR_ALT; // ALT
key = right[1];
modifiers = SCI_EVM_ALT;
@@ -230,11 +217,9 @@ menubar_add_menu(gfx_state_t *state, menubar_t *menubar, char *title, char *entr
tag = atoi(right + 3);
right[2] = 0;
};
-
} else {
-
if (right[0] == '^') {
- right[0] = SCI_SPECIAL_CHAR_CTRL; /* Control key - there must be a replacement... */
+ right[0] = SCI_SPECIAL_CHAR_CTRL; // Control key - there must be a replacement...
key = right[1];
modifiers = SCI_EVM_CTRL;
@@ -245,7 +230,6 @@ menubar_add_menu(gfx_state_t *state, menubar_t *menubar, char *title, char *entr
tag = atoi(right + 3);
right[2] = 0;
}
-
} else {
key = right[0];
if ((key >= 'a') && (key <= 'z'))
@@ -256,16 +240,14 @@ menubar_add_menu(gfx_state_t *state, menubar_t *menubar, char *title, char *entr
right[1] = 0;
}
}
-
if ((key >= 'A') && (key <= 'Z'))
- key = key - 'A' + 'a'; /* Lowercase the key */
+ key = key - 'A' + 'a'; // Lowercase the key
}
-
i = strlen(right);
while (i > 0 && right[--i] == ' ')
- right[i] = 0; /* Cut off chars to the right */
+ right[i] = 0; // Cut off chars to the right
c_width = _menubar_add_menu_item(state, menu, MENU_TYPE_NORMAL, left, right, font, key,
modifiers, tag, left_origin);
@@ -274,16 +256,15 @@ menubar_add_menu(gfx_state_t *state, menubar_t *menubar, char *title, char *entr
max_width = c_width;
string_len = 0;
- left = NULL; /* Start over */
-
- } else string_len++; /* continuing entry */
- } /* right string finished */
+ left = NULL; // Start over
+ } else
+ string_len++; // continuing entry
+ } // right string finished
} while (tracker);
#ifdef MENU_FREESCI_BLATANT_PLUG
if (add_freesci) {
-
char *freesci_text = sci_strdup("About FreeSCI");
c_width = _menubar_add_menu_item(state, menu, MENU_TYPE_NORMAL, freesci_text, NULL, font, 0, 0, 0, NULL_REG);
if (c_width > max_width)
@@ -291,27 +272,21 @@ menubar_add_menu(gfx_state_t *state, menubar_t *menubar, char *title, char *entr
menu->items[menu->items_nr-1].flags = MENU_FREESCI_BLATANT_PLUG;
}
-#endif /* MENU_FREESCI_BLATANT_PLUG */
+#endif
menu->width = max_width;
}
-int
-menubar_match_key(menu_item_t *item, int message, int modifiers) {
- if ((item->key == message)
- && ((modifiers & (SCI_EVM_CTRL | SCI_EVM_ALT)) == item->modifiers))
+int menubar_match_key(menu_item_t *item, int message, int modifiers) {
+ if ((item->key == message) && ((modifiers & (SCI_EVM_CTRL | SCI_EVM_ALT)) == item->modifiers))
return 1;
- if (message == '\t'
- && item->key == 'i'
- && ((modifiers & (SCI_EVM_CTRL | SCI_EVM_ALT)) == 0)
- && item->modifiers == SCI_EVM_CTRL)
- return 1; /* Match TAB to ^I */
+ if (message == '\t' && item->key == 'i' && ((modifiers & (SCI_EVM_CTRL | SCI_EVM_ALT)) == 0) && item->modifiers == SCI_EVM_CTRL)
+ return 1; // Match TAB to ^I
return 0;
}
-int
-menubar_set_attribute(state_t *s, int menu_nr, int item_nr, int attribute, reg_t value) {
+int menubar_set_attribute(state_t *s, int menu_nr, int item_nr, int attribute, reg_t value) {
menubar_t *menubar = s->menubar;
menu_item_t *item;
@@ -328,7 +303,7 @@ menubar_set_attribute(state_t *s, int menu_nr, int item_nr, int attribute, reg_t
case MENU_ATTRIBUTE_SAID:
if (value.segment) {
item->said_pos = value;
- memcpy(item->said, kernel_dereference_bulk_pointer(s, value, 0), MENU_SAID_SPEC_SIZE); /* Copy Said spec */
+ memcpy(item->said, kernel_dereference_bulk_pointer(s, value, 0), MENU_SAID_SPEC_SIZE); // Copy Said spec
item->flags |= MENU_ATTRIBUTE_FLAGS_SAID;
} else
@@ -349,22 +324,18 @@ menubar_set_attribute(state_t *s, int menu_nr, int item_nr, int attribute, reg_t
if (value.segment) {
- /* FIXME: What happens here if <value> is an extended key? Potential bug. LS */
+ // FIXME: What happens here if <value> is an extended key? Potential bug. LS
item->key = value.offset;
item->modifiers = 0;
- item->keytext = (char*)sci_malloc(2);
+ item->keytext = (char *)sci_malloc(2);
item->keytext[0] = value.offset;
item->keytext[1] = 0;
item->flags |= MENU_ATTRIBUTE_FLAGS_KEY;
if ((item->key >= 'A') && (item->key <= 'Z'))
- item->key = item->key - 'A' + 'a'; /* Lowercase the key */
-
-
+ item->key = item->key - 'A' + 'a'; // Lowercase the key
} else {
-
item->keytext = NULL;
item->flags &= ~MENU_ATTRIBUTE_FLAGS_KEY;
-
}
break;
@@ -377,16 +348,14 @@ menubar_set_attribute(state_t *s, int menu_nr, int item_nr, int attribute, reg_t
break;
default:
- sciprintf("Attempt to set invalid attribute of menu %d, item %d: 0x%04x\n",
- menu_nr, item_nr, attribute);
+ sciprintf("Attempt to set invalid attribute of menu %d, item %d: 0x%04x\n", menu_nr, item_nr, attribute);
return 1;
}
return 0;
}
-reg_t
-menubar_get_attribute(state_t *s, int menu_nr, int item_nr, int attribute) {
+reg_t menubar_get_attribute(state_t *s, int menu_nr, int item_nr, int attribute) {
menubar_t *menubar = s->menubar;
menu_item_t *item;
@@ -415,14 +384,12 @@ menubar_get_attribute(state_t *s, int menu_nr, int item_nr, int attribute) {
return make_reg(0, item->tag);
default:
- sciprintf("Attempt to read invalid attribute from menu %d, item %d: 0x%04x\n",
- menu_nr, item_nr, attribute);
+ sciprintf("Attempt to read invalid attribute from menu %d, item %d: 0x%04x\n", menu_nr, item_nr, attribute);
return make_reg(0, -1);
}
}
-int
-menubar_item_valid(state_t *s, int menu_nr, int item_nr) {
+int menubar_item_valid(state_t *s, int menu_nr, int item_nr) {
menubar_t *menubar = s->menubar;
menu_item_t *item;
@@ -434,20 +401,17 @@ menubar_item_valid(state_t *s, int menu_nr, int item_nr) {
item = menubar->menus[menu_nr].items + item_nr;
- if ((item->type == MENU_TYPE_NORMAL)
- && item->enabled)
+ if ((item->type == MENU_TYPE_NORMAL) && item->enabled)
return 1;
- return 0; /* May not be selected */
+ return 0; // May not be selected
}
-
-int
-menubar_map_pointer(state_t *s, int *menu_nr, int *item_nr, gfxw_port_t *port) {
+int menubar_map_pointer(state_t *s, int *menu_nr, int *item_nr, gfxw_port_t *port) {
menubar_t *menubar = s->menubar;
menu_t *menu;
- if (s->gfx_state->pointer_pos.y <= 10) { /* Re-evaulate menu */
+ if (s->gfx_state->pointer_pos.y <= 10) { // Re-evaulate menu
int x = MENU_LEFT_BORDER;
int i;
@@ -464,16 +428,14 @@ menubar_map_pointer(state_t *s, int *menu_nr, int *item_nr, gfxw_port_t *port) {
x = newx;
}
-
return 0;
-
} else {
int row = (s->gfx_state->pointer_pos.y / 10) - 1;
if ((*menu_nr < 0) || (*menu_nr >= menubar->menus_nr))
- return 1; /* No menu */
+ return 1; // No menu
else
- menu = menubar->menus + *menu_nr; /* Menu is valid, assume that it's popped up */
+ menu = menubar->menus + *menu_nr; // Menu is valid, assume that it's popped up
if (menu->items_nr <= row)
return 1;
@@ -482,9 +444,8 @@ menubar_map_pointer(state_t *s, int *menu_nr, int *item_nr, gfxw_port_t *port) {
return 1;
if (menubar_item_valid(s, *menu_nr, row))
- *item_nr = row; /* Only modify if we'll be hitting a valid element */
+ *item_nr = row; // Only modify if we'll be hitting a valid element
return 0;
}
-
}