yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
canvas_modals.h
Go to the documentation of this file.
1#ifndef YAZE_APP_GUI_CANVAS_CANVAS_MODALS_H
2#define YAZE_APP_GUI_CANVAS_CANVAS_MODALS_H
3
4#include <string>
5#include <functional>
6#include <utility>
7#include "app/gfx/bitmap.h"
11#include "imgui/imgui.h"
12
13namespace yaze {
14namespace gui {
15namespace canvas {
16
17void DispatchConfigCallback(const std::function<void(const CanvasConfig&)>& callback,
18 const CanvasConfig& config);
19void DispatchScaleCallback(const std::function<void(const CanvasConfig&)>& callback,
20 const CanvasConfig& config);
21
26 ImVec2 canvas_size = ImVec2(0, 0);
27 ImVec2 content_size = ImVec2(0, 0);
28 float global_scale = 1.0f;
29 float grid_step = 32.0f;
30 bool enable_grid = true;
31 bool enable_hex_labels = false;
34 bool is_draggable = false;
35 bool auto_resize = false;
36 ImVec2 scrolling = ImVec2(0, 0);
37
38 // Callbacks provide updated configuration state
39 std::function<void(const CanvasConfig&)> on_config_changed;
40 std::function<void(const CanvasConfig&)> on_scale_changed;
41};
42
47 const gfx::Bitmap* bitmap = nullptr;
48 const gfx::SnesPalette* palette = nullptr;
49 std::function<void(gfx::BppFormat)> on_convert;
50};
51
57 std::string title = "Palette Editor";
58 std::function<void()> on_palette_changed;
59};
60
65 const gfx::Bitmap* bitmap = nullptr;
66 const gfx::SnesPalette* palette = nullptr;
67 std::string title = "Color Analysis";
68};
69
74 std::string operation_name;
75 double operation_time_ms = 0.0;
76 std::function<void()> on_dashboard_request;
77};
78
83 public:
84 CanvasModals() = default;
85
89 void ShowAdvancedProperties(const std::string& canvas_id,
90 const CanvasConfig& config,
91 const gfx::Bitmap* bitmap = nullptr);
92
96 void ShowScalingControls(const std::string& canvas_id,
97 const CanvasConfig& config,
98 const gfx::Bitmap* bitmap = nullptr);
99
103 void ShowBppConversionDialog(const std::string& canvas_id,
104 const BppConversionOptions& options);
105
109 void ShowPaletteEditor(const std::string& canvas_id,
110 const PaletteEditorOptions& options);
111
115 void ShowColorAnalysis(const std::string& canvas_id,
116 const ColorAnalysisOptions& options);
117
121 void ShowPerformanceIntegration(const std::string& canvas_id,
122 const PerformanceOptions& options);
123
127 void Render();
128
132 bool IsAnyModalOpen() const;
133
134 private:
135 struct ModalState {
136 bool is_open = false;
137 std::string id;
138 std::function<void()> render_func;
139 };
140
141 std::vector<ModalState> active_modals_;
142
143 // Modal rendering functions
144 void RenderAdvancedPropertiesModal(const std::string& canvas_id,
145 CanvasConfig& config,
146 const gfx::Bitmap* bitmap);
147
148 void RenderScalingControlsModal(const std::string& canvas_id,
149 CanvasConfig& config,
150 const gfx::Bitmap* bitmap);
151
152 void RenderBppConversionModal(const std::string& canvas_id,
153 const BppConversionOptions& options);
154
155 void RenderPaletteEditorModal(const std::string& canvas_id,
156 const PaletteEditorOptions& options);
157
158 void RenderColorAnalysisModal(const std::string& canvas_id,
159 const ColorAnalysisOptions& options);
160
161 void RenderPerformanceModal(const std::string& canvas_id,
162 const PerformanceOptions& options);
163
164 // Helper methods
165 void OpenModal(const std::string& id, std::function<void()> render_func);
166 void CloseModal(const std::string& id);
167 bool IsModalOpen(const std::string& id) const;
168
169 // UI helper methods
170 void RenderMaterialIcon(const std::string& icon_name, const ImVec4& color = ImVec4(1, 1, 1, 1));
171 void RenderMetricCard(const std::string& title, const std::string& value,
172 const std::string& icon, const ImVec4& color = ImVec4(1, 1, 1, 1));
173 void RenderSliderWithIcon(const std::string& label, const std::string& icon,
174 float* value, float min_val, float max_val,
175 const char* format = "%.2f");
176};
177
178} // namespace canvas
179} // namespace gui
180} // namespace yaze
181
182#endif // YAZE_APP_GUI_CANVAS_CANVAS_MODALS_H
Represents a bitmap image optimized for SNES ROM hacking.
Definition bitmap.h:66
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
Modal dialog management for canvas operations.
std::vector< ModalState > active_modals_
bool IsAnyModalOpen() const
Check if any modal is open.
void RenderPerformanceModal(const std::string &canvas_id, const PerformanceOptions &options)
void OpenModal(const std::string &id, std::function< void()> render_func)
void ShowColorAnalysis(const std::string &canvas_id, const ColorAnalysisOptions &options)
Show color analysis modal.
void RenderColorAnalysisModal(const std::string &canvas_id, const ColorAnalysisOptions &options)
void ShowBppConversionDialog(const std::string &canvas_id, const BppConversionOptions &options)
Show BPP format conversion dialog.
void RenderPaletteEditorModal(const std::string &canvas_id, const PaletteEditorOptions &options)
void ShowPerformanceIntegration(const std::string &canvas_id, const PerformanceOptions &options)
Show performance dashboard integration.
void ShowPaletteEditor(const std::string &canvas_id, const PaletteEditorOptions &options)
Show palette editor modal.
void RenderMetricCard(const std::string &title, const std::string &value, const std::string &icon, const ImVec4 &color=ImVec4(1, 1, 1, 1))
bool IsModalOpen(const std::string &id) const
void ShowScalingControls(const std::string &canvas_id, const CanvasConfig &config, const gfx::Bitmap *bitmap=nullptr)
Show scaling controls modal.
void RenderSliderWithIcon(const std::string &label, const std::string &icon, float *value, float min_val, float max_val, const char *format="%.2f")
void RenderAdvancedPropertiesModal(const std::string &canvas_id, CanvasConfig &config, const gfx::Bitmap *bitmap)
void RenderMaterialIcon(const std::string &icon_name, const ImVec4 &color=ImVec4(1, 1, 1, 1))
void RenderBppConversionModal(const std::string &canvas_id, const BppConversionOptions &options)
void Render()
Render all active modals.
void ShowAdvancedProperties(const std::string &canvas_id, const CanvasConfig &config, const gfx::Bitmap *bitmap=nullptr)
Show advanced canvas properties modal.
void CloseModal(const std::string &id)
void RenderScalingControlsModal(const std::string &canvas_id, CanvasConfig &config, const gfx::Bitmap *bitmap)
BppFormat
BPP format enumeration for SNES graphics.
void DispatchConfigCallback(const std::function< void(const CanvasConfig &)> &callback, const CanvasConfig &config)
void DispatchScaleCallback(const std::function< void(const CanvasConfig &)> &callback, const CanvasConfig &config)
Main namespace for the application.
std::function< void(gfx::BppFormat)> on_convert
Canvas configuration options for modals.
std::function< void(const CanvasConfig &)> on_config_changed
std::function< void(const CanvasConfig &)> on_scale_changed
std::function< void()> on_palette_changed
Performance integration options.
std::function< void()> on_dashboard_request