nesemu/gui/gui.c

59 lines
1.3 KiB
C

//
// Created by william on 16/05/24.
//
#include <assert.h>
#include "gui.h"
#include "log.h"
NesGui gui;
void gui_init() {
gui.main_window = window_init(MAIN_WINDOW_WIDTH, MAIN_WINDOW_HEIGHT, "NES Emulator");
gui.debug_pattern_window = window_init(DEBUG_PATTERN_WIDTH, DEBUG_PATTERN_HEIGHT, "Pattern Table");
}
void gui_uninit() {
window_uninit(&gui.main_window);
window_uninit(&gui.debug_pattern_window);
}
int gui_input() {
SDL_Event event;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_CLOSE) {
return -1;
}
}
return 1;
}
void gui_render() {
window_render(&gui.main_window);
window_render(&gui.debug_pattern_window);
}
void gui_present() {
window_present(&gui.main_window);
window_present(&gui.debug_pattern_window);
}
Canvas *gui_get_canvas(char win_id) {
NesWindow *window;
switch (win_id) {
case GUI_WINDOW_MAIN:
window = &gui.main_window;
break;
case GUI_WINDOW_PATTERN:
window = &gui.debug_pattern_window;
break;
default:
log_error("Couldn't get canvas for window ID '%d' because it doesn't exists", win_id);
assert(false);
}
return &window->canvas;
}