#ifndef vram_viewer_window_h
#define vram_viewer_window_h

#include <gtk/gtk.h>
#include <Core/gb.h>
#include <stdint.h>

#define VRAM_VIEWER_WINDOW_TYPE (vram_viewer_window_get_type())
G_DECLARE_FINAL_TYPE(VramViewerWindow, vram_viewer_window, SAMEBOY, WINDOW, GtkWindow)

#define VRAM_VIEWER_TAB_TILESET  "tileset"
#define VRAM_VIEWER_TAB_TILEMAP  "tilemap"
#define VRAM_VIEWER_TAB_SPRITES  "sprites"
#define VRAM_VIEWER_TAB_PALETTES "palettes"

VramViewerWindow *vram_viewer_new(void);

const gchar *vram_viewer_active_tab_name(VramViewerWindow *window);

const gchar *vram_viewer_get_tileset_palette_id(VramViewerWindow *window);
const gchar *vram_viewer_get_tilemap_palette_id(VramViewerWindow *window);
const gchar *vram_viewer_get_tilemap_type_id(VramViewerWindow *window);
const gchar *vram_viewer_get_tileset_type_id(VramViewerWindow *window);

uint32_t *vram_viewer_get_tileset_buffer(VramViewerWindow *window);
uint32_t *vram_viewer_get_tilemap_buffer(VramViewerWindow *window);

void vram_viewer_update(VramViewerWindow *window, GB_gameboy_t *gb);
void vram_viewer_clear(VramViewerWindow *window);

#endif