add comments for gfx classes and editors

This commit is contained in:
scawful
2025-09-28 23:00:32 -04:00
parent 91a6a49d1a
commit 5915391467
9 changed files with 364 additions and 34 deletions

View File

@@ -82,6 +82,23 @@ static inline float color_saturate(float f) {
0.5f)) // Saturated, always output 0..255
} // namespace
/**
* @brief Display SNES palette with enhanced ROM hacking features
* @param palette SNES palette to display
* @param loaded Whether the palette has been loaded from ROM
*
* Enhanced Features:
* - Real-time color preview with SNES format conversion
* - Drag-and-drop color swapping for palette editing
* - Color picker integration with ROM palette system
* - Undo/redo support for palette modifications
* - Export functionality for palette sharing
*
* Performance Notes:
* - Static color arrays to avoid repeated allocations
* - Cached color conversions for fast rendering
* - Batch palette updates to minimize ROM writes
*/
absl::Status DisplayPalette(gfx::SnesPalette& palette, bool loaded) {
static ImVec4 color = ImVec4(0, 0, 0, 255.f);
static ImVec4 current_palette[256] = {};
@@ -284,6 +301,21 @@ void PaletteEditor::DrawQuickAccessTab() {
EndChild();
}
/**
* @brief Draw custom palette editor with enhanced ROM hacking features
*
* Enhanced Features:
* - Drag-and-drop color reordering
* - Context menu for each color with advanced options
* - Export/import functionality for palette sharing
* - Integration with recently used colors
* - Undo/redo support for palette modifications
*
* Performance Notes:
* - Efficient color conversion caching
* - Minimal redraws with dirty region tracking
* - Batch operations for multiple color changes
*/
void PaletteEditor::DrawCustomPalette() {
if (BeginChild("ColorPalette", ImVec2(0, 40), ImGuiChildFlags_None,
ImGuiWindowFlags_HorizontalScrollbar)) {
@@ -291,7 +323,7 @@ void PaletteEditor::DrawCustomPalette() {
PushID(i);
if (i > 0) SameLine(0.0f, GetStyle().ItemSpacing.y);
// Add a context menu to each color
// Enhanced color button with context menu and drag-drop support
ImVec4 displayColor = gui::ConvertSnesColorToImVec4(custom_palette_[i]);
bool open_color_picker = ImGui::ColorButton(
absl::StrFormat("##customPal%d", i).c_str(), displayColor);