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 }