From 8a74e044dc5fa44ba10dbbf7d2812c7070ff4f7c Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Fri, 25 Jul 2025 00:32:02 -0500 Subject: [PATCH] Squashed 'deps/nostalgia/' changes from fae1e73e..c7bc2a95 c7bc2a95 [nostalgia/gfx] Style update 7372036a [nostalgia/gfx] Add function missing from header 7461d832 [nostalgia/gfx/studio,studio] Fix CLI tool output to only show usage if no args given 6052798f Merge commit 'dceeaaa9302b7e9ce85fa773fc187bc593f3c93c' 801d35c8 [keel] Make type converters work with functions that take const src arg git-subtree-dir: deps/nostalgia git-subtree-split: c7bc2a954fdf435127fb09896f32c5cb23c99f02 --- .../gfx/include/nostalgia/gfx/palette.hpp | 8 +- .../gfx/include/nostalgia/gfx/ptidxconv.hpp | 6 +- .../gfx/include/nostalgia/gfx/tilesheet.hpp | 86 ++++++++++--------- .../export-tilesheet/export-tilesheet.cpp | 3 + src/olympic/keel/include/keel/typeconv.hpp | 2 +- src/olympic/studio/applib/src/app.cpp | 5 +- 6 files changed, 59 insertions(+), 51 deletions(-) diff --git a/src/nostalgia/modules/gfx/include/nostalgia/gfx/palette.hpp b/src/nostalgia/modules/gfx/include/nostalgia/gfx/palette.hpp index 5a83206..4bfc035 100644 --- a/src/nostalgia/modules/gfx/include/nostalgia/gfx/palette.hpp +++ b/src/nostalgia/modules/gfx/include/nostalgia/gfx/palette.hpp @@ -168,9 +168,9 @@ OX_MODEL_BEGIN(PaletteV3) OX_MODEL_END() [[nodiscard]] -constexpr bool valid(PaletteV3 const&p) noexcept { +constexpr bool valid(PaletteV3 const &p) noexcept { auto const colors = p.colorInfo.size(); - return ox::all_of(p.pages.begin(), p.pages.end(), [colors](auto const&page) { + return ox::all_of(p.pages.begin(), p.pages.end(), [colors](auto const &page) { return page.size() == colors; }); } @@ -198,9 +198,9 @@ OX_MODEL_BEGIN(PaletteV4) OX_MODEL_END() [[nodiscard]] -constexpr bool valid(PaletteV4 const&p) noexcept { +constexpr bool valid(PaletteV4 const &p) noexcept { auto const colors = p.colorNames.size(); - return ox::all_of(p.pages.begin(), p.pages.end(), [colors](PalettePageV1 const&page) { + return ox::all_of(p.pages.begin(), p.pages.end(), [colors](PalettePageV1 const &page) { return page.colors.size() == colors; }); } diff --git a/src/nostalgia/modules/gfx/include/nostalgia/gfx/ptidxconv.hpp b/src/nostalgia/modules/gfx/include/nostalgia/gfx/ptidxconv.hpp index 3ec062a..d5714d7 100644 --- a/src/nostalgia/modules/gfx/include/nostalgia/gfx/ptidxconv.hpp +++ b/src/nostalgia/modules/gfx/include/nostalgia/gfx/ptidxconv.hpp @@ -11,7 +11,7 @@ namespace nostalgia::gfx { [[nodiscard]] -constexpr std::size_t ptToIdx(int x, int y, int c, int scale = 1) noexcept { +constexpr std::size_t ptToIdx(int const x, int const y, int const c, int const scale = 1) noexcept { auto const tileWidth = TileWidth * scale; auto const tileHeight = TileHeight * scale; auto const pixelsPerTile = tileWidth * tileHeight; @@ -25,12 +25,12 @@ constexpr std::size_t ptToIdx(int x, int y, int c, int scale = 1) noexcept { } [[nodiscard]] -constexpr std::size_t ptToIdx(const ox::Point &pt, int c, int scale = 1) noexcept { +constexpr std::size_t ptToIdx(ox::Point const &pt, int const c, int const scale = 1) noexcept { return ptToIdx(pt.x, pt.y, c * TileWidth, scale); } [[nodiscard]] -constexpr ox::Point idxToPt(int i, int c, int scale = 1) noexcept { +constexpr ox::Point idxToPt(int const i, int c, int const scale = 1) noexcept { auto const tileWidth = TileWidth * scale; auto const tileHeight = TileHeight * scale; auto const pixelsPerTile = tileWidth * tileHeight; diff --git a/src/nostalgia/modules/gfx/include/nostalgia/gfx/tilesheet.hpp b/src/nostalgia/modules/gfx/include/nostalgia/gfx/tilesheet.hpp index 983e976..4bb7a15 100644 --- a/src/nostalgia/modules/gfx/include/nostalgia/gfx/tilesheet.hpp +++ b/src/nostalgia/modules/gfx/include/nostalgia/gfx/tilesheet.hpp @@ -30,7 +30,7 @@ struct TileSheetV1 { }; [[nodiscard]] -constexpr bool valid(TileSheetV1 const&ts) noexcept { +constexpr bool valid(TileSheetV1 const &ts) noexcept { auto const bytes = static_cast(ts.columns * ts.rows * PixelsPerTile) / (ts.bpp == 4 ? 2 : 1); return (ts.bpp == 4 || ts.bpp == 8) && ts.pixels.size() == bytes; } @@ -71,16 +71,16 @@ struct TileSheetV2 { }; [[nodiscard]] -constexpr bool valid(TileSheetV2::SubSheet const&ss, int bpp) noexcept { +constexpr bool valid(TileSheetV2::SubSheet const &ss, int bpp) noexcept { auto const bytes = static_cast(ss.columns * ss.rows * PixelsPerTile) / (bpp == 4 ? 2 : 1); return ox::all_of(ss.subsheets.begin(), ss.subsheets.end(), - [bpp, bytes](TileSheetV2::SubSheet const&s) { + [bpp, bytes](TileSheetV2::SubSheet const &s) { return bytes == s.pixels.size() && valid(s, bpp); }); } [[nodiscard]] -constexpr bool valid(TileSheetV2 const&ts) noexcept { +constexpr bool valid(TileSheetV2 const &ts) noexcept { return (ts.bpp == 4 || ts.bpp == 8) && valid(ts.subsheet, ts.bpp); } @@ -141,16 +141,16 @@ struct TileSheetV3 { }; [[nodiscard]] -constexpr bool valid(TileSheetV3::SubSheet const&ss, int bpp) noexcept { +constexpr bool valid(TileSheetV3::SubSheet const &ss, int bpp) noexcept { auto const bytes = static_cast(ss.columns * ss.rows * PixelsPerTile) / (bpp == 4 ? 2 : 1); return ox::all_of(ss.subsheets.begin(), ss.subsheets.end(), - [bpp, bytes](TileSheetV3::SubSheet const&s) { + [bpp, bytes](TileSheetV3::SubSheet const &s) { return bytes == s.pixels.size() && valid(s, bpp); }); } [[nodiscard]] -constexpr bool valid(TileSheetV3 const&ts) noexcept { +constexpr bool valid(TileSheetV3 const &ts) noexcept { return (ts.bpp == 4 || ts.bpp == 8) && valid(ts.subsheet, ts.bpp); } @@ -233,18 +233,18 @@ struct TileSheetV4 { }; [[nodiscard]] -constexpr bool valid(TileSheetV4::SubSheet const&ss, int bpp) noexcept { +constexpr bool valid(TileSheetV4::SubSheet const &ss, int bpp) noexcept { auto const bytes = static_cast(ss.columns * ss.rows * PixelsPerTile) / (bpp == 4 ? 2 : 1); return (ss.pixels.empty() || ss.subsheets.empty()) && ox::all_of(ss.subsheets.begin(), ss.subsheets.end(), - [bpp, bytes](TileSheetV4::SubSheet const&s) { + [bpp, bytes](TileSheetV4::SubSheet const &s) { return bytes == s.pixels.size() && valid(s, bpp); }); } [[nodiscard]] -constexpr bool valid(TileSheetV4 const&ts) noexcept { +constexpr bool valid(TileSheetV4 const &ts) noexcept { return (ts.bpp == 4 || ts.bpp == 8) && valid(ts.subsheet, ts.bpp); } @@ -334,19 +334,19 @@ struct TileSheetV5 { }; [[nodiscard]] -constexpr bool valid(TileSheetV5::SubSheet const&ss) noexcept { +constexpr bool valid(TileSheetV5::SubSheet const &ss) noexcept { if (ss.subsheets.empty()) { return std::cmp_equal(ss.columns * ss.rows * PixelsPerTile, ss.pixels.size()); } else { return ss.pixels.empty() && ox::all_of(ss.subsheets.begin(), ss.subsheets.end(), - [](TileSheetV5::SubSheet const&s) { + [](TileSheetV5::SubSheet const &s) { return valid(s); }); } } [[nodiscard]] -constexpr bool valid(TileSheetV5 const&ts) noexcept { +constexpr bool valid(TileSheetV5 const &ts) noexcept { return (ts.bpp == 4 || ts.bpp == 8) && valid(ts.subsheet); } @@ -376,24 +376,24 @@ constexpr ox::Error repair(TileSheetV5 &ts) noexcept { using TileSheet = TileSheetV5; [[nodiscard]] -std::size_t idx(TileSheet::SubSheet const&ss, ox::Point const&pt) noexcept; +std::size_t idx(TileSheet::SubSheet const &ss, ox::Point const &pt) noexcept; [[nodiscard]] -size_t getTileCnt(TileSheet const&ts) noexcept; +size_t getTileCnt(TileSheet const &ts) noexcept; [[nodiscard]] -TileSheet::SubSheet const*getSubsheet(TileSheet const&ts, SubSheetId id) noexcept; +TileSheet::SubSheet const*getSubsheet(TileSheet const &ts, SubSheetId id) noexcept; [[nodiscard]] -ox::Optional getTileIdx(TileSheet const&ts, SubSheetId id) noexcept; +ox::Optional getTileIdx(TileSheet const &ts, SubSheetId id) noexcept; [[nodiscard]] -uint8_t getPixel(TileSheet::SubSheet const&ss, std::size_t idx) noexcept; +uint8_t getPixel(TileSheet::SubSheet const &ss, std::size_t idx) noexcept; [[nodiscard]] -uint8_t getPixel(TileSheet::SubSheet const&ss, ox::Point const&pt) noexcept; +uint8_t getPixel(TileSheet::SubSheet const &ss, ox::Point const &pt) noexcept; -void setPixel(TileSheet::SubSheet &ss, ox::Point const&pt, uint8_t palIdx) noexcept; +void setPixel(TileSheet::SubSheet &ss, ox::Point const &pt, uint8_t palIdx) noexcept; ox::Error setPixelCount(TileSheet::SubSheet &ss, std::size_t cnt) noexcept; @@ -406,14 +406,14 @@ void flipY(TileSheet::SubSheet &ss, ox::Point const &a, ox::Point const &b) noex * @return a count of the pixels in this sheet */ [[nodiscard]] -unsigned pixelCnt(TileSheet::SubSheet const&ss) noexcept; +unsigned pixelCnt(TileSheet::SubSheet const &ss) noexcept; /** * * @param ss * @param sz size of Subsheet in tiles (not pixels) */ -ox::Error resizeSubsheet(TileSheet::SubSheet &ss, ox::Size const&sz) noexcept; +ox::Error resizeSubsheet(TileSheet::SubSheet &ss, ox::Size const &sz) noexcept; /** * validateSubSheetIdx takes a SubSheetIdx and moves the index to the @@ -424,7 +424,7 @@ ox::Error resizeSubsheet(TileSheet::SubSheet &ss, ox::Size const&sz) noexcept; * @return a valid version of idx */ [[nodiscard]] -TileSheet::SubSheetIdx validateSubSheetIdx(TileSheet const&ts, TileSheet::SubSheetIdx idx) noexcept; +TileSheet::SubSheetIdx validateSubSheetIdx(TileSheet const &ts, TileSheet::SubSheetIdx idx) noexcept; ox::Result getSubSheetIdx(TileSheet const &ts, SubSheetId pId) noexcept; @@ -438,7 +438,7 @@ ox::Result getSubSheet( [[nodiscard]] TileSheet::SubSheet &getSubSheet( - ox::SpanView const&idx, + ox::SpanView const &idx, std::size_t idxIt, TileSheet::SubSheet &pSubsheet) noexcept; @@ -447,7 +447,7 @@ TileSheet::SubSheet &getSubSheet( #pragma GCC diagnostic ignored "-Wdangling-reference" #endif [[nodiscard]] -TileSheet::SubSheet const&getSubSheet(TileSheet const&ts, ox::SpanView const &idx) noexcept; +TileSheet::SubSheet const &getSubSheet(TileSheet const &ts, ox::SpanView const &idx) noexcept; [[nodiscard]] TileSheet::SubSheet &getSubSheet(TileSheet &ts, ox::SpanView const &idx) noexcept; @@ -461,27 +461,29 @@ ox::Error insertSubSheet(TileSheet &ts, ox::SpanView const &idx, TileS ox::Error rmSubSheet( TileSheet &ts, - TileSheet::SubSheetIdx const&idx, + TileSheet::SubSheetIdx const &idx, std::size_t idxIt, TileSheet::SubSheet &pSubsheet) noexcept; -ox::Error rmSubSheet(TileSheet &ts, TileSheet::SubSheetIdx const&idx) noexcept; +ox::Error rmSubSheet(TileSheet &ts, TileSheet::SubSheetIdx const &idx) noexcept; [[nodiscard]] uint8_t getPixel( - TileSheet const&ts, - ox::Point const&pt, - TileSheet::SubSheetIdx const&subsheetIdx) noexcept; + TileSheet const &ts, + ox::Point const &pt, + TileSheet::SubSheetIdx const &subsheetIdx) noexcept; -ox::Result getIdFor(TileSheet const&ts, ox::StringViewCR path) noexcept; +ox::Result getIdFor(TileSheet const &ts, ox::StringViewCR path) noexcept; -ox::Result getTileOffset(TileSheet const&ts, ox::StringViewCR pNamePath) noexcept; +ox::Result getTileOffset(TileSheet const &ts, ox::StringViewCR pNamePath) noexcept; -ox::Result getTileOffset(TileSheet const&ts, SubSheetId pId) noexcept; +ox::Result getTileOffset(TileSheet const &ts, SubSheetId pId) noexcept; -ox::Result getNameFor(TileSheet::SubSheet const&ss, SubSheetId pId) noexcept; +ox::Result getNameFor(TileSheet::SubSheet const &ss, SubSheetId pId) noexcept; -ox::Result getNameFor(TileSheet const&ts, SubSheetId pId) noexcept; +ox::Result getNameFor(TileSheet &ts, SubSheetId pId) noexcept; + +ox::Result getNameFor(TileSheet const &ts, SubSheetId pId) noexcept; [[nodiscard]] ox::Vector pixels(TileSheet &ts) noexcept; @@ -497,7 +499,7 @@ struct CompactTileSheetV1 { }; [[nodiscard]] -constexpr bool valid(CompactTileSheetV1 const&ts) noexcept { +constexpr bool valid(CompactTileSheetV1 const &ts) noexcept { return ts.bpp == 4 || ts.bpp == 8; } @@ -506,22 +508,22 @@ using CompactTileSheet = CompactTileSheetV1; [[nodiscard]] uint8_t getPixel4Bpp( - CompactTileSheet const&ts, + CompactTileSheet const &ts, size_t idx) noexcept; [[nodiscard]] uint8_t getPixel8Bpp( - CompactTileSheet const&ts, + CompactTileSheet const &ts, size_t idx) noexcept; [[nodiscard]] ox::Pair get2Pixels4Bpp( - CompactTileSheet const&ts, + CompactTileSheet const &ts, size_t idx) noexcept; [[nodiscard]] ox::Pair get2Pixels8Bpp( - CompactTileSheet const&ts, + CompactTileSheet const &ts, size_t idx) noexcept; OX_MODEL_BEGIN(TileSheetV1) @@ -601,8 +603,8 @@ OX_MODEL_BEGIN(CompactTileSheetV1) OX_MODEL_END() ox::Vector resizeTileSheetData( - ox::Vector const&srcPixels, - ox::Size const&srcSize, + ox::Vector const &srcPixels, + ox::Size const &srcSize, int scale = 2) noexcept; } diff --git a/src/nostalgia/modules/gfx/src/studio/subcommands/export-tilesheet/export-tilesheet.cpp b/src/nostalgia/modules/gfx/src/studio/subcommands/export-tilesheet/export-tilesheet.cpp index 03f510b..31c0ce3 100644 --- a/src/nostalgia/modules/gfx/src/studio/subcommands/export-tilesheet/export-tilesheet.cpp +++ b/src/nostalgia/modules/gfx/src/studio/subcommands/export-tilesheet/export-tilesheet.cpp @@ -133,6 +133,9 @@ ox::Error cmdExportTilesheet(studio::Project &project, ox::SpanView "[-scale ]\n"); } }; + if (args.empty()) { + return {}; + } OX_REQUIRE(srcPath, clargs.getString("src-path").transformError(1, "no src path specified")); OX_REQUIRE(dstPath, clargs.getString("dst-path").transformError(2, "no dst path specified")); auto const palPath = clargs.getString("pal-path", ""); diff --git a/src/olympic/keel/include/keel/typeconv.hpp b/src/olympic/keel/include/keel/typeconv.hpp index f5e0d68..971bf22 100644 --- a/src/olympic/keel/include/keel/typeconv.hpp +++ b/src/olympic/keel/include/keel/typeconv.hpp @@ -140,7 +140,7 @@ class ConverterFunc final: public BaseConverter { private: template struct ParamPack { - using Src = SrcType; + using Src = ox::remove_const_t; using Dst = DstType; }; diff --git a/src/olympic/studio/applib/src/app.cpp b/src/olympic/studio/applib/src/app.cpp index 6729bc1..186d84f 100644 --- a/src/olympic/studio/applib/src/app.cpp +++ b/src/olympic/studio/applib/src/app.cpp @@ -90,7 +90,10 @@ static ox::Error run( return ox::Error{2, "failed to load project directory"}; } Project project{*kctx.value, projectDir, projectDataDir}; - return c.func(project, args + numCmdArgs); + return c.func( + project, + args.size() > numCmdArgs ? + args + numCmdArgs : ox::SpanView{}); } } return ox::Error{1, "command not found"};