Skip to content

Commit c802819

Browse files
committed
frontend: Fix a bunch of things and add codeview theming
1 parent 6131205 commit c802819

File tree

11 files changed

+444
-47
lines changed

11 files changed

+444
-47
lines changed

frontend/imgui.cpp

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,87 @@ void set_theme(iris::instance* iris, int theme, bool set_bg_color) {
430430
pstyle.Colors[ImPlotCol_PlotBg] = ImVec4(0.0f, 0.0f, 0.0f, 0.0f);
431431
}
432432

433+
void set_codeview_scheme(iris::instance* iris, int scheme) {
434+
switch (scheme) {
435+
default: case IRIS_CODEVIEW_COLOR_SCHEME_SOLARIZED_DARK: {
436+
iris->codeview_color_text = IM_COL32(131, 148, 150, 255);
437+
iris->codeview_color_comment = IM_COL32(88, 110, 117, 255);
438+
iris->codeview_color_mnemonic = IM_COL32(211, 167, 30, 255);
439+
iris->codeview_color_number = IM_COL32(138, 143, 226, 255);
440+
iris->codeview_color_register = IM_COL32(68, 169, 240, 255);
441+
iris->codeview_color_other = IM_COL32(89, 89, 89, 255);
442+
iris->codeview_color_background = IM_COL32(0, 43, 54, 255);
443+
iris->codeview_color_highlight = IM_COL32(7, 54, 66, 255);
444+
} break;
445+
446+
case IRIS_CODEVIEW_COLOR_SCHEME_SOLARIZED_LIGHT: {
447+
iris->codeview_color_text = IM_COL32(101, 123, 131, 255);
448+
iris->codeview_color_comment = IM_COL32(147, 161, 161, 255);
449+
iris->codeview_color_mnemonic = IM_COL32(147, 101, 21, 255);
450+
iris->codeview_color_number = IM_COL32(101, 123, 179, 255);
451+
iris->codeview_color_register = IM_COL32(38, 139, 210, 255);
452+
iris->codeview_color_other = IM_COL32(88, 110, 117, 255);
453+
iris->codeview_color_background = IM_COL32(253, 246, 227, 255);
454+
iris->codeview_color_highlight = IM_COL32(238, 232, 213, 255);
455+
} break;
456+
457+
case IRIS_CODEVIEW_COLOR_SCHEME_ONE_DARK_PRO: {
458+
iris->codeview_color_text = IM_COL32(171, 178, 191, 255);
459+
iris->codeview_color_comment = IM_COL32(92, 99, 112, 255);
460+
iris->codeview_color_mnemonic = IM_COL32(198, 120, 221, 255);
461+
iris->codeview_color_number = IM_COL32(209, 154, 102, 255);
462+
iris->codeview_color_register = IM_COL32(97, 175, 239, 255);
463+
iris->codeview_color_other = IM_COL32(171, 178, 191, 255);
464+
iris->codeview_color_background = IM_COL32(40, 44, 52, 255);
465+
iris->codeview_color_highlight = IM_COL32(60, 64, 72, 255);
466+
} break;
467+
468+
case IRIS_CODEVIEW_COLOR_SCHEME_CATPPUCCIN_LATTE: {
469+
iris->codeview_color_text = IM_COL32(76, 79, 105, 255);
470+
iris->codeview_color_comment = IM_COL32(124, 127, 147, 255);
471+
iris->codeview_color_mnemonic = IM_COL32(136, 57, 239, 255);
472+
iris->codeview_color_number = IM_COL32(254, 100, 11, 255);
473+
iris->codeview_color_register = IM_COL32(4, 165, 229, 255);
474+
iris->codeview_color_other = IM_COL32(114, 135, 253, 255);
475+
iris->codeview_color_background = IM_COL32(239, 241, 245, 255);
476+
iris->codeview_color_highlight = IM_COL32(204, 208, 218, 255);
477+
} break;
478+
479+
case IRIS_CODEVIEW_COLOR_SCHEME_CATPPUCCIN_FRAPPE: {
480+
iris->codeview_color_text = IM_COL32(198, 208, 245, 255);
481+
iris->codeview_color_comment = IM_COL32(148, 156, 187, 255);
482+
iris->codeview_color_mnemonic = IM_COL32(202, 158, 230, 255);
483+
iris->codeview_color_number = IM_COL32(239, 159, 118, 255);
484+
iris->codeview_color_register = IM_COL32(153, 209, 219, 255);
485+
iris->codeview_color_other = IM_COL32(186, 187, 241, 255);
486+
iris->codeview_color_background = IM_COL32(48, 52, 70, 255);
487+
iris->codeview_color_highlight = IM_COL32(81, 87, 109, 255);
488+
} break;
489+
490+
case IRIS_CODEVIEW_COLOR_SCHEME_CATPPUCCIN_MACCHIATO: {
491+
iris->codeview_color_text = IM_COL32(174, 178, 208, 255);
492+
iris->codeview_color_comment = IM_COL32(134, 138, 162, 255);
493+
iris->codeview_color_mnemonic = IM_COL32(190, 132, 255, 255);
494+
iris->codeview_color_number = IM_COL32(245, 142, 110, 255);
495+
iris->codeview_color_register = IM_COL32(125, 182, 191, 255);
496+
iris->codeview_color_other = IM_COL32(166, 167, 222, 255);
497+
iris->codeview_color_background = IM_COL32(58, 60, 79, 255);
498+
iris->codeview_color_highlight = IM_COL32(97, 100, 120, 255);
499+
} break;
500+
501+
case IRIS_CODEVIEW_COLOR_SCHEME_CATPPUCCIN_MOCHA: {
502+
iris->codeview_color_text = IM_COL32(205, 214, 244, 255);
503+
iris->codeview_color_comment = IM_COL32(145, 151, 181, 255);
504+
iris->codeview_color_mnemonic = IM_COL32(220, 162, 255, 255);
505+
iris->codeview_color_number = IM_COL32(248, 159, 128, 255);
506+
iris->codeview_color_register = IM_COL32(159, 226, 235, 255);
507+
iris->codeview_color_other = IM_COL32(189, 191, 248, 255);
508+
iris->codeview_color_background = IM_COL32(46, 49, 64, 255);
509+
iris->codeview_color_highlight = IM_COL32(76, 80, 100, 255);
510+
} break;
511+
}
512+
}
513+
433514
VkShaderModule create_shader(iris::instance* iris, uint32_t* code, size_t size) {
434515
VkShaderModuleCreateInfo info = {};
435516
info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
@@ -748,6 +829,7 @@ bool init(iris::instance* iris) {
748829
}
749830

750831
set_theme(iris, iris->theme, false);
832+
set_codeview_scheme(iris, iris->codeview_color_scheme);
751833

752834
// Initialize our pipeline
753835
VkShaderModule vert_shader = create_shader(iris, (uint32_t*)g_vertex_shader_data, g_vertex_shader_size);

frontend/iris.cpp

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -301,13 +301,13 @@ void update_window(iris::instance* iris) {
301301
menubar_offset += iris->menubar_height;
302302
}
303303

304-
// GetBackgroundDrawList()->AddRectFilled(
305-
// ImVec2(width - ts.x - offset.x - padding.x, menubar_offset + offset.y - padding.y),
306-
// ImVec2(width - offset.x + padding.x, menubar_offset + ts.y + offset.y + padding.y),
307-
// GetColorU32(GetStyleColorVec4(ImGuiCol_WindowBg)), 8.0f
308-
// );
304+
GetBackgroundDrawList()->AddRectFilled(
305+
ImVec2(width - ts.x - offset.x - padding.x, menubar_offset + offset.y - padding.y),
306+
ImVec2(width - offset.x + padding.x, menubar_offset + ts.y + offset.y + padding.y),
307+
GetColorU32(GetStyleColorVec4(ImGuiCol_WindowBg)), 8.0f
308+
);
309309

310-
GetBackgroundDrawList()->AddText(
310+
GetBackgroundDrawList(GetMainViewport())->AddText(
311311
ImVec2(width - ts.x - offset.x, menubar_offset + offset.y),
312312
GetColorU32(GetStyleColorVec4(ImGuiCol_Text)),
313313
ICON_MS_PAUSE
@@ -507,6 +507,12 @@ SDL_AppResult handle_events(iris::instance* iris, SDL_Event* event) {
507507
return SDL_APP_SUCCESS;
508508
} break;
509509

510+
case SDL_EVENT_WINDOW_CLOSE_REQUESTED: {
511+
if (event->window.windowID == SDL_GetWindowID(iris->window)) {
512+
return SDL_APP_SUCCESS;
513+
}
514+
} break;
515+
510516
case SDL_EVENT_KEY_DOWN: {
511517
handle_keydown_event(iris, event->key);
512518
} break;
@@ -558,12 +564,37 @@ int get_menubar_height(iris::instance* iris) {
558564
}
559565

560566
void destroy(iris::instance* iris) {
567+
if (iris->imgui_enable_viewports) {
568+
iris->show_ee_control = false;
569+
iris->show_ee_state = false;
570+
iris->show_ee_logs = false;
571+
iris->show_ee_interrupts = false;
572+
iris->show_ee_dmac = false;
573+
iris->show_iop_control = false;
574+
iris->show_iop_state = false;
575+
iris->show_iop_logs = false;
576+
iris->show_iop_interrupts = false;
577+
iris->show_iop_modules = false;
578+
iris->show_iop_dma = false;
579+
iris->show_gs_debugger = false;
580+
iris->show_spu2_debugger = false;
581+
iris->show_memory_viewer = false;
582+
iris->show_memory_search = false;
583+
iris->show_vu_disassembler = false;
584+
iris->show_status_bar = false;
585+
iris->show_breakpoints = false;
586+
iris->show_threads = false;
587+
iris->show_sysmem_logs = false;
588+
iris->show_imgui_demo = false;
589+
iris->show_overlay = false;
590+
}
591+
561592
if (iris->window) SDL_HideWindow(iris->window);
562593

594+
iris::imgui::cleanup(iris);
563595
iris::audio::close(iris);
564596
iris::settings::close(iris);
565597
iris::render::destroy(iris);
566-
iris::imgui::cleanup(iris);
567598
iris::vulkan::cleanup(iris);
568599
iris::platform::destroy(iris);
569600
iris::emu::destroy(iris);

frontend/iris.hpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,14 @@ namespace iris {
5252
#define IRIS_SCREENSHOT_JPG_QUALITY_MAXIMUM 4
5353
#define IRIS_SCREENSHOT_JPG_QUALITY_CUSTOM 5
5454

55+
#define IRIS_CODEVIEW_COLOR_SCHEME_SOLARIZED_DARK 0
56+
#define IRIS_CODEVIEW_COLOR_SCHEME_SOLARIZED_LIGHT 1
57+
#define IRIS_CODEVIEW_COLOR_SCHEME_ONE_DARK_PRO 2
58+
#define IRIS_CODEVIEW_COLOR_SCHEME_CATPPUCCIN_LATTE 3
59+
#define IRIS_CODEVIEW_COLOR_SCHEME_CATPPUCCIN_FRAPPE 4
60+
#define IRIS_CODEVIEW_COLOR_SCHEME_CATPPUCCIN_MACCHIATO 5
61+
#define IRIS_CODEVIEW_COLOR_SCHEME_CATPPUCCIN_MOCHA 6
62+
5563
#define IRIS_TITLEBAR_DEFAULT 0
5664
#define IRIS_TITLEBAR_SEAMLESS 1
5765

@@ -356,6 +364,17 @@ struct instance {
356364
int vulkan_selected_device_index = 0;
357365
bool vulkan_enable_validation_layers = false;
358366
bool imgui_enable_viewports = false;
367+
int codeview_color_scheme = 0;
368+
ImColor codeview_color_text = IM_COL32(131, 148, 150, 255);
369+
ImColor codeview_color_comment = IM_COL32(88, 110, 117, 255);
370+
ImColor codeview_color_mnemonic = IM_COL32(211, 167, 30, 255);
371+
ImColor codeview_color_number = IM_COL32(138, 143, 226, 255);
372+
ImColor codeview_color_register = IM_COL32(68, 169, 240, 255);
373+
ImColor codeview_color_other = IM_COL32(89, 89, 89, 255);
374+
ImColor codeview_color_background = IM_COL32(30, 30, 30, 255);
375+
ImColor codeview_color_highlight = IM_COL32(75, 75, 75, 255);
376+
float codeview_font_scale = 1.0f;
377+
bool codeview_use_theme_background = true;
359378

360379
std::deque <std::string> recents;
361380

@@ -524,6 +543,7 @@ namespace shaders {
524543
namespace imgui {
525544
bool init(iris::instance* iris);
526545
void set_theme(iris::instance* iris, int theme, bool set_bg_color = true);
546+
void set_codeview_scheme(iris::instance* iris, int scheme);
527547
bool render_frame(iris::instance* iris, ImDrawData* draw_data);
528548
void cleanup(iris::instance* iris);
529549

frontend/settings.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,9 @@ bool parse_toml_settings(iris::instance* iris) {
145145

146146
auto ui = tbl["ui"];
147147
iris->theme = ui["theme"].value_or(IRIS_THEME_GRANITE);
148+
iris->codeview_font_scale = ui["codeview_font_scale"].value_or(0.0f);
149+
iris->codeview_color_scheme = ui["codeview_color_scheme"].value_or(IRIS_CODEVIEW_COLOR_SCHEME_SOLARIZED_DARK);
150+
iris->codeview_use_theme_background = ui["codeview_use_theme_background"].value_or(true);
148151
iris->ui_scale = ui["scale"].value_or(1.0f);
149152
iris->imgui_enable_viewports = ui["enable_viewports"].value_or(false);
150153

@@ -398,6 +401,7 @@ void close(iris::instance* iris) {
398401
{ "show_memory_search", iris->show_memory_search },
399402
{ "show_vu_disassembler", iris->show_vu_disassembler },
400403
{ "show_status_bar", iris->show_status_bar },
404+
{ "show_pad_debugger", iris->show_pad_debugger },
401405
{ "show_breakpoints", iris->show_breakpoints },
402406
{ "show_threads", iris->show_threads },
403407
{ "show_sysmem_logs", iris->show_sysmem_logs },
@@ -419,6 +423,9 @@ void close(iris::instance* iris) {
419423
} },
420424
{ "ui", toml::table {
421425
{ "theme", iris->theme },
426+
{ "codeview_color_scheme", iris->codeview_color_scheme },
427+
{ "codeview_font_scale", iris->codeview_font_scale },
428+
{ "codeview_use_theme_background", iris->codeview_use_theme_background },
422429
{ "scale", iris->ui_scale },
423430
{ "bgcolor", toml::array {
424431
iris->clear_value.color.float32[0],

frontend/shaders.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@
1212

1313
INCBIN(encoder_frag_shader, "../shaders/encoder.spv");
1414
INCBIN(decoder_frag_shader, "../shaders/decoder.spv");
15-
INCBIN(sharpen_frag_shader, "../shaders/sharpen.spv");
16-
INCBIN(ntsc_frag_shader, "../shaders/ntsc.spv");
15+
INCBIN(curvature_frag_shader, "../shaders/curvature.spv");
16+
INCBIN(scanlines_frag_shader, "../shaders/scanlines.spv");
17+
INCBIN(noise_frag_shader, "../shaders/noise.spv");
1718

1819
namespace iris::shaders {
1920

@@ -336,8 +337,9 @@ std::string pass::get_id() const {
336337
std::unordered_map <std::string, std::pair <void*, size_t>> g_builtin_shaders = {
337338
{ "iris-ntsc-encoder", { (void*)g_encoder_frag_shader_data, (size_t)g_encoder_frag_shader_size } },
338339
{ "iris-ntsc-decoder", { (void*)g_decoder_frag_shader_data, (size_t)g_decoder_frag_shader_size } },
339-
{ "iris-ntsc-curvature", { (void*)g_sharpen_frag_shader_data, (size_t)g_sharpen_frag_shader_size } },
340-
{ "iris-ntsc-mini", { (void*)g_ntsc_frag_shader_data, (size_t)g_ntsc_frag_shader_size } }
340+
{ "iris-ntsc-curvature", { (void*)g_curvature_frag_shader_data, (size_t)g_curvature_frag_shader_size } },
341+
{ "iris-ntsc-scanlines", { (void*)g_scanlines_frag_shader_data, (size_t)g_scanlines_frag_shader_size } },
342+
{ "iris-ntsc-noise", { (void*)g_noise_frag_shader_data, (size_t)g_noise_frag_shader_size } }
341343
};
342344

343345
void push(iris::instance* iris, void* data, size_t size, std::string id) {

0 commit comments

Comments
 (0)