diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2008-11-09 10:28:04 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2008-11-09 10:28:04 +0000 |
commit | 1d2952df8043ae5de3d7927b13422ba9f7fc35c9 (patch) | |
tree | f0f204f4dfc21526cf36f9dfdc750f7557bbf30e /apps | |
parent | c198bac47db4904e8e808c3727eb9f80df33bc1e (diff) | |
download | rockbox-1d2952df8043ae5de3d7927b13422ba9f7fc35c9.tar.gz rockbox-1d2952df8043ae5de3d7927b13422ba9f7fc35c9.zip |
FS#7916 - Adapt graphical EQ to smaller screens (Fixes FS#9517)
This version still isnt ideal, but untill someone has time to do it properly (viewports, get rid of some hardcoded values) this will do.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19051 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/lang/english.lang | 8 | ||||
-rw-r--r-- | apps/menus/eq_menu.c | 326 |
2 files changed, 158 insertions, 176 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 1531e613bd..6b8e0850a4 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang | |||
@@ -10225,11 +10225,11 @@ | |||
10225 | user: | 10225 | user: |
10226 | <source> | 10226 | <source> |
10227 | *: none | 10227 | *: none |
10228 | swcodec: "Edit mode: %s" | 10228 | swcodec: "Edit mode: %s %s" |
10229 | </source> | 10229 | </source> |
10230 | <dest> | 10230 | <dest> |
10231 | *: none | 10231 | *: none |
10232 | swcodec: "Edit mode: %s" | 10232 | swcodec: "Edit mode: %s %s" |
10233 | </dest> | 10233 | </dest> |
10234 | <voice> | 10234 | <voice> |
10235 | *: none | 10235 | *: none |
@@ -10242,11 +10242,11 @@ | |||
10242 | user: | 10242 | user: |
10243 | <source> | 10243 | <source> |
10244 | *: none | 10244 | *: none |
10245 | swcodec: "Cutoff Frequency" | 10245 | swcodec: "Cutoff" |
10246 | </source> | 10246 | </source> |
10247 | <dest> | 10247 | <dest> |
10248 | *: none | 10248 | *: none |
10249 | swcodec: "Cutoff Frequency" | 10249 | swcodec: "Cutoff" |
10250 | </dest> | 10250 | </dest> |
10251 | <voice> | 10251 | <voice> |
10252 | *: none | 10252 | *: none |
diff --git a/apps/menus/eq_menu.c b/apps/menus/eq_menu.c index 279f8255c2..45bf9f41dd 100644 --- a/apps/menus/eq_menu.c +++ b/apps/menus/eq_menu.c | |||
@@ -240,18 +240,19 @@ enum eq_type { | |||
240 | HIGH_SHELF | 240 | HIGH_SHELF |
241 | }; | 241 | }; |
242 | 242 | ||
243 | /* Size of just the slider/srollbar */ | ||
244 | #define SCROLLBAR_SIZE 6 | ||
245 | |||
243 | /* Draw the UI for a whole EQ band */ | 246 | /* Draw the UI for a whole EQ band */ |
244 | static int draw_eq_slider(struct screen * screen, int x, int y, | 247 | static int draw_eq_slider(struct screen * screen, int x, int y, |
245 | int width, int cutoff, int q, int gain, bool selected, | 248 | int width, int cutoff, int q, int gain, bool selected, |
246 | enum eq_slider_mode mode, enum eq_type type) | 249 | enum eq_slider_mode mode, int band) |
247 | { | 250 | { |
248 | char buf[26]; | 251 | char buf[26]; |
249 | const char separator[2] = " "; | ||
250 | int steps, min_item, max_item; | 252 | int steps, min_item, max_item; |
251 | int abs_gain = abs(gain); | 253 | int abs_gain = abs(gain); |
252 | int current_x, total_height, separator_width, separator_height; | 254 | int x1, x2, y1, total_height; |
253 | int w, h; | 255 | int w, h; |
254 | const int slider_height = 6; | ||
255 | 256 | ||
256 | switch(mode) { | 257 | switch(mode) { |
257 | case Q: | 258 | case Q: |
@@ -273,159 +274,108 @@ static int draw_eq_slider(struct screen * screen, int x, int y, | |||
273 | } | 274 | } |
274 | 275 | ||
275 | /* Start two pixels in, one for border, one for margin */ | 276 | /* Start two pixels in, one for border, one for margin */ |
276 | current_x = x + 2; | 277 | x1 = x + 2; |
277 | 278 | y1 = y + 2; | |
278 | /* Figure out how large our separator string is */ | ||
279 | screen->getstringsize(separator, &separator_width, &separator_height); | ||
280 | |||
281 | /* Total height includes margins, text, and line selector */ | ||
282 | total_height = separator_height + slider_height + 2 + 3; | ||
283 | 279 | ||
284 | /* Print out the band label */ | 280 | /* Print out the band label */ |
285 | if (type == LOW_SHELF) { | 281 | if (band == 0) { |
286 | screen->putsxy(current_x, y + 2, "LS:"); | 282 | screen->putsxy(x1, y1, "LS: "); |
287 | screen->getstringsize("LS:", &w, &h); | 283 | screen->getstringsize("LS:", &w, &h); |
288 | } else if (type == HIGH_SHELF) { | 284 | } else if (band == 4) { |
289 | screen->putsxy(current_x, y + 2, "HS:"); | 285 | screen->putsxy(x1, y1, "HS: "); |
290 | screen->getstringsize("HS:", &w, &h); | 286 | screen->getstringsize("HS:", &w, &h); |
291 | } else { | 287 | } else { |
292 | screen->putsxy(current_x, y + 2, "PK:"); | 288 | snprintf(buf, sizeof(buf), "PK%d:", band); |
293 | screen->getstringsize("PK:", &w, &h); | 289 | screen->putsxy(x1, y1, buf); |
294 | } | ||
295 | current_x += w; | ||
296 | |||
297 | /* Print separator */ | ||
298 | screen->set_drawmode(DRMODE_SOLID); | ||
299 | screen->putsxy(current_x, y + 2, separator); | ||
300 | current_x += separator_width; | ||
301 | #if NB_SCREENS > 1 | ||
302 | if (screen->screen_type == SCREEN_REMOTE) { | ||
303 | if (mode == GAIN) { | ||
304 | screen->putsxy(current_x, y + 2, str(LANG_GAIN)); | ||
305 | screen->getstringsize(str(LANG_GAIN), &w, &h); | ||
306 | } else if (mode == CUTOFF) { | ||
307 | screen->putsxy(current_x, y + 2, str(LANG_EQUALIZER_BAND_CUTOFF)); | ||
308 | screen->getstringsize(str(LANG_EQUALIZER_BAND_CUTOFF), &w, &h); | ||
309 | } else { | ||
310 | screen->putsxy(current_x, y + 2, str(LANG_EQUALIZER_BAND_Q)); | ||
311 | screen->getstringsize(str(LANG_EQUALIZER_BAND_Q), &w, &h); | ||
312 | } | ||
313 | |||
314 | /* Draw horizontal slider. Reuse scrollbar for this */ | ||
315 | gui_scrollbar_draw(screen, x + 3, y + h + 3, width - 6, slider_height, steps, | ||
316 | min_item, max_item, HORIZONTAL); | ||
317 | |||
318 | /* Print out cutoff part */ | ||
319 | snprintf(buf, sizeof(buf), "%sGain %s%2d.%ddB",mode==GAIN?" > ":" ", gain < 0 ? "-" : " ", | ||
320 | abs_gain / EQ_USER_DIVISOR, abs_gain % EQ_USER_DIVISOR); | ||
321 | screen->getstringsize(buf, &w, &h); | 290 | screen->getstringsize(buf, &w, &h); |
322 | y = 3*h; | ||
323 | screen->putsxy(0, y, buf); | ||
324 | /* Print out cutoff part */ | ||
325 | snprintf(buf, sizeof(buf), "%sCutoff %5dHz",mode==CUTOFF?" > ":" ", cutoff); | ||
326 | y += h; | ||
327 | screen->putsxy(0, y, buf); | ||
328 | snprintf(buf, sizeof(buf), "%sQ setting %d.%d Q",mode==Q?" > ":" ", q / EQ_USER_DIVISOR, | ||
329 | q % EQ_USER_DIVISOR); | ||
330 | y += h; | ||
331 | screen->putsxy(0, y, buf); | ||
332 | return y; | ||
333 | } | 291 | } |
334 | #endif | ||
335 | |||
336 | /* Print out gain part of status line */ | ||
337 | snprintf(buf, sizeof(buf), "%s%2d.%ddB", gain < 0 ? "-" : " ", | ||
338 | abs_gain / EQ_USER_DIVISOR, abs_gain % EQ_USER_DIVISOR); | ||
339 | 292 | ||
293 | screen->getstringsize("A", &w, &h); | ||
294 | x1 += 5*w; /* 4 chars for label + 1 space = 5 */ | ||
295 | |||
296 | /* Print out gain part of status line (left justify after label) */ | ||
340 | if (mode == GAIN && selected) | 297 | if (mode == GAIN && selected) |
341 | screen->set_drawmode(DRMODE_SOLID | DRMODE_INVERSEVID); | 298 | screen->set_drawmode(DRMODE_SOLID | DRMODE_INVERSEVID); |
299 | else | ||
300 | screen->set_drawmode(DRMODE_SOLID); | ||
342 | 301 | ||
343 | screen->putsxy(current_x, y + 2, buf); | 302 | snprintf(buf, sizeof(buf), "%s%2d.%d%s", gain < 0 ? "-" : " ", |
303 | abs_gain / EQ_USER_DIVISOR, abs_gain % EQ_USER_DIVISOR, | ||
304 | screen->lcdwidth >= 160 ? "dB" : ""); | ||
305 | screen->putsxy(x1, y1, buf); | ||
344 | screen->getstringsize(buf, &w, &h); | 306 | screen->getstringsize(buf, &w, &h); |
345 | current_x += w; | 307 | x1 += w; |
346 | |||
347 | /* Print separator */ | ||
348 | screen->set_drawmode(DRMODE_SOLID); | ||
349 | screen->putsxy(current_x, y + 2, separator); | ||
350 | current_x += separator_width; | ||
351 | 308 | ||
352 | /* Print out cutoff part of status line */ | 309 | /* Print out Q part of status line (right justify) */ |
353 | snprintf(buf, sizeof(buf), "%5dHz", cutoff); | 310 | if (mode == Q && selected) |
354 | |||
355 | if (mode == CUTOFF && selected) | ||
356 | screen->set_drawmode(DRMODE_SOLID | DRMODE_INVERSEVID); | 311 | screen->set_drawmode(DRMODE_SOLID | DRMODE_INVERSEVID); |
312 | else | ||
313 | screen->set_drawmode(DRMODE_SOLID); | ||
357 | 314 | ||
358 | screen->putsxy(current_x, y + 2, buf); | 315 | snprintf(buf, sizeof(buf), "%d.%d%s", q / EQ_USER_DIVISOR, |
316 | q % EQ_USER_DIVISOR, screen->lcdwidth >= 160 ? " Q" : ""); | ||
359 | screen->getstringsize(buf, &w, &h); | 317 | screen->getstringsize(buf, &w, &h); |
360 | current_x += w; | 318 | x2 = x + width - w - 2; |
361 | 319 | screen->putsxy(x2, y1, buf); | |
362 | /* Print separator */ | ||
363 | screen->set_drawmode(DRMODE_SOLID); | ||
364 | screen->putsxy(current_x, y + 2, separator); | ||
365 | current_x += separator_width; | ||
366 | |||
367 | /* Print out Q part of status line */ | ||
368 | snprintf(buf, sizeof(buf), "%d.%d Q", q / EQ_USER_DIVISOR, | ||
369 | q % EQ_USER_DIVISOR); | ||
370 | 320 | ||
371 | if (mode == Q && selected) | 321 | /* Print out cutoff part of status line (center between gain & Q) */ |
322 | if (mode == CUTOFF && selected) | ||
372 | screen->set_drawmode(DRMODE_SOLID | DRMODE_INVERSEVID); | 323 | screen->set_drawmode(DRMODE_SOLID | DRMODE_INVERSEVID); |
373 | 324 | else | |
374 | screen->putsxy(current_x, y + 2, buf); | 325 | screen->set_drawmode(DRMODE_SOLID); |
326 | |||
327 | snprintf(buf, sizeof(buf), "%5d%s", cutoff, | ||
328 | screen->lcdwidth >= 160 ? "Hz" : ""); | ||
375 | screen->getstringsize(buf, &w, &h); | 329 | screen->getstringsize(buf, &w, &h); |
376 | current_x += w; | 330 | x1 = x1 + (x2 - x1 - w)/2; |
377 | 331 | screen->putsxy(x1, y1, buf); | |
378 | screen->set_drawmode(DRMODE_SOLID); | ||
379 | 332 | ||
380 | /* Draw selection box */ | 333 | /* Draw selection box */ |
334 | total_height = 3 + h + 1 + SCROLLBAR_SIZE + 3; | ||
335 | screen->set_drawmode(DRMODE_SOLID); | ||
381 | if (selected) { | 336 | if (selected) { |
382 | screen->drawrect(x, y, width, total_height); | 337 | screen->drawrect(x, y, width, total_height); |
383 | } | 338 | } |
384 | 339 | ||
385 | /* Draw horizontal slider. Reuse scrollbar for this */ | 340 | /* Draw horizontal slider. Reuse scrollbar for this */ |
386 | gui_scrollbar_draw(screen, x + 3, y + h + 3, width - 6, slider_height, steps, | 341 | gui_scrollbar_draw(screen, x + 3, y1 + h + 1, width - 6, SCROLLBAR_SIZE, |
387 | min_item, max_item, HORIZONTAL); | 342 | steps, min_item, max_item, HORIZONTAL); |
388 | 343 | ||
389 | return total_height; | 344 | return total_height; |
390 | } | 345 | } |
391 | 346 | ||
392 | /* Draw's all the EQ sliders. Returns the total height of the sliders drawn */ | 347 | /* Draw's all the EQ sliders. Returns the total height of the sliders drawn */ |
393 | static int draw_eq_sliders(int current_band, enum eq_slider_mode mode) | 348 | static void draw_eq_sliders(struct screen * screen, int x, int y, |
349 | int nb_eq_sliders, int start_item, | ||
350 | int current_band, enum eq_slider_mode mode) | ||
394 | { | 351 | { |
395 | int i, gain, q, cutoff; | 352 | int i, gain, q, cutoff; |
396 | int height = 2; /* Two pixel margin */ | 353 | int height = y; |
397 | int slider_width[NB_SCREENS]; | ||
398 | int *setting = &global_settings.eq_band0_cutoff; | 354 | int *setting = &global_settings.eq_band0_cutoff; |
399 | enum eq_type type; | ||
400 | 355 | ||
401 | FOR_NB_SCREENS(i) | 356 | start_item = MIN(start_item, 5-nb_eq_sliders); |
402 | slider_width[i] = screens[i].getwidth() - 4; /* 2 pixel margin | ||
403 | each side */ | ||
404 | for (i=0; i<5; i++) { | 357 | for (i=0; i<5; i++) { |
405 | cutoff = *setting++; | 358 | cutoff = *setting++; |
406 | q = *setting++; | 359 | q = *setting++; |
407 | gain = *setting++; | 360 | gain = *setting++; |
408 | 361 | ||
409 | if (i == 0) { | 362 | if (i == start_item + nb_eq_sliders) |
410 | type = LOW_SHELF; | 363 | break; |
411 | } else if (i == 4) { | 364 | |
412 | type = HIGH_SHELF; | 365 | if (i >= start_item) { |
413 | } else { | 366 | height += draw_eq_slider(screen, x, height, screen->lcdwidth - x - 1, |
414 | type = PEAK; | 367 | cutoff, q, gain, i == current_band, mode, |
368 | i); | ||
369 | /* add a margin */ | ||
370 | height++; | ||
415 | } | 371 | } |
416 | height += draw_eq_slider(&(screens[SCREEN_MAIN]), 2, height, | ||
417 | slider_width[SCREEN_MAIN], cutoff, q, gain, | ||
418 | i == current_band, mode, type); | ||
419 | #if NB_SCREENS > 1 | ||
420 | if (i == current_band) | ||
421 | draw_eq_slider(&(screens[SCREEN_REMOTE]), 2, 0, | ||
422 | slider_width[SCREEN_REMOTE], cutoff, q, gain,1, mode, type); | ||
423 | #endif | ||
424 | /* add a margin */ | ||
425 | height += 2; | ||
426 | } | 372 | } |
427 | 373 | if (nb_eq_sliders != 5) | |
428 | return height; | 374 | gui_scrollbar_draw(screen, 0, y, SCROLLBAR_SIZE - 1, |
375 | screen->lcdheight - y, 5, | ||
376 | start_item, start_item + nb_eq_sliders, | ||
377 | VERTICAL); | ||
378 | return; | ||
429 | } | 379 | } |
430 | 380 | ||
431 | /* Provides a graphical means of editing the EQ settings */ | 381 | /* Provides a graphical means of editing the EQ settings */ |
@@ -436,16 +386,34 @@ bool eq_menu_graphical(void) | |||
436 | bool has_changed = false; | 386 | bool has_changed = false; |
437 | int button; | 387 | int button; |
438 | int *setting; | 388 | int *setting; |
439 | int current_band, y, step, fast_step, min, max, voice_unit; | 389 | int current_band, x, y, step, fast_step, min, max, voice_unit; |
440 | enum eq_slider_mode mode; | 390 | enum eq_slider_mode mode; |
441 | enum eq_type current_type; | 391 | enum eq_type current_type; |
442 | char buf[24]; | 392 | char buf[24]; |
443 | int i; | 393 | int i, w, h, height, start_item, nb_eq_sliders[NB_SCREENS]; |
394 | |||
444 | 395 | ||
445 | FOR_NB_SCREENS(i) { | 396 | FOR_NB_SCREENS(i) { |
446 | screens[i].setfont(FONT_SYSFIXED); | 397 | screens[i].setfont(FONT_SYSFIXED); |
447 | screens[i].clear_display(); | 398 | screens[i].clear_display(); |
399 | |||
400 | /* Figure out how many sliders can be drawn on the screen */ | ||
401 | screens[i].getstringsize("A", &w, &h); | ||
402 | |||
403 | /* Total height includes margins (1), text, slider, and line selector (1) */ | ||
404 | height = 3 + h + 1 + SCROLLBAR_SIZE + 3; | ||
405 | nb_eq_sliders[i] = screens[i].lcdheight / height; | ||
406 | |||
407 | /* Make sure the "Edit Mode" text fits too */ | ||
408 | height = nb_eq_sliders[i]*height + h + 2; | ||
409 | if (height > screens[i].lcdheight) | ||
410 | nb_eq_sliders[i]--; | ||
411 | |||
412 | if (nb_eq_sliders[i] > 5) | ||
413 | nb_eq_sliders[i] = 5; | ||
448 | } | 414 | } |
415 | |||
416 | y = h + 1; | ||
449 | 417 | ||
450 | /* Start off editing gain on the first band */ | 418 | /* Start off editing gain on the first band */ |
451 | mode = GAIN; | 419 | mode = GAIN; |
@@ -453,63 +421,77 @@ bool eq_menu_graphical(void) | |||
453 | current_band = 0; | 421 | current_band = 0; |
454 | 422 | ||
455 | while (!exit_request) { | 423 | while (!exit_request) { |
456 | 424 | FOR_NB_SCREENS(i) | |
457 | FOR_NB_SCREENS(i) { | 425 | { |
458 | /* Clear the screen. The drawing routines expect this */ | 426 | screens[i].clear_display(); |
459 | screens[i].clear_display(); | 427 | |
460 | /* Draw equalizer band details */ | 428 | /* Set pointer to the band data currently editable */ |
461 | y = draw_eq_sliders(current_band, mode); | 429 | if (mode == GAIN) { |
462 | } | 430 | /* gain */ |
463 | 431 | setting = &global_settings.eq_band0_gain; | |
464 | /* Set pointer to the band data currently editable */ | 432 | setting += current_band * 3; |
465 | if (mode == GAIN) { | 433 | |
466 | /* gain */ | 434 | step = EQ_GAIN_STEP; |
467 | setting = &global_settings.eq_band0_gain; | 435 | fast_step = EQ_GAIN_FAST_STEP; |
468 | setting += current_band * 3; | 436 | min = EQ_GAIN_MIN; |
469 | 437 | max = EQ_GAIN_MAX; | |
470 | step = EQ_GAIN_STEP; | 438 | voice_unit = UNIT_DB; |
471 | fast_step = EQ_GAIN_FAST_STEP; | ||
472 | min = EQ_GAIN_MIN; | ||
473 | max = EQ_GAIN_MAX; | ||
474 | voice_unit = UNIT_DB; | ||
475 | |||
476 | snprintf(buf, sizeof(buf), str(LANG_SYSFONT_EQUALIZER_EDIT_MODE), | ||
477 | str(LANG_SYSFONT_GAIN)); | ||
478 | |||
479 | screens[SCREEN_MAIN].putsxy(2, y, buf); | ||
480 | } else if (mode == CUTOFF) { | ||
481 | /* cutoff */ | ||
482 | setting = &global_settings.eq_band0_cutoff; | ||
483 | setting += current_band * 3; | ||
484 | |||
485 | step = EQ_CUTOFF_STEP; | ||
486 | fast_step = EQ_CUTOFF_FAST_STEP; | ||
487 | min = EQ_CUTOFF_MIN; | ||
488 | max = EQ_CUTOFF_MAX; | ||
489 | voice_unit = UNIT_HERTZ; | ||
490 | |||
491 | snprintf(buf, sizeof(buf), str(LANG_SYSFONT_EQUALIZER_EDIT_MODE), | ||
492 | str(LANG_SYSFONT_EQUALIZER_BAND_CUTOFF)); | ||
493 | |||
494 | screens[SCREEN_MAIN].putsxy(2, y, buf); | ||
495 | } else { | ||
496 | /* Q */ | ||
497 | setting = &global_settings.eq_band0_q; | ||
498 | setting += current_band * 3; | ||
499 | |||
500 | step = EQ_Q_STEP; | ||
501 | fast_step = EQ_Q_FAST_STEP; | ||
502 | min = EQ_Q_MIN; | ||
503 | max = EQ_Q_MAX; | ||
504 | voice_unit = UNIT_INT; | ||
505 | 439 | ||
506 | snprintf(buf, sizeof(buf), str(LANG_SYSFONT_EQUALIZER_EDIT_MODE), | 440 | snprintf(buf, sizeof(buf), str(LANG_SYSFONT_EQUALIZER_EDIT_MODE), |
507 | str(LANG_EQUALIZER_BAND_Q)); | 441 | str(LANG_SYSFONT_GAIN), "(dB)"); |
508 | 442 | ||
509 | screens[SCREEN_MAIN].putsxy(2, y, buf); | 443 | screens[i].putsxy(0, 0, buf); |
510 | } | 444 | } else if (mode == CUTOFF) { |
445 | /* cutoff */ | ||
446 | setting = &global_settings.eq_band0_cutoff; | ||
447 | setting += current_band * 3; | ||
448 | |||
449 | step = EQ_CUTOFF_STEP; | ||
450 | fast_step = EQ_CUTOFF_FAST_STEP; | ||
451 | min = EQ_CUTOFF_MIN; | ||
452 | max = EQ_CUTOFF_MAX; | ||
453 | voice_unit = UNIT_HERTZ; | ||
454 | |||
455 | snprintf(buf, sizeof(buf), str(LANG_SYSFONT_EQUALIZER_EDIT_MODE), | ||
456 | str(LANG_SYSFONT_EQUALIZER_BAND_CUTOFF), "(Hz)"); | ||
457 | |||
458 | screens[i].putsxy(0, 0, buf); | ||
459 | } else { | ||
460 | /* Q */ | ||
461 | setting = &global_settings.eq_band0_q; | ||
462 | setting += current_band * 3; | ||
463 | |||
464 | step = EQ_Q_STEP; | ||
465 | fast_step = EQ_Q_FAST_STEP; | ||
466 | min = EQ_Q_MIN; | ||
467 | max = EQ_Q_MAX; | ||
468 | voice_unit = UNIT_INT; | ||
469 | |||
470 | snprintf(buf, sizeof(buf), str(LANG_SYSFONT_EQUALIZER_EDIT_MODE), | ||
471 | str(LANG_EQUALIZER_BAND_Q), ""); | ||
472 | |||
473 | screens[i].putsxy(0, 0, buf); | ||
474 | } | ||
475 | |||
476 | /* Draw scrollbar if needed */ | ||
477 | if (nb_eq_sliders[i] != 5) | ||
478 | { | ||
479 | if (current_band == 0) { | ||
480 | start_item = 0; | ||
481 | } else if (current_band == 4) { | ||
482 | start_item = 5 - nb_eq_sliders[i]; | ||
483 | } else { | ||
484 | start_item = current_band - 1; | ||
485 | } | ||
486 | x = SCROLLBAR_SIZE; | ||
487 | } else { | ||
488 | x = 1; | ||
489 | start_item = 0; | ||
490 | } | ||
491 | /* Draw equalizer band details */ | ||
492 | draw_eq_sliders(&screens[i], x, y, nb_eq_sliders[i], start_item, | ||
493 | current_band, mode); | ||
511 | 494 | ||
512 | FOR_NB_SCREENS(i) { | ||
513 | screens[i].update(); | 495 | screens[i].update(); |
514 | } | 496 | } |
515 | 497 | ||