Menu: wrap around options in settings with more than two parameters (except h/vmask due to (my) logical intuition)

This commit is contained in:
borti4938 2016-04-06 07:48:18 +02:00
parent f502b2e46c
commit 50badcce32

64
software/sys_controller/av_controller.c Normal file → Executable file
View File

@ -744,17 +744,17 @@ void display_menu(alt_u8 forcedisp)
switch (menu[menu_page].id) { switch (menu[menu_page].id) {
case SCANLINE_MODE: case SCANLINE_MODE:
if ((code == VAL_MINUS) && (tc.sl_mode > 0)) if (code == VAL_MINUS)
tc.sl_mode--; tc.sl_mode = tc.sl_mode ? tc.sl_mode-1 : SL_MODE_MAX;
else if ((code == VAL_PLUS) && (tc.sl_mode < SL_MODE_MAX)) else if (code == VAL_PLUS)
tc.sl_mode++; tc.sl_mode = tc.sl_mode < SL_MODE_MAX ? tc.sl_mode+1 : 0;
strncpy(menu_row2, sl_mode_desc[tc.sl_mode], LCD_ROW_LEN+1); strncpy(menu_row2, sl_mode_desc[tc.sl_mode], LCD_ROW_LEN+1);
break; break;
case SCANLINE_STRENGTH: case SCANLINE_STRENGTH:
if ((code == VAL_MINUS) && (tc.sl_str > 0)) if (code == VAL_MINUS)
tc.sl_str--; tc.sl_str = tc.sl_str ? tc.sl_str-1 : SCANLINESTR_MAX;
else if ((code == VAL_PLUS) && (tc.sl_str < SCANLINESTR_MAX)) else if (code == VAL_PLUS)
tc.sl_str++; tc.sl_str = tc.sl_str < SCANLINESTR_MAX ? tc.sl_str+1 : 0;
sniprintf(menu_row2, LCD_ROW_LEN+1, "%u%%", ((tc.sl_str+1)*125)/10); sniprintf(menu_row2, LCD_ROW_LEN+1, "%u%%", ((tc.sl_str+1)*125)/10);
break; break;
case SCANLINE_ID: case SCANLINE_ID:
@ -777,17 +777,17 @@ void display_menu(alt_u8 forcedisp)
sniprintf(menu_row2, LCD_ROW_LEN+1, "%u pixels", tc.v_mask<<2); sniprintf(menu_row2, LCD_ROW_LEN+1, "%u pixels", tc.v_mask<<2);
break; break;
case SAMPLER_480P: case SAMPLER_480P:
if ((code == VAL_MINUS) && (tc.s480p_mode > 0)) if (code == VAL_MINUS)
tc.s480p_mode--; tc.s480p_mode = tc.s480p_mode ? tc.s480p_mode-1 : S480P_MODE_MAX;
else if ((code == VAL_PLUS) && (tc.s480p_mode < S480P_MODE_MAX)) else if (code == VAL_PLUS)
tc.s480p_mode++; tc.s480p_mode = tc.s480p_mode < S480P_MODE_MAX ? tc.s480p_mode+1 : 0;
strncpy(menu_row2, s480p_desc[tc.s480p_mode], LCD_ROW_LEN+1); strncpy(menu_row2, s480p_desc[tc.s480p_mode], LCD_ROW_LEN+1);
break; break;
case SAMPLER_PHASE: case SAMPLER_PHASE:
if ((code == VAL_MINUS) && (tc.sampler_phase > SAMPLER_PHASE_MIN)) if (code == VAL_MINUS)
tc.sampler_phase--; tc.sampler_phase = tc.sampler_phase > SAMPLER_PHASE_MIN ? tc.sampler_phase-1 : SAMPLER_PHASE_MAX;
else if ((code == VAL_PLUS) && (tc.sampler_phase < SAMPLER_PHASE_MAX)) else if (code == VAL_PLUS)
tc.sampler_phase++; tc.sampler_phase = tc.sampler_phase < SAMPLER_PHASE_MAX ? tc.sampler_phase+1 : SAMPLER_PHASE_MIN;
sniprintf(menu_row2, LCD_ROW_LEN+1, "%d deg", ((tc.sampler_phase-SAMPLER_PHASE_MIN)*1125)/100); sniprintf(menu_row2, LCD_ROW_LEN+1, "%d deg", ((tc.sampler_phase-SAMPLER_PHASE_MIN)*1125)/100);
break; break;
case YPBPR_COLORSPACE: case YPBPR_COLORSPACE:
@ -796,24 +796,24 @@ void display_menu(alt_u8 forcedisp)
strncpy(menu_row2, csc_coeffs[tc.ypbpr_cs].name, LCD_ROW_LEN+1); strncpy(menu_row2, csc_coeffs[tc.ypbpr_cs].name, LCD_ROW_LEN+1);
break; break;
case SYNC_THOLD: case SYNC_THOLD:
if ((code == VAL_MINUS) && (tc.sync_thold > SYNC_THOLD_MIN)) if (code == VAL_MINUS)
tc.sync_thold--; tc.sync_thold = tc.sync_thold > SYNC_THOLD_MIN ? tc.sync_thold-1 : SYNC_THOLD_MAX;
else if ((code == VAL_PLUS) && (tc.sync_thold < SYNC_THOLD_MAX)) else if (code == VAL_PLUS)
tc.sync_thold++; tc.sync_thold = tc.sync_thold < SYNC_THOLD_MAX ? tc.sync_thold+1 : SYNC_THOLD_MIN;
sniprintf(menu_row2, LCD_ROW_LEN+1, "%d mV", ((tc.sync_thold-SYNC_THOLD_MIN)*1127)/100); sniprintf(menu_row2, LCD_ROW_LEN+1, "%d mV", ((tc.sync_thold-SYNC_THOLD_MIN)*1127)/100);
break; break;
case SYNC_LPF: case SYNC_LPF:
if ((code == VAL_MINUS) && (tc.sync_lpf > 0)) if (code == VAL_MINUS)
tc.sync_lpf--; tc.sync_lpf = tc.sync_lpf ? tc.sync_lpf-1 : SYNC_LPF_MAX;
else if ((code == VAL_PLUS) && (tc.sync_lpf < SYNC_LPF_MAX)) else if (code == VAL_PLUS)
tc.sync_lpf++; tc.sync_lpf = tc.sync_lpf < SYNC_LPF_MAX ? tc.sync_lpf+1 : 0;
strncpy(menu_row2, sync_lpf_desc[tc.sync_lpf], LCD_ROW_LEN+1); strncpy(menu_row2, sync_lpf_desc[tc.sync_lpf], LCD_ROW_LEN+1);
break; break;
case VIDEO_LPF: case VIDEO_LPF:
if ((code == VAL_MINUS) && (tc.video_lpf > 0)) if (code == VAL_MINUS)
tc.video_lpf--; tc.video_lpf = tc.video_lpf ? tc.video_lpf-1 : VIDEO_LPF_MAX;
else if ((code == VAL_PLUS) && (tc.video_lpf < VIDEO_LPF_MAX)) else if (code == VAL_PLUS)
tc.video_lpf++; tc.video_lpf = tc.video_lpf < VIDEO_LPF_MAX ? tc.video_lpf+1 : 0;
strncpy(menu_row2, video_lpf_desc[tc.video_lpf], LCD_ROW_LEN+1); strncpy(menu_row2, video_lpf_desc[tc.video_lpf], LCD_ROW_LEN+1);
break; break;
case LINETRIPLE_ENABLE: case LINETRIPLE_ENABLE:
@ -822,10 +822,10 @@ void display_menu(alt_u8 forcedisp)
sniprintf(menu_row2, LCD_ROW_LEN+1, tc.linemult_target ? "On" : "Off"); sniprintf(menu_row2, LCD_ROW_LEN+1, tc.linemult_target ? "On" : "Off");
break; break;
case LINETRIPLE_MODE: case LINETRIPLE_MODE:
if ((code == VAL_MINUS) && (tc.l3_mode > 0)) if (code == VAL_MINUS)
tc.l3_mode--; tc.l3_mode = tc.l3_mode ? tc.l3_mode-1 : L3_MODE_MAX;
else if ((code == VAL_PLUS) && (tc.l3_mode < L3_MODE_MAX)) else if (code == VAL_PLUS)
tc.l3_mode++; tc.l3_mode = tc.l3_mode < L3_MODE_MAX ? tc.l3_mode+1 : 0;
strncpy(menu_row2, l3_mode_desc[tc.l3_mode], LCD_ROW_LEN+1); strncpy(menu_row2, l3_mode_desc[tc.l3_mode], LCD_ROW_LEN+1);
break; break;
case TX_MODE: case TX_MODE: