Refactor graphics editor and screen editor tab handling
- Updated tab item handling in GraphicsEditor and ScreenEditor to ensure proper opening and closing of tab items. - Improved layout management by replacing deprecated macros with ImGui table functions for better readability and maintainability. - Adjusted palette display function signature in color handling to return a boolean for success status instead of absl::Status. - Enhanced tile rendering functions for consistency and clarity in the graphics editing workflow.
This commit is contained in:
@@ -49,12 +49,13 @@ absl::Status GraphicsEditor::Load() { return absl::OkStatus(); }
|
|||||||
absl::Status GraphicsEditor::Update() {
|
absl::Status GraphicsEditor::Update() {
|
||||||
if (ImGui::BeginTabBar("##TabBar")) {
|
if (ImGui::BeginTabBar("##TabBar")) {
|
||||||
status_ = UpdateGfxEdit();
|
status_ = UpdateGfxEdit();
|
||||||
TAB_ITEM("Sheet Browser")
|
if (ImGui::BeginTabItem("Sheet Browser")) {
|
||||||
if (asset_browser_.Initialized == false) {
|
if (asset_browser_.Initialized == false) {
|
||||||
asset_browser_.Initialize(gfx::Arena::Get().gfx_sheets());
|
asset_browser_.Initialize(gfx::Arena::Get().gfx_sheets());
|
||||||
|
}
|
||||||
|
asset_browser_.Draw(gfx::Arena::Get().gfx_sheets());
|
||||||
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
asset_browser_.Draw(gfx::Arena::Get().gfx_sheets());
|
|
||||||
END_TAB_ITEM()
|
|
||||||
status_ = UpdateScadView();
|
status_ = UpdateScadView();
|
||||||
status_ = UpdateLinkGfxView();
|
status_ = UpdateLinkGfxView();
|
||||||
ImGui::EndTabBar();
|
ImGui::EndTabBar();
|
||||||
@@ -72,17 +73,16 @@ absl::Status GraphicsEditor::UpdateGfxEdit() {
|
|||||||
ImGui::TableSetupColumn(name);
|
ImGui::TableSetupColumn(name);
|
||||||
|
|
||||||
ImGui::TableHeadersRow();
|
ImGui::TableHeadersRow();
|
||||||
|
ImGui::TableNextColumn();
|
||||||
NEXT_COLUMN();
|
|
||||||
status_ = UpdateGfxSheetList();
|
status_ = UpdateGfxSheetList();
|
||||||
|
|
||||||
NEXT_COLUMN();
|
ImGui::TableNextColumn();
|
||||||
if (rom()->is_loaded()) {
|
if (rom()->is_loaded()) {
|
||||||
DrawGfxEditToolset();
|
DrawGfxEditToolset();
|
||||||
status_ = UpdateGfxTabView();
|
status_ = UpdateGfxTabView();
|
||||||
}
|
}
|
||||||
|
|
||||||
NEXT_COLUMN();
|
ImGui::TableNextColumn();
|
||||||
if (rom()->is_loaded()) {
|
if (rom()->is_loaded()) {
|
||||||
status_ = UpdatePaletteColumn();
|
status_ = UpdatePaletteColumn();
|
||||||
}
|
}
|
||||||
@@ -387,7 +387,7 @@ absl::Status GraphicsEditor::UpdateLinkGfxView() {
|
|||||||
|
|
||||||
ImGui::TableHeadersRow();
|
ImGui::TableHeadersRow();
|
||||||
|
|
||||||
NEXT_COLUMN();
|
ImGui::TableNextColumn();
|
||||||
link_canvas_.DrawBackground();
|
link_canvas_.DrawBackground();
|
||||||
link_canvas_.DrawGrid(16.0f);
|
link_canvas_.DrawGrid(16.0f);
|
||||||
|
|
||||||
@@ -402,10 +402,10 @@ absl::Status GraphicsEditor::UpdateLinkGfxView() {
|
|||||||
link_canvas_.DrawOverlay();
|
link_canvas_.DrawOverlay();
|
||||||
link_canvas_.DrawGrid();
|
link_canvas_.DrawGrid();
|
||||||
|
|
||||||
NEXT_COLUMN();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Text("Placeholder");
|
ImGui::Text("Placeholder");
|
||||||
|
|
||||||
NEXT_COLUMN();
|
ImGui::TableNextColumn();
|
||||||
if (ImGui::Button("Load Link Graphics (Experimental)")) {
|
if (ImGui::Button("Load Link Graphics (Experimental)")) {
|
||||||
if (rom()->is_loaded()) {
|
if (rom()->is_loaded()) {
|
||||||
// Load Links graphics from the ROM
|
// Load Links graphics from the ROM
|
||||||
|
|||||||
@@ -73,44 +73,44 @@ absl::Status ScreenEditor::Update() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ScreenEditor::DrawInventoryMenuEditor() {
|
void ScreenEditor::DrawInventoryMenuEditor() {
|
||||||
TAB_ITEM("Inventory Menu")
|
if (ImGui::BeginTabItem("Inventory Menu")) {
|
||||||
|
static bool create = false;
|
||||||
|
if (!create && rom()->is_loaded()) {
|
||||||
|
status_ = inventory_.Create();
|
||||||
|
palette_ = inventory_.palette();
|
||||||
|
create = true;
|
||||||
|
}
|
||||||
|
|
||||||
static bool create = false;
|
DrawInventoryToolset();
|
||||||
if (!create && rom()->is_loaded()) {
|
|
||||||
status_ = inventory_.Create();
|
if (ImGui::BeginTable("InventoryScreen", 3, ImGuiTableFlags_Resizable)) {
|
||||||
palette_ = inventory_.palette();
|
ImGui::TableSetupColumn("Canvas");
|
||||||
create = true;
|
ImGui::TableSetupColumn("Tiles");
|
||||||
|
ImGui::TableSetupColumn("Palette");
|
||||||
|
ImGui::TableHeadersRow();
|
||||||
|
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
screen_canvas_.DrawBackground();
|
||||||
|
screen_canvas_.DrawContextMenu();
|
||||||
|
screen_canvas_.DrawBitmap(inventory_.bitmap(), 2, create);
|
||||||
|
screen_canvas_.DrawGrid(32.0f);
|
||||||
|
screen_canvas_.DrawOverlay();
|
||||||
|
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
tilesheet_canvas_.DrawBackground(ImVec2(128 * 2 + 2, (192 * 2) + 4));
|
||||||
|
tilesheet_canvas_.DrawContextMenu();
|
||||||
|
tilesheet_canvas_.DrawBitmap(inventory_.tilesheet(), 2, create);
|
||||||
|
tilesheet_canvas_.DrawGrid(16.0f);
|
||||||
|
tilesheet_canvas_.DrawOverlay();
|
||||||
|
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
gui::DisplayPalette(palette_, create);
|
||||||
|
|
||||||
|
ImGui::EndTable();
|
||||||
|
}
|
||||||
|
ImGui::Separator();
|
||||||
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawInventoryToolset();
|
|
||||||
|
|
||||||
if (ImGui::BeginTable("InventoryScreen", 3, ImGuiTableFlags_Resizable)) {
|
|
||||||
ImGui::TableSetupColumn("Canvas");
|
|
||||||
ImGui::TableSetupColumn("Tiles");
|
|
||||||
ImGui::TableSetupColumn("Palette");
|
|
||||||
ImGui::TableHeadersRow();
|
|
||||||
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
screen_canvas_.DrawBackground();
|
|
||||||
screen_canvas_.DrawContextMenu();
|
|
||||||
screen_canvas_.DrawBitmap(inventory_.bitmap(), 2, create);
|
|
||||||
screen_canvas_.DrawGrid(32.0f);
|
|
||||||
screen_canvas_.DrawOverlay();
|
|
||||||
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
tilesheet_canvas_.DrawBackground(ImVec2(128 * 2 + 2, (192 * 2) + 4));
|
|
||||||
tilesheet_canvas_.DrawContextMenu();
|
|
||||||
tilesheet_canvas_.DrawBitmap(inventory_.tilesheet(), 2, create);
|
|
||||||
tilesheet_canvas_.DrawGrid(16.0f);
|
|
||||||
tilesheet_canvas_.DrawOverlay();
|
|
||||||
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
status_ = gui::DisplayPalette(palette_, create);
|
|
||||||
|
|
||||||
ImGui::EndTable();
|
|
||||||
}
|
|
||||||
ImGui::Separator();
|
|
||||||
END_TAB_ITEM()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenEditor::DrawInventoryToolset() {
|
void ScreenEditor::DrawInventoryToolset() {
|
||||||
|
|||||||
@@ -687,7 +687,7 @@ absl::Status OverworldEditor::DrawTile16Selector() {
|
|||||||
{
|
{
|
||||||
blockset_canvas_.DrawContextMenu();
|
blockset_canvas_.DrawContextMenu();
|
||||||
blockset_canvas_.DrawBitmap(tile16_blockset_.atlas, /*border_offset=*/2,
|
blockset_canvas_.DrawBitmap(tile16_blockset_.atlas, /*border_offset=*/2,
|
||||||
map_blockset_loaded_);
|
map_blockset_loaded_, /*scale=*/2);
|
||||||
|
|
||||||
if (blockset_canvas_.DrawTileSelector(32.0f)) {
|
if (blockset_canvas_.DrawTileSelector(32.0f)) {
|
||||||
// Open the tile16 editor to the tile
|
// Open the tile16 editor to the tile
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ IMGUI_API bool SnesColorEdit4(absl::string_view label, gfx::SnesColor* color,
|
|||||||
return pressed;
|
return pressed;
|
||||||
}
|
}
|
||||||
|
|
||||||
absl::Status DisplayPalette(gfx::SnesPalette& palette, bool loaded) {
|
IMGUI_API bool DisplayPalette(gfx::SnesPalette& palette, bool loaded) {
|
||||||
static ImVec4 color = ImVec4(0, 0, 0, 255.f);
|
static ImVec4 color = ImVec4(0, 0, 0, 255.f);
|
||||||
ImGuiColorEditFlags misc_flags = ImGuiColorEditFlags_AlphaPreview |
|
ImGuiColorEditFlags misc_flags = ImGuiColorEditFlags_AlphaPreview |
|
||||||
ImGuiColorEditFlags_NoDragDrop |
|
ImGuiColorEditFlags_NoDragDrop |
|
||||||
@@ -121,7 +121,7 @@ absl::Status DisplayPalette(gfx::SnesPalette& palette, bool loaded) {
|
|||||||
ImGui::ColorPicker4("##picker", (float*)&color,
|
ImGui::ColorPicker4("##picker", (float*)&color,
|
||||||
misc_flags | ImGuiColorEditFlags_NoSidePreview |
|
misc_flags | ImGuiColorEditFlags_NoSidePreview |
|
||||||
ImGuiColorEditFlags_NoSmallPreview);
|
ImGuiColorEditFlags_NoSmallPreview);
|
||||||
return absl::OkStatus();
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SelectablePalettePipeline(uint64_t& palette_id, bool& refresh_graphics,
|
void SelectablePalettePipeline(uint64_t& palette_id, bool& refresh_graphics,
|
||||||
|
|||||||
@@ -53,13 +53,13 @@ IMGUI_API bool SnesColorButton(absl::string_view id, gfx::SnesColor &color,
|
|||||||
IMGUI_API bool SnesColorEdit4(absl::string_view label, gfx::SnesColor *color,
|
IMGUI_API bool SnesColorEdit4(absl::string_view label, gfx::SnesColor *color,
|
||||||
ImGuiColorEditFlags flags = 0);
|
ImGuiColorEditFlags flags = 0);
|
||||||
|
|
||||||
absl::Status DisplayPalette(gfx::SnesPalette &palette, bool loaded);
|
IMGUI_API bool DisplayPalette(gfx::SnesPalette &palette, bool loaded);
|
||||||
|
|
||||||
absl::Status DisplayEditablePalette(gfx::SnesPalette &palette,
|
IMGUI_API absl::Status DisplayEditablePalette(gfx::SnesPalette &palette,
|
||||||
const std::string &title = "",
|
const std::string &title = "",
|
||||||
bool show_color_picker = false,
|
bool show_color_picker = false,
|
||||||
int colors_per_row = 8,
|
int colors_per_row = 8,
|
||||||
ImGuiColorEditFlags flags = 0);
|
ImGuiColorEditFlags flags = 0);
|
||||||
|
|
||||||
void SelectablePalettePipeline(uint64_t &palette_id, bool &refresh_graphics,
|
void SelectablePalettePipeline(uint64_t &palette_id, bool &refresh_graphics,
|
||||||
gfx::SnesPalette &palette);
|
gfx::SnesPalette &palette);
|
||||||
|
|||||||
Reference in New Issue
Block a user