From 7bcab06f0b0188edece7db90a3d2853c8b6b41df Mon Sep 17 00:00:00 2001 From: scawful Date: Sun, 10 Nov 2024 15:07:33 -0500 Subject: [PATCH] Add InputTileInfo function for tile information input handling in GUI --- src/app/gui/input.cc | 15 +++++++++++++++ src/app/gui/input.h | 3 +++ 2 files changed, 18 insertions(+) diff --git a/src/app/gui/input.cc b/src/app/gui/input.cc index eda967b6..f3e74bce 100644 --- a/src/app/gui/input.cc +++ b/src/app/gui/input.cc @@ -8,6 +8,7 @@ #include "absl/strings/string_view.h" #include "app/gfx/bitmap.h" #include "app/gfx/snes_palette.h" +#include "app/gfx/snes_tile.h" #include "app/gui/canvas.h" #include "app/gui/color.h" #include "imgui/imgui.h" @@ -246,6 +247,20 @@ bool ListBox(const char* label, int* current_item, height_in_items); } +bool InputTileInfo(const char* label, gfx::TileInfo* tile_info) { + ImGui::PushID(label); + ImGui::BeginGroup(); + bool changed = false; + changed |= InputHexWord(label, &tile_info->id_); + changed |= InputHexByte("Palette", &tile_info->palette_); + changed |= ImGui::Checkbox("Priority", &tile_info->over_); + changed |= ImGui::Checkbox("Vertical Flip", &tile_info->vertical_mirror_); + changed |= ImGui::Checkbox("Horizontal Flip", &tile_info->horizontal_mirror_); + ImGui::EndGroup(); + ImGui::PopID(); + return changed; +} + ImGuiID GetID(const std::string& id) { return ImGui::GetID(id.c_str()); } void FileDialogPipeline(absl::string_view display_key, diff --git a/src/app/gui/input.h b/src/app/gui/input.h index 040c286f..caa4d9bb 100644 --- a/src/app/gui/input.h +++ b/src/app/gui/input.h @@ -13,6 +13,7 @@ #include "absl/strings/string_view.h" #include "app/gfx/bitmap.h" #include "app/gfx/snes_palette.h" +#include "app/gfx/snes_tile.h" #include "app/gui/canvas.h" #include "app/gui/color.h" #include "imgui/imgui.h" @@ -45,6 +46,8 @@ IMGUI_API bool ListBox(const char* label, int* current_item, const std::vector& items, int height_in_items = -1); +bool InputTileInfo(const char* label, gfx::TileInfo* tile_info); + using ItemLabelFlags = enum ItemLabelFlag { Left = 1u << 0u, Right = 1u << 1u,