- /* check if setup value would overlap with setup text when printed */
- /* (this can happen for extreme/wrong values for font draw offset) */
- if (correct_font_draw_xoffset)
- {
- font_draw_xoffset_old = getFontBitmapInfo(font_nr)->draw_xoffset;
- font_draw_xoffset_modified = TRUE;
-
- if (type & TYPE_KEY)
- getFontBitmapInfo(font_nr)->draw_xoffset += 2 * getFontWidth(font_nr);
- else if (!(type & TYPE_STRING))
- getFontBitmapInfo(font_nr)->draw_xoffset = text_font_xoffset + 20 -
- MAX_MENU_TEXT_LENGTH_MEDIUM * (16 - getFontWidth(text_font_nr));
- }
- }
-
-#if 0
- DrawBackground(startx, starty, SX + SXSIZE - startx, font_height);
-#else
- for (i = 0; i <= MENU_SCREEN_MAX_XPOS - xpos; i++)
- DrawText(startx + i * font_width, starty, " ", font_nr);
-#endif
-
- DrawText(startx, starty, value_string, font_nr);
-
- if (font_draw_xoffset_modified)
- getFontBitmapInfo(font_nr)->draw_xoffset = font_draw_xoffset_old;
-}
-#endif
-
-#if 1
-static void changeSetupValue(int screen_pos, int setup_info_pos_raw, int dx)
-{
- int si_pos = (setup_info_pos_raw < 0 ? screen_pos : setup_info_pos_raw);
- struct TokenInfo *si = &setup_info[si_pos];
-
- if (si->type & TYPE_BOOLEAN_STYLE)
- {
- *(boolean *)si->value ^= TRUE;
- }
- else if (si->type & TYPE_YES_NO_AUTO)
- {
- *(int *)si->value =
- (dx == -1 ?
- (*(int *)si->value == AUTO ? TRUE :
- *(int *)si->value == TRUE ? FALSE : AUTO) :
- (*(int *)si->value == TRUE ? AUTO :
- *(int *)si->value == AUTO ? FALSE : TRUE));
- }
- else if (si->type & TYPE_KEY)
- {
- Key key;
-
- si->type |= TYPE_QUERY;
- drawSetupValue(screen_pos, setup_info_pos_raw);
- si->type &= ~TYPE_QUERY;
-
- key = getSetupKey();
- if (key != KSYM_UNDEFINED)
- *(Key *)si->value = key;
- }
-
- drawSetupValue(screen_pos, setup_info_pos_raw);
-
- // fullscreen state may have changed at this point
- if (si->value == &setup.fullscreen)
- ToggleFullscreenOrChangeWindowScalingIfNeeded();
-}
-
-#else
-
-static void changeSetupValue(int pos, int dx)
-{
- if (setup_info[pos].type & TYPE_BOOLEAN_STYLE)
- {
- *(boolean *)setup_info[pos].value ^= TRUE;
- }
- else if (setup_info[pos].type & TYPE_YES_NO_AUTO)
- {
- *(int *)setup_info[pos].value =
- (dx == -1 ?
- (*(int *)setup_info[pos].value == AUTO ? TRUE :
- *(int *)setup_info[pos].value == TRUE ? FALSE : AUTO) :
- (*(int *)setup_info[pos].value == TRUE ? AUTO :
- *(int *)setup_info[pos].value == AUTO ? FALSE : TRUE));
- }
- else if (setup_info[pos].type & TYPE_KEY)
- {
- Key key;
-
- setup_info[pos].type |= TYPE_QUERY;
- drawSetupValue(pos, -1);
- setup_info[pos].type &= ~TYPE_QUERY;
-
- key = getSetupKey();
- if (key != KSYM_UNDEFINED)
- *(Key *)setup_info[pos].value = key;
- }
-
- drawSetupValue(pos, -1);
-
- // fullscreen state may have changed at this point
- if (setup_info[pos].value == &setup.fullscreen)
- ToggleFullscreenOrChangeWindowScalingIfNeeded();
-}
-#endif
-
-#if 1