Merge commit 'ec6cf92c4763be5933ee6debbf97bce25b9fcfc9'

This commit is contained in:
2025-04-17 20:12:48 -05:00
11 changed files with 129 additions and 131 deletions

View File

@@ -14,19 +14,6 @@
namespace nostalgia::gfx {
static class: public keel::Module {
private:
NostalgiaPaletteToPaletteV1Converter m_nostalgiaPaletteToPaletteV1Converter;
PaletteV1ToPaletteV2Converter m_paletteV1ToPaletteV2Converter;
PaletteV2ToPaletteV3Converter m_paletteV2ToPaletteV3Converter;
PaletteV3ToPaletteV4Converter m_paletteV3ToPaletteV4Converter;
PaletteV4ToPaletteV5Converter m_paletteV4ToPaletteV5Converter;
PaletteToCompactPaletteConverter m_paletteToCompactPaletteConverter;
TileSheetV1ToTileSheetV2Converter m_tileSheetV1ToTileSheetV2Converter;
TileSheetV2ToTileSheetV3Converter m_tileSheetV2ToTileSheetV3Converter;
TileSheetV3ToTileSheetV4Converter m_tileSheetV3ToTileSheetV4Converter;
TileSheetV4ToTileSheetV5Converter m_tileSheetV4ToTileSheetV5Converter;
TileSheetToCompactTileSheetConverter m_tileSheetToCompactTileSheetConverter;
public:
[[nodiscard]]
ox::String id() const noexcept override {
@@ -52,19 +39,19 @@ static class: public keel::Module {
}
[[nodiscard]]
ox::Vector<keel::BaseConverter const*> converters() const noexcept final {
ox::Vector<keel::Converter> converters() const noexcept final {
return {
&m_nostalgiaPaletteToPaletteV1Converter,
&m_paletteV1ToPaletteV2Converter,
&m_paletteV2ToPaletteV3Converter,
&m_paletteV3ToPaletteV4Converter,
&m_paletteV4ToPaletteV5Converter,
&m_paletteToCompactPaletteConverter,
&m_tileSheetV1ToTileSheetV2Converter,
&m_tileSheetV2ToTileSheetV3Converter,
&m_tileSheetV3ToTileSheetV4Converter,
&m_tileSheetV4ToTileSheetV5Converter,
&m_tileSheetToCompactTileSheetConverter,
keel::Converter::make<convertNostalgiaPaletteToPaletteV1>(),
keel::Converter::make<convertPaletteV1ToPaletteV2>(),
keel::Converter::make<convertPaletteV2ToPaletteV3>(),
keel::Converter::make<convertPaletteV3ToPaletteV4>(),
keel::Converter::make<convertPaletteV4ToPaletteV5>(),
keel::Converter::make<convertPaletteToCompactPalette>(),
keel::Converter::make<convertTileSheetV1ToTileSheetV2>(),
keel::Converter::make<convertTileSheetV2ToTileSheetV3>(),
keel::Converter::make<convertTileSheetV3ToTileSheetV4>(),
keel::Converter::make<convertTileSheetV4ToTileSheetV5>(),
keel::Converter::make<convertTileSheetToCompactTileSheet>(),
};
}

View File

@@ -6,26 +6,26 @@
namespace nostalgia::gfx {
ox::Error NostalgiaPaletteToPaletteV1Converter::convert(
ox::Error convertNostalgiaPaletteToPaletteV1(
keel::Context&,
NostalgiaPalette &src,
PaletteV1 &dst) const noexcept {
PaletteV1 &dst) noexcept {
dst.colors = std::move(src.colors);
return {};
}
ox::Error PaletteV1ToPaletteV2Converter::convert(
ox::Error convertPaletteV1ToPaletteV2(
keel::Context&,
PaletteV1 &src,
PaletteV2 &dst) const noexcept {
PaletteV2 &dst) noexcept {
dst.pages.emplace_back(std::move(src.colors));
return {};
}
ox::Error PaletteV2ToPaletteV3Converter::convert(
ox::Error convertPaletteV2ToPaletteV3(
keel::Context&,
PaletteV2 &src,
PaletteV3 &dst) const noexcept {
PaletteV3 &dst) noexcept {
dst.pages = std::move(src.pages);
if (!dst.pages.empty()) {
dst.colorInfo.reserve(dst.pages[0].size());
@@ -36,10 +36,10 @@ ox::Error PaletteV2ToPaletteV3Converter::convert(
return {};
}
ox::Error PaletteV3ToPaletteV4Converter::convert(
ox::Error convertPaletteV3ToPaletteV4(
keel::Context&,
PaletteV3 &src,
PaletteV4 &dst) const noexcept {
PaletteV4 &dst) noexcept {
dst.pages.reserve(src.pages.size());
for (auto i = 1; auto &page : src.pages) {
dst.pages.emplace_back(ox::sfmt("Page {}", i), std::move(page));
@@ -52,10 +52,10 @@ ox::Error PaletteV3ToPaletteV4Converter::convert(
return {};
}
ox::Error PaletteV4ToPaletteV5Converter::convert(
ox::Error convertPaletteV4ToPaletteV5(
keel::Context&,
PaletteV4 &src,
PaletteV5 &dst) const noexcept {
PaletteV5 &dst) noexcept {
dst.colorNames = std::move(src.colorNames);
dst.pages.reserve(src.pages.size());
for (auto &s : src.pages) {
@@ -72,10 +72,10 @@ ox::Error PaletteV4ToPaletteV5Converter::convert(
return {};
}
ox::Error PaletteToCompactPaletteConverter::convert(
ox::Error convertPaletteToCompactPalette(
keel::Context&,
Palette &src,
CompactPalette &dst) const noexcept {
CompactPalette &dst) noexcept {
dst.pages.reserve(src.pages.size());
for (auto &page : src.pages) {
auto &p = dst.pages.emplace_back();
@@ -86,10 +86,10 @@ ox::Error PaletteToCompactPaletteConverter::convert(
return {};
}
ox::Error TileSheetV1ToTileSheetV2Converter::convert(
ox::Error convertTileSheetV1ToTileSheetV2(
keel::Context&,
TileSheetV1 &src,
TileSheetV2 &dst) const noexcept {
TileSheetV2 &dst) noexcept {
dst.bpp = src.bpp;
dst.defaultPalette = std::move(src.defaultPalette);
dst.subsheet.name = "Root";
@@ -99,7 +99,7 @@ ox::Error TileSheetV1ToTileSheetV2Converter::convert(
return {};
}
void TileSheetV2ToTileSheetV3Converter::convertSubsheet(
static void convertSubsheet(
TileSheetV2::SubSheet &src,
TileSheetV3::SubSheet &dst,
SubSheetId &idIt) noexcept {
@@ -115,10 +115,10 @@ void TileSheetV2ToTileSheetV3Converter::convertSubsheet(
}
}
ox::Error TileSheetV2ToTileSheetV3Converter::convert(
ox::Error convertTileSheetV2ToTileSheetV3(
keel::Context&,
TileSheetV2 &src,
TileSheetV3 &dst) const noexcept {
TileSheetV3 &dst) noexcept {
dst.bpp = src.bpp;
dst.defaultPalette = std::move(src.defaultPalette);
convertSubsheet(src.subsheet, dst.subsheet, dst.idIt);
@@ -126,7 +126,7 @@ ox::Error TileSheetV2ToTileSheetV3Converter::convert(
}
void TileSheetV3ToTileSheetV4Converter::convertSubsheet(
static void convertSubsheet(
TileSheetV3::SubSheet &src,
TileSheetV4::SubSheet &dst,
SubSheetId &idIt) noexcept {
@@ -142,10 +142,10 @@ void TileSheetV3ToTileSheetV4Converter::convertSubsheet(
}
}
ox::Error TileSheetV3ToTileSheetV4Converter::convert(
ox::Error convertTileSheetV3ToTileSheetV4(
keel::Context&,
TileSheetV3 &src,
TileSheetV4 &dst) const noexcept {
TileSheetV4 &dst) noexcept {
dst.bpp = src.bpp;
dst.idIt = src.idIt;
dst.defaultPalette = std::move(src.defaultPalette);
@@ -154,7 +154,7 @@ ox::Error TileSheetV3ToTileSheetV4Converter::convert(
}
void TileSheetV4ToTileSheetV5Converter::convertSubsheet(
static void convertSubsheet(
int const bpp,
TileSheetV4::SubSheet &src,
TileSheetV5::SubSheet &dst) noexcept {
@@ -179,10 +179,10 @@ void TileSheetV4ToTileSheetV5Converter::convertSubsheet(
}
}
ox::Error TileSheetV4ToTileSheetV5Converter::convert(
ox::Error convertTileSheetV4ToTileSheetV5(
keel::Context&,
TileSheetV4 &src,
TileSheetV5 &dst) const noexcept {
TileSheetV5 &dst) noexcept {
dst.bpp = src.bpp;
dst.idIt = src.idIt;
OX_RETURN_ERROR(src.defaultPalette.getPath().moveTo(dst.defaultPalette));
@@ -191,10 +191,10 @@ ox::Error TileSheetV4ToTileSheetV5Converter::convert(
}
ox::Error TileSheetToCompactTileSheetConverter::convert(
ox::Error convertTileSheetToCompactTileSheet(
keel::Context&,
TileSheet &src,
CompactTileSheet &dst) const noexcept {
CompactTileSheet &dst) noexcept {
dst.bpp = src.bpp;
dst.defaultPalette = ox::FileAddress{src.defaultPalette};
dst.pixels = pixels(src);

View File

@@ -16,60 +16,26 @@ namespace nostalgia::gfx {
// Type converters
class NostalgiaPaletteToPaletteV1Converter: public keel::Converter<NostalgiaPalette, PaletteV1> {
ox::Error convert(keel::Context&, NostalgiaPalette &src, PaletteV1 &dst) const noexcept final;
};
ox::Error convertNostalgiaPaletteToPaletteV1(keel::Context&, NostalgiaPalette &src, PaletteV1 &dst) noexcept;
class PaletteV1ToPaletteV2Converter: public keel::Converter<PaletteV1, PaletteV2> {
ox::Error convert(keel::Context&, PaletteV1 &src, PaletteV2 &dst) const noexcept final;
};
ox::Error convertPaletteV1ToPaletteV2(keel::Context&, PaletteV1 &src, PaletteV2 &dst) noexcept;
class PaletteV2ToPaletteV3Converter: public keel::Converter<PaletteV2, PaletteV3> {
ox::Error convert(keel::Context&, PaletteV2 &src, PaletteV3 &dst) const noexcept final;
};
ox::Error convertPaletteV2ToPaletteV3(keel::Context&, PaletteV2 &src, PaletteV3 &dst) noexcept;
class PaletteV3ToPaletteV4Converter: public keel::Converter<PaletteV3, PaletteV4> {
ox::Error convert(keel::Context&, PaletteV3 &src, PaletteV4 &dst) const noexcept final;
};
ox::Error convertPaletteV3ToPaletteV4(keel::Context&, PaletteV3 &src, PaletteV4 &dst) noexcept;
class PaletteV4ToPaletteV5Converter: public keel::Converter<PaletteV4, PaletteV5> {
ox::Error convert(keel::Context&, PaletteV4 &src, PaletteV5 &dst) const noexcept final;
};
ox::Error convertPaletteV4ToPaletteV5(keel::Context&, PaletteV4 &src, PaletteV5 &dst) noexcept;
class PaletteToCompactPaletteConverter: public keel::Converter<Palette, CompactPalette> {
ox::Error convert(keel::Context&, Palette &src, CompactPalette &dst) const noexcept final;
};
ox::Error convertPaletteToCompactPalette(keel::Context&, Palette &src, CompactPalette &dst) noexcept;
class TileSheetV1ToTileSheetV2Converter: public keel::Converter<TileSheetV1, TileSheetV2> {
ox::Error convert(keel::Context&, TileSheetV1 &src, TileSheetV2 &dst) const noexcept final;
};
ox::Error convertTileSheetV1ToTileSheetV2(keel::Context&, TileSheetV1 &src, TileSheetV2 &dst) noexcept;
class TileSheetV2ToTileSheetV3Converter: public keel::Converter<TileSheetV2, TileSheetV3> {
static void convertSubsheet(
TileSheetV2::SubSheet &src,
TileSheetV3::SubSheet &dst,
SubSheetId &idIt) noexcept;
ox::Error convert(keel::Context&, TileSheetV2 &src, TileSheetV3 &dst) const noexcept final;
};
ox::Error convertTileSheetV2ToTileSheetV3(keel::Context&, TileSheetV2 &src, TileSheetV3 &dst) noexcept;
class TileSheetV3ToTileSheetV4Converter: public keel::Converter<TileSheetV3, TileSheetV4> {
static void convertSubsheet(
TileSheetV3::SubSheet &src,
TileSheetV4::SubSheet &dst,
SubSheetId &idIt) noexcept;
ox::Error convert(keel::Context&, TileSheetV3 &src, TileSheetV4 &dst) const noexcept final;
};
ox::Error convertTileSheetV3ToTileSheetV4(keel::Context&, TileSheetV3 &src, TileSheetV4 &dst) noexcept;
class TileSheetV4ToTileSheetV5Converter final: public keel::Converter<TileSheetV4, TileSheetV5> {
static void convertSubsheet(
int bpp,
TileSheetV4::SubSheet &src,
TileSheetV5::SubSheet &dst) noexcept;
ox::Error convert(keel::Context&, TileSheetV4 &src, TileSheetV5 &dst) const noexcept override;
};
ox::Error convertTileSheetV4ToTileSheetV5(keel::Context&, TileSheetV4 &src, TileSheetV5 &dst) noexcept;
class TileSheetToCompactTileSheetConverter: public keel::Converter<TileSheet, CompactTileSheet> {
ox::Error convert(keel::Context&, TileSheet &src, CompactTileSheet &dst) const noexcept final;
};
ox::Error convertTileSheetToCompactTileSheet(keel::Context&, TileSheet &src, CompactTileSheet &dst) noexcept;
}

View File

@@ -414,7 +414,7 @@ ox::Error TileSheetEditorImGui::exportSubsheetToPng(int const scale) const noexc
static_cast<unsigned>(width * scale),
static_cast<unsigned>(height * scale));
if (err) {
oxErrorf("Tilesheet export failed: {}", toStr(err));
oxErrorf("TileSheet export failed: {}", toStr(err));
}
return err;
}