Mercurial > repos > blastem
comparison nuklear_ui/blastem_nuklear.c @ 1494:8be6ea919300 nuklear_ui
Fleshed out audio settings menu
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 06 Dec 2017 19:29:16 -0800 |
parents | 24f44f26b74d |
children | 050a5b032bc5 |
comparison
equal
deleted
inserted
replaced
1493:24f44f26b74d | 1494:8be6ea919300 |
---|---|
414 nk_end(context); | 414 nk_end(context); |
415 } | 415 } |
416 } | 416 } |
417 void view_audio_settings(struct nk_context *context) | 417 void view_audio_settings(struct nk_context *context) |
418 { | 418 { |
419 | 419 const char *rates[] = { |
420 "192000", | |
421 "96000", | |
422 "48000", | |
423 "44100", | |
424 "22050" | |
425 }; | |
426 const char *sizes[] = { | |
427 "1024", | |
428 "512", | |
429 "256", | |
430 "128", | |
431 "64" | |
432 }; | |
433 const uint32_t num_rates = sizeof(rates)/sizeof(*rates); | |
434 const uint32_t num_sizes = sizeof(sizes)/sizeof(*sizes); | |
435 static int32_t selected_rate = -1; | |
436 static int32_t selected_size = -1; | |
437 if (selected_rate < 0 || selected_size < 0) { | |
438 char *rate = tern_find_path_default(config, "audio\0rate\0", (tern_val){.ptrval = "48000"}, TVAL_PTR).ptrval; | |
439 for (uint32_t i = 0; i < num_rates; i++) | |
440 { | |
441 if (!strcmp(rate, rates[i])) { | |
442 selected_rate = i; | |
443 break; | |
444 } | |
445 } | |
446 if (selected_rate < 0) { | |
447 //better solution would be to add the custom rate to the rate list, but this is probably sufficient for now | |
448 selected_rate = 2; | |
449 } | |
450 char *size = tern_find_path_default(config, "audio\0buffer\0", (tern_val){.ptrval = "512"}, TVAL_PTR).ptrval; | |
451 for (uint32_t i = 0; i < num_sizes; i++) | |
452 { | |
453 if (!strcmp(size, sizes[i])) { | |
454 selected_size = i; | |
455 break; | |
456 } | |
457 } | |
458 if (selected_size < 0) { | |
459 //better solution would be to add the custom rate to the rate list, but this is probably sufficient for now | |
460 selected_size = 2; | |
461 } | |
462 } | |
463 uint32_t width = render_width(); | |
464 uint32_t height = render_height(); | |
465 if (nk_begin(context, "Audio Settings", nk_rect(0, 0, width, height), 0)) { | |
466 nk_layout_row_static(context, 30, width > 300 ? 300 : width, 2); | |
467 nk_label(context, "Rate in Hz", NK_TEXT_LEFT); | |
468 int32_t next_selected = nk_combo(context, rates, num_rates, selected_rate, 30, nk_vec2(300, 300)); | |
469 if (next_selected != selected_rate) { | |
470 config = tern_insert_path(config, "audio\0rate\0", (tern_val){.ptrval = strdup(rates[next_selected])}, TVAL_PTR); | |
471 selected_rate = next_selected; | |
472 } | |
473 nk_label(context, "Buffer Samples", NK_TEXT_LEFT); | |
474 next_selected = nk_combo(context, sizes, num_sizes, selected_size, 30, nk_vec2(300, 300)); | |
475 if (next_selected != selected_size) { | |
476 config = tern_insert_path(config, "audio\0buffer\0", (tern_val){.ptrval = strdup(sizes[next_selected])}, TVAL_PTR); | |
477 selected_size = next_selected; | |
478 } | |
479 settings_int_input(context, "Lowpass Cutoff Hz", "audio\0lowpass_cutoff\0", "3390"); | |
480 if (nk_button_label(context, "Back")) { | |
481 pop_view(); | |
482 } | |
483 nk_end(context); | |
484 } | |
420 } | 485 } |
421 void view_system_settings(struct nk_context *context) | 486 void view_system_settings(struct nk_context *context) |
422 { | 487 { |
423 | 488 |
424 } | 489 } |