Pass draw_item newmenu_item by reference
This commit is contained in:
parent
e2204cc8e5
commit
c66a5276b7
|
@ -417,12 +417,12 @@ static void nm_string_inputbox(grs_canvas &canvas, const int w, const int x, con
|
|||
gr_string(canvas, *canvas.cv_font, x + w1, y, CURSOR_STRING);
|
||||
}
|
||||
|
||||
static void draw_item(grs_canvas &canvas, newmenu_item *item, int is_current, int tiny, int tabs_flag, int scroll_offset)
|
||||
static void draw_item(grs_canvas &canvas, newmenu_item &item, int is_current, int tiny, int tabs_flag, int scroll_offset)
|
||||
{
|
||||
if (tiny)
|
||||
{
|
||||
int r, g, b;
|
||||
if (item->text[0]=='\t')
|
||||
if (item.text[0] == '\t')
|
||||
r = g = b = 63;
|
||||
else if (is_current)
|
||||
r = 57, g = 49, b = 20;
|
||||
|
@ -436,52 +436,53 @@ static void draw_item(grs_canvas &canvas, newmenu_item *item, int is_current, in
|
|||
}
|
||||
|
||||
const int line_spacing = static_cast<int>(LINE_SPACING(*canvas.cv_font, *GAME_FONT));
|
||||
switch( item->type ) {
|
||||
switch(item.type)
|
||||
{
|
||||
case NM_TYPE_SLIDER:
|
||||
{
|
||||
int i;
|
||||
auto &slider = item->slider();
|
||||
if (item->value < slider.min_value)
|
||||
item->value = slider.min_value;
|
||||
if (item->value > slider.max_value)
|
||||
item->value = slider.max_value;
|
||||
i = snprintf(item->saved_text.data(), item->saved_text.size(), "%s\t", item->text);
|
||||
prepare_slider_text(item->saved_text, i, slider.max_value - slider.min_value + 1);
|
||||
item->saved_text[item->value+1+strlen(item->text)+1] = SLIDER_MARKER[0];
|
||||
nm_string_slider(canvas, item->w, item->x, item->y - (line_spacing * scroll_offset), item->saved_text.data());
|
||||
auto &slider = item.slider();
|
||||
if (item.value < slider.min_value)
|
||||
item.value = slider.min_value;
|
||||
if (item.value > slider.max_value)
|
||||
item.value = slider.max_value;
|
||||
i = snprintf(item.saved_text.data(), item.saved_text.size(), "%s\t", item.text);
|
||||
prepare_slider_text(item.saved_text, i, slider.max_value - slider.min_value + 1);
|
||||
item.saved_text[item.value + 1 + strlen(item.text) + 1] = SLIDER_MARKER[0];
|
||||
nm_string_slider(canvas, item.w, item.x, item.y - (line_spacing * scroll_offset), item.saved_text.data());
|
||||
}
|
||||
break;
|
||||
case NM_TYPE_INPUT_MENU:
|
||||
if (item->imenu().group == 0)
|
||||
if (item.imenu().group == 0)
|
||||
{
|
||||
case NM_TYPE_TEXT:
|
||||
case NM_TYPE_MENU:
|
||||
nm_string(canvas, item->w, item->x, item->y - (line_spacing * scroll_offset), item->text, tabs_flag);
|
||||
nm_string(canvas, item.w, item.x, item.y - (line_spacing * scroll_offset), item.text, tabs_flag);
|
||||
break;
|
||||
}
|
||||
DXX_BOOST_FALLTHROUGH;
|
||||
case NM_TYPE_INPUT:
|
||||
nm_string_inputbox(canvas, item->w, item->x, item->y - (line_spacing * scroll_offset), item->text, is_current);
|
||||
nm_string_inputbox(canvas, item.w, item.x, item.y - (line_spacing * scroll_offset), item.text, is_current);
|
||||
break;
|
||||
case NM_TYPE_CHECK:
|
||||
nm_string(canvas, item->w, item->x, item->y - (line_spacing * scroll_offset), item->text, tabs_flag);
|
||||
nm_rstring(canvas, item->right_offset, item->x, item->y - (line_spacing * scroll_offset), item->value ? CHECKED_CHECK_BOX : NORMAL_CHECK_BOX);
|
||||
nm_string(canvas, item.w, item.x, item.y - (line_spacing * scroll_offset), item.text, tabs_flag);
|
||||
nm_rstring(canvas, item.right_offset, item.x, item.y - (line_spacing * scroll_offset), item.value ? CHECKED_CHECK_BOX : NORMAL_CHECK_BOX);
|
||||
break;
|
||||
case NM_TYPE_RADIO:
|
||||
nm_string(canvas, item->w, item->x, item->y - (line_spacing * scroll_offset), item->text, tabs_flag);
|
||||
nm_rstring(canvas, item->right_offset, item->x, item->y - (line_spacing * scroll_offset), item->value ? CHECKED_RADIO_BOX : NORMAL_RADIO_BOX);
|
||||
nm_string(canvas, item.w, item.x, item.y - (line_spacing * scroll_offset), item.text, tabs_flag);
|
||||
nm_rstring(canvas, item.right_offset, item.x, item.y - (line_spacing * scroll_offset), item.value ? CHECKED_RADIO_BOX : NORMAL_RADIO_BOX);
|
||||
break;
|
||||
case NM_TYPE_NUMBER:
|
||||
{
|
||||
char text[sizeof("-2147483647")];
|
||||
auto &number = item->number();
|
||||
if (item->value < number.min_value)
|
||||
item->value = number.min_value;
|
||||
if (item->value > number.max_value)
|
||||
item->value = number.max_value;
|
||||
nm_string(canvas, item->w, item->x, item->y - (line_spacing * scroll_offset), item->text, tabs_flag);
|
||||
snprintf(text, sizeof(text), "%d", item->value );
|
||||
nm_rstring(canvas, item->right_offset, item->x, item->y - (line_spacing * scroll_offset), text);
|
||||
auto &number = item.number();
|
||||
if (item.value < number.min_value)
|
||||
item.value = number.min_value;
|
||||
if (item.value > number.max_value)
|
||||
item.value = number.max_value;
|
||||
nm_string(canvas, item.w, item.x, item.y - (line_spacing * scroll_offset), item.text, tabs_flag);
|
||||
snprintf(text, sizeof(text), "%d", item.value );
|
||||
nm_rstring(canvas, item.right_offset, item.x, item.y - (line_spacing * scroll_offset), text);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -1492,7 +1493,7 @@ static window_event_result newmenu_draw(window *wind, newmenu *menu)
|
|||
// Redraw everything...
|
||||
for (i=menu->scroll_offset; i<menu->max_displayable+menu->scroll_offset; i++ )
|
||||
{
|
||||
draw_item(*grd_curcanv, &menu->items[i], (i==menu->citem && !menu->all_text),menu->tiny_mode, menu->tabs_flag, menu->scroll_offset);
|
||||
draw_item(*grd_curcanv, menu->items[i], (i==menu->citem && !menu->all_text),menu->tiny_mode, menu->tabs_flag, menu->scroll_offset);
|
||||
}
|
||||
|
||||
if (menu->is_scroll_box)
|
||||
|
|
Loading…
Reference in a new issue