+#if 1
+static void drawSetupValue(int screen_pos, int setup_info_pos_raw)
+{
+ int si_pos = (setup_info_pos_raw < 0 ? screen_pos : setup_info_pos_raw);
+ struct TokenInfo *si = &setup_info[si_pos];
+ boolean font_draw_xoffset_modified = FALSE;
+ int font_draw_xoffset_old = -1;
+ int xoffset = (num_setup_info < max_setup_info ? -1 * 1 : 0);
+ int menu_screen_value_xpos = MENU_SCREEN_VALUE_XPOS + xoffset;
+ int menu_screen_max_xpos = MENU_SCREEN_MAX_XPOS + xoffset;
+ int xpos = menu_screen_value_xpos;
+ int ypos = MENU_SCREEN_START_YPOS + screen_pos;
+ int startx = mSX + xpos * 32;
+ int starty = mSY + ypos * 32;
+ int font_nr, font_width;
+#if 0
+ int font_height;
+#endif
+ int type = si->type;
+ void *value = si->value;
+ char *value_string = getSetupValue(type, value);
+#if 1
+ int i;
+#endif
+
+ if (value_string == NULL)
+ return;
+
+ if (type & TYPE_KEY)
+ {
+ xpos = MENU_SCREEN_START_XPOS;
+
+ if (type & TYPE_QUERY)
+ value_string = "<press key>";
+ }
+ else if (type & TYPE_STRING)
+ {
+ int max_value_len = (SCR_FIELDX - 2) * 2;
+
+ xpos = MENU_SCREEN_START_XPOS;
+
+ if (strlen(value_string) > max_value_len)
+ value_string[max_value_len] = '\0';
+ }
+ else if (type & TYPE_YES_NO_AUTO)
+ {
+ xpos = menu_screen_value_xpos - 1;
+ }
+
+ startx = mSX + xpos * 32;
+ starty = mSY + ypos * 32;
+ font_nr = getSetupValueFont(type, value);
+ font_width = getFontWidth(font_nr);
+#if 0
+ font_height = getFontHeight(font_nr);
+#endif
+
+ /* downward compatibility correction for Juergen Bonhagen's menu settings */
+ if (1 && setup_mode != SETUP_MODE_INPUT)
+ {
+ int max_menu_text_length_big = (menu_screen_value_xpos -
+ MENU_SCREEN_START_XPOS);
+ int max_menu_text_length_medium = max_menu_text_length_big * 2;
+ int check_font_nr = FONT_OPTION_ON; /* known font that needs correction */
+ int font1_xoffset = getFontBitmapInfo(font_nr)->draw_xoffset;
+ int font2_xoffset = getFontBitmapInfo(check_font_nr)->draw_xoffset;
+ int text_startx = mSX + MENU_SCREEN_START_XPOS * 32;
+ int text_font_nr = getSetupTextFont(FONT_MENU_2);
+ int text_font_xoffset = getFontBitmapInfo(text_font_nr)->draw_xoffset;
+ int text_width = max_menu_text_length_medium * getFontWidth(text_font_nr);
+ boolean correct_font_draw_xoffset = FALSE;
+
+ if (xpos == MENU_SCREEN_START_XPOS &&
+ startx + font1_xoffset < text_startx + text_font_xoffset)
+ correct_font_draw_xoffset = TRUE;
+
+ if (xpos == menu_screen_value_xpos &&
+ startx + font2_xoffset < text_startx + text_width + text_font_xoffset)
+ correct_font_draw_xoffset = TRUE;
+
+ /* 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
+
+ // printf("::: startx == %d\n", startx);
+
+ DrawText(startx, starty, value_string, font_nr);
+
+ if (font_draw_xoffset_modified)
+ getFontBitmapInfo(font_nr)->draw_xoffset = font_draw_xoffset_old;
+}
+
+#else
+