diff --git a/src/nostalgia/modules/core/include/nostalgia/core/palette.hpp b/src/nostalgia/modules/core/include/nostalgia/core/palette.hpp index 6a2c914f..2550ba33 100644 --- a/src/nostalgia/modules/core/include/nostalgia/core/palette.hpp +++ b/src/nostalgia/modules/core/include/nostalgia/core/palette.hpp @@ -67,12 +67,22 @@ struct NostalgiaPalette { ox::Vector colors = {}; }; +oxModelBegin(NostalgiaPalette) + oxModelField(colors) +oxModelEnd() + + struct PaletteV1 { static constexpr auto TypeName = "net.drinkingtea.nostalgia.core.Palette"; static constexpr auto TypeVersion = 1; ox::Vector colors; }; +oxModelBegin(PaletteV1) + oxModelField(colors) +oxModelEnd() + + struct PaletteV2 { static constexpr auto TypeName = "net.drinkingtea.nostalgia.core.Palette"; static constexpr auto TypeVersion = 2; @@ -80,6 +90,10 @@ struct PaletteV2 { ox::Vector> pages; }; +oxModelBegin(PaletteV2) + oxModelField(pages) +oxModelEnd() + struct PaletteV3 { static constexpr auto TypeName = "net.drinkingtea.nostalgia.core.Palette"; @@ -96,6 +110,15 @@ struct PaletteV3 { ox::Vector> pages; }; +oxModelBegin(PaletteV3::ColorInfo) + oxModelField(name) +oxModelEnd() + +oxModelBegin(PaletteV3) + oxModelField(colorInfo) + oxModelField(pages) +oxModelEnd() + [[nodiscard]] constexpr bool valid(PaletteV3 const&p) noexcept { auto const colors = p.colorInfo.size(); @@ -121,6 +144,11 @@ struct PaletteV4 { ox::Vector pages; }; +oxModelBegin(PaletteV4) + oxModelField(colorNames) + oxModelField(pages) +oxModelEnd() + [[nodiscard]] constexpr bool valid(PaletteV4 const&p) noexcept { auto const colors = p.colorNames.size(); @@ -148,6 +176,10 @@ struct CompactPaletteV1 { ox::Vector> pages{}; }; +oxModelBegin(CompactPaletteV1) + oxModelField(pages) +oxModelEnd() + [[nodiscard]] constexpr bool valid(CompactPaletteV1 const&p) noexcept { size_t colors{}; @@ -254,34 +286,4 @@ constexpr size_t largestPage(CompactPalette const&pal) noexcept { return out; } -oxModelBegin(NostalgiaPalette) - oxModelField(colors) -oxModelEnd() - -oxModelBegin(PaletteV1) - oxModelField(colors) -oxModelEnd() - -oxModelBegin(PaletteV2) - oxModelField(pages) -oxModelEnd() - -oxModelBegin(PaletteV3::ColorInfo) - oxModelField(name) -oxModelEnd() - -oxModelBegin(PaletteV3) - oxModelField(colorInfo) - oxModelField(pages) -oxModelEnd() - -oxModelBegin(PaletteV4) - oxModelField(colorNames) - oxModelField(pages) -oxModelEnd() - -oxModelBegin(CompactPaletteV1) - oxModelField(pages) -oxModelEnd() - } diff --git a/src/nostalgia/modules/core/src/studio/paletteeditor/paletteeditor-imgui.cpp b/src/nostalgia/modules/core/src/studio/paletteeditor/paletteeditor-imgui.cpp index f197f1c1..dd5f53e4 100644 --- a/src/nostalgia/modules/core/src/studio/paletteeditor/paletteeditor-imgui.cpp +++ b/src/nostalgia/modules/core/src/studio/paletteeditor/paletteeditor-imgui.cpp @@ -41,7 +41,7 @@ PaletteEditorImGui::PaletteEditorImGui(studio::StudioContext &sctx, ox::StringPa m_sctx(sctx), m_tctx(sctx.tctx), m_pal(*keel::readObj(keelCtx(m_tctx), itemPath()).unwrapThrow()) { - if (!valid(m_pal)) { + if (keel::ensureValid(m_pal).errCode) { throw OxException(1, "PaletteEditorImGui: invalid Palette object"); } undoStack()->changeTriggered.connect(this, &PaletteEditorImGui::handleCommand);