1#ifndef YAZE_APP_EDITOR_PALETTE_EDITOR_H
2#define YAZE_APP_EDITOR_PALETTE_EDITOR_H
9#include "absl/status/status.h"
16#include "imgui/imgui.h"
22namespace palette_internal {
34 void RecordChange(
const std::string& group_name,
size_t palette_index,
42 {group_name, palette_index, color_index, original_color, new_color});
47 size_t color_index)
const {
49 if (change.group_name == group_name &&
50 change.palette_index == palette_index &&
51 change.color_index == color_index) {
52 return change.original_color;
92 absl::Status
Load()
override;
93 absl::Status
Update()
override;
94 absl::Status
Cut()
override {
return absl::OkStatus(); }
95 absl::Status
Copy()
override {
return absl::OkStatus(); }
96 absl::Status
Paste()
override {
return absl::OkStatus(); }
97 absl::Status
Undo()
override;
98 absl::Status
Redo()
override;
99 absl::Status
Find()
override {
return absl::OkStatus(); }
103 bool CanCut()
const override {
return false; }
104 bool CanCopy()
const override {
return false; }
106 absl::Status
Save()
override;
124 void JumpToPalette(
const std::string& group_name,
int palette_index);
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Dungeon Main palette group panel.
Interface for editor classes.
virtual void SetGameData(zelda3::GameData *game_data)
zelda3::GameData * game_data() const
Equipment/Armor palette group panel.
Overworld Animated palette group panel.
Overworld Main palette group panel.
Allows the user to view and edit in game palettes.
void DrawCategorizedPaletteList()
void Initialize() override
absl::Status DrawPaletteGroup(int category, bool right_side=false)
void DrawCustomPalettePanel()
OverworldAnimatedPalettePanel * ow_anim_panel_
bool CanUndo() const override
std::optional< core::PaletteCatalog > palette_catalog_
const core::PaletteCatalog * palette_catalog() const
absl::Status ResetColorToOriginal(gfx::SnesPalette &palette, int index, const gfx::SnesPalette &originalPalette)
const project::YazeProject * catalog_project_
std::vector< gfx::SnesColor > custom_palette_
SpritesAux1PalettePanel * sprite_aux1_panel_
absl::Status Find() override
void CommitSaveTransaction() override
void RollbackSaveTransaction() override
void DrawCustomPalette()
Draw custom palette editor with enhanced ROM hacking features.
bool show_sprites_aux3_panel_
absl::Status BeginSaveTransaction() override
ImVec4 saved_palette_[256]
absl::Status ReloadPaletteCatalog()
bool show_sprites_aux1_panel_
void SetDependencies(const EditorDependencies &deps) override
void AddRecentlyUsedColor(const gfx::SnesColor &color)
absl::Status Update() override
bool PassesSearchFilter(const std::string &group_name) const
PaletteEditor(Rom *rom=nullptr)
absl::Status Undo() override
size_t catalog_session_id_
bool show_dungeon_main_panel_
bool show_equipment_panel_
absl::Status Copy() override
EquipmentPalettePanel * equipment_panel_
std::string selected_group_
void RefreshPanelReferences()
bool show_custom_palette_
void RefreshPaletteCatalogIfChanged()
SpritePalettePanel * sprite_global_panel_
absl::Status HandleColorPopup(gfx::SnesPalette &palette, int i, int j, int n)
bool show_ow_animated_panel_
gfx::SnesColor current_color_
void DrawQuickAccessPanel()
SpritesAux2PalettePanel * sprite_aux2_panel_
bool CanRedo() const override
void DrawQuickAccessTab()
bool CanPaste() const override
std::vector< gfx::SnesColor > recently_used_colors_
palette_internal::PaletteEditorHistory history_
absl::Status catalog_status_
PaletteGroupPanel * GetPanelForGroup(const std::string &group_name)
absl::Status Save() override
bool show_sprites_aux2_panel_
absl::Status Paste() override
std::string catalog_project_file_
absl::Status Load() override
void DrawPaletteCatalog()
absl::Status Cut() override
void ApplyPanelDependencies()
bool CanCut() const override
void JumpToPalette(const std::string &group_name, int palette_index)
Jump to a specific palette by group and index.
DungeonMainPalettePanel * dungeon_main_panel_
void SetGameData(zelda3::GameData *game_data) override
SpritesAux3PalettePanel * sprite_aux3_panel_
OverworldMainPalettePanel * ow_main_panel_
absl::Status Redo() override
bool CanCopy() const override
std::string catalog_path_
absl::Status EditColorInPalette(gfx::SnesPalette &palette, int index)
const absl::Status & palette_catalog_status() const
Base class for palette group editing cards.
Global Sprite palette group panel.
Sprites Aux1 palette group panel.
Sprites Aux2 palette group panel.
Sprites Aux3 palette group panel.
gfx::SnesColor & GetOriginalColor(size_t index)
gfx::SnesColor RestoreOriginalColor(const std::string &group_name, size_t palette_index, size_t color_index) const
std::deque< PaletteChange > recent_changes_
static const size_t kMaxHistorySize
gfx::SnesColor & GetModifiedColor(size_t index)
void RecordChange(const std::string &group_name, size_t palette_index, size_t color_index, const gfx::SnesColor &original_color, const gfx::SnesColor &new_color)
const std::deque< PaletteChange > & GetRecentChanges() const
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
absl::Status DisplayPalette(gfx::SnesPalette &palette, bool loaded)
Display SNES palette with enhanced ROM hacking features.
Unified dependency container for all editor types.
gfx::SnesColor original_color
Modern project structure with comprehensive settings consolidation.