Merge commit '8a74e044dc5fa44ba10dbbf7d2812c7070ff4f7c'
All checks were successful
Build / build (push) Successful in 1m30s
All checks were successful
Build / build (push) Successful in 1m30s
This commit is contained in:
@ -168,9 +168,9 @@ OX_MODEL_BEGIN(PaletteV3)
|
|||||||
OX_MODEL_END()
|
OX_MODEL_END()
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
constexpr bool valid(PaletteV3 const&p) noexcept {
|
constexpr bool valid(PaletteV3 const &p) noexcept {
|
||||||
auto const colors = p.colorInfo.size();
|
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;
|
return page.size() == colors;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -198,9 +198,9 @@ OX_MODEL_BEGIN(PaletteV4)
|
|||||||
OX_MODEL_END()
|
OX_MODEL_END()
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
constexpr bool valid(PaletteV4 const&p) noexcept {
|
constexpr bool valid(PaletteV4 const &p) noexcept {
|
||||||
auto const colors = p.colorNames.size();
|
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;
|
return page.colors.size() == colors;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
namespace nostalgia::gfx {
|
namespace nostalgia::gfx {
|
||||||
|
|
||||||
[[nodiscard]]
|
[[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 tileWidth = TileWidth * scale;
|
||||||
auto const tileHeight = TileHeight * scale;
|
auto const tileHeight = TileHeight * scale;
|
||||||
auto const pixelsPerTile = tileWidth * tileHeight;
|
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]]
|
[[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);
|
return ptToIdx(pt.x, pt.y, c * TileWidth, scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]]
|
[[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 tileWidth = TileWidth * scale;
|
||||||
auto const tileHeight = TileHeight * scale;
|
auto const tileHeight = TileHeight * scale;
|
||||||
auto const pixelsPerTile = tileWidth * tileHeight;
|
auto const pixelsPerTile = tileWidth * tileHeight;
|
||||||
|
@ -30,7 +30,7 @@ struct TileSheetV1 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
constexpr bool valid(TileSheetV1 const&ts) noexcept {
|
constexpr bool valid(TileSheetV1 const &ts) noexcept {
|
||||||
auto const bytes = static_cast<size_t>(ts.columns * ts.rows * PixelsPerTile) / (ts.bpp == 4 ? 2 : 1);
|
auto const bytes = static_cast<size_t>(ts.columns * ts.rows * PixelsPerTile) / (ts.bpp == 4 ? 2 : 1);
|
||||||
return (ts.bpp == 4 || ts.bpp == 8) && ts.pixels.size() == bytes;
|
return (ts.bpp == 4 || ts.bpp == 8) && ts.pixels.size() == bytes;
|
||||||
}
|
}
|
||||||
@ -71,16 +71,16 @@ struct TileSheetV2 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
[[nodiscard]]
|
[[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<size_t>(ss.columns * ss.rows * PixelsPerTile) / (bpp == 4 ? 2 : 1);
|
auto const bytes = static_cast<size_t>(ss.columns * ss.rows * PixelsPerTile) / (bpp == 4 ? 2 : 1);
|
||||||
return ox::all_of(ss.subsheets.begin(), ss.subsheets.end(),
|
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);
|
return bytes == s.pixels.size() && valid(s, bpp);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]]
|
[[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);
|
return (ts.bpp == 4 || ts.bpp == 8) && valid(ts.subsheet, ts.bpp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,16 +141,16 @@ struct TileSheetV3 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
[[nodiscard]]
|
[[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<size_t>(ss.columns * ss.rows * PixelsPerTile) / (bpp == 4 ? 2 : 1);
|
auto const bytes = static_cast<size_t>(ss.columns * ss.rows * PixelsPerTile) / (bpp == 4 ? 2 : 1);
|
||||||
return ox::all_of(ss.subsheets.begin(), ss.subsheets.end(),
|
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);
|
return bytes == s.pixels.size() && valid(s, bpp);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]]
|
[[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);
|
return (ts.bpp == 4 || ts.bpp == 8) && valid(ts.subsheet, ts.bpp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -233,18 +233,18 @@ struct TileSheetV4 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
[[nodiscard]]
|
[[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<size_t>(ss.columns * ss.rows * PixelsPerTile) / (bpp == 4 ? 2 : 1);
|
auto const bytes = static_cast<size_t>(ss.columns * ss.rows * PixelsPerTile) / (bpp == 4 ? 2 : 1);
|
||||||
return
|
return
|
||||||
(ss.pixels.empty() || ss.subsheets.empty()) &&
|
(ss.pixels.empty() || ss.subsheets.empty()) &&
|
||||||
ox::all_of(ss.subsheets.begin(), ss.subsheets.end(),
|
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);
|
return bytes == s.pixels.size() && valid(s, bpp);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]]
|
[[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);
|
return (ts.bpp == 4 || ts.bpp == 8) && valid(ts.subsheet, ts.bpp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -334,19 +334,19 @@ struct TileSheetV5 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
constexpr bool valid(TileSheetV5::SubSheet const&ss) noexcept {
|
constexpr bool valid(TileSheetV5::SubSheet const &ss) noexcept {
|
||||||
if (ss.subsheets.empty()) {
|
if (ss.subsheets.empty()) {
|
||||||
return std::cmp_equal(ss.columns * ss.rows * PixelsPerTile, ss.pixels.size());
|
return std::cmp_equal(ss.columns * ss.rows * PixelsPerTile, ss.pixels.size());
|
||||||
} else {
|
} else {
|
||||||
return ss.pixels.empty() && ox::all_of(ss.subsheets.begin(), ss.subsheets.end(),
|
return ss.pixels.empty() && ox::all_of(ss.subsheets.begin(), ss.subsheets.end(),
|
||||||
[](TileSheetV5::SubSheet const&s) {
|
[](TileSheetV5::SubSheet const &s) {
|
||||||
return valid(s);
|
return valid(s);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]]
|
[[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);
|
return (ts.bpp == 4 || ts.bpp == 8) && valid(ts.subsheet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -376,24 +376,24 @@ constexpr ox::Error repair(TileSheetV5 &ts) noexcept {
|
|||||||
using TileSheet = TileSheetV5;
|
using TileSheet = TileSheetV5;
|
||||||
|
|
||||||
[[nodiscard]]
|
[[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]]
|
[[nodiscard]]
|
||||||
size_t getTileCnt(TileSheet const&ts) noexcept;
|
size_t getTileCnt(TileSheet const &ts) noexcept;
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
TileSheet::SubSheet const*getSubsheet(TileSheet const&ts, SubSheetId id) noexcept;
|
TileSheet::SubSheet const*getSubsheet(TileSheet const &ts, SubSheetId id) noexcept;
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
ox::Optional<size_t> getTileIdx(TileSheet const&ts, SubSheetId id) noexcept;
|
ox::Optional<size_t> getTileIdx(TileSheet const &ts, SubSheetId id) noexcept;
|
||||||
|
|
||||||
[[nodiscard]]
|
[[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]]
|
[[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;
|
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
|
* @return a count of the pixels in this sheet
|
||||||
*/
|
*/
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
unsigned pixelCnt(TileSheet::SubSheet const&ss) noexcept;
|
unsigned pixelCnt(TileSheet::SubSheet const &ss) noexcept;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param ss
|
* @param ss
|
||||||
* @param sz size of Subsheet in tiles (not pixels)
|
* @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
|
* 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
|
* @return a valid version of idx
|
||||||
*/
|
*/
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
TileSheet::SubSheetIdx validateSubSheetIdx(TileSheet const&ts, TileSheet::SubSheetIdx idx) noexcept;
|
TileSheet::SubSheetIdx validateSubSheetIdx(TileSheet const &ts, TileSheet::SubSheetIdx idx) noexcept;
|
||||||
|
|
||||||
ox::Result<TileSheet::SubSheetIdx> getSubSheetIdx(TileSheet const &ts, SubSheetId pId) noexcept;
|
ox::Result<TileSheet::SubSheetIdx> getSubSheetIdx(TileSheet const &ts, SubSheetId pId) noexcept;
|
||||||
|
|
||||||
@ -438,7 +438,7 @@ ox::Result<TileSheet::SubSheet const*> getSubSheet(
|
|||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
TileSheet::SubSheet &getSubSheet(
|
TileSheet::SubSheet &getSubSheet(
|
||||||
ox::SpanView<uint32_t> const&idx,
|
ox::SpanView<uint32_t> const &idx,
|
||||||
std::size_t idxIt,
|
std::size_t idxIt,
|
||||||
TileSheet::SubSheet &pSubsheet) noexcept;
|
TileSheet::SubSheet &pSubsheet) noexcept;
|
||||||
|
|
||||||
@ -447,7 +447,7 @@ TileSheet::SubSheet &getSubSheet(
|
|||||||
#pragma GCC diagnostic ignored "-Wdangling-reference"
|
#pragma GCC diagnostic ignored "-Wdangling-reference"
|
||||||
#endif
|
#endif
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
TileSheet::SubSheet const&getSubSheet(TileSheet const&ts, ox::SpanView<uint32_t> const &idx) noexcept;
|
TileSheet::SubSheet const &getSubSheet(TileSheet const &ts, ox::SpanView<uint32_t> const &idx) noexcept;
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
TileSheet::SubSheet &getSubSheet(TileSheet &ts, ox::SpanView<uint32_t> const &idx) noexcept;
|
TileSheet::SubSheet &getSubSheet(TileSheet &ts, ox::SpanView<uint32_t> const &idx) noexcept;
|
||||||
@ -461,27 +461,29 @@ ox::Error insertSubSheet(TileSheet &ts, ox::SpanView<uint32_t> const &idx, TileS
|
|||||||
|
|
||||||
ox::Error rmSubSheet(
|
ox::Error rmSubSheet(
|
||||||
TileSheet &ts,
|
TileSheet &ts,
|
||||||
TileSheet::SubSheetIdx const&idx,
|
TileSheet::SubSheetIdx const &idx,
|
||||||
std::size_t idxIt,
|
std::size_t idxIt,
|
||||||
TileSheet::SubSheet &pSubsheet) noexcept;
|
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]]
|
[[nodiscard]]
|
||||||
uint8_t getPixel(
|
uint8_t getPixel(
|
||||||
TileSheet const&ts,
|
TileSheet const &ts,
|
||||||
ox::Point const&pt,
|
ox::Point const &pt,
|
||||||
TileSheet::SubSheetIdx const&subsheetIdx) noexcept;
|
TileSheet::SubSheetIdx const &subsheetIdx) noexcept;
|
||||||
|
|
||||||
ox::Result<SubSheetId> getIdFor(TileSheet const&ts, ox::StringViewCR path) noexcept;
|
ox::Result<SubSheetId> getIdFor(TileSheet const &ts, ox::StringViewCR path) noexcept;
|
||||||
|
|
||||||
ox::Result<unsigned> getTileOffset(TileSheet const&ts, ox::StringViewCR pNamePath) noexcept;
|
ox::Result<unsigned> getTileOffset(TileSheet const &ts, ox::StringViewCR pNamePath) noexcept;
|
||||||
|
|
||||||
ox::Result<uint32_t> getTileOffset(TileSheet const&ts, SubSheetId pId) noexcept;
|
ox::Result<uint32_t> getTileOffset(TileSheet const &ts, SubSheetId pId) noexcept;
|
||||||
|
|
||||||
ox::Result<ox::StringView> getNameFor(TileSheet::SubSheet const&ss, SubSheetId pId) noexcept;
|
ox::Result<ox::StringView> getNameFor(TileSheet::SubSheet const &ss, SubSheetId pId) noexcept;
|
||||||
|
|
||||||
ox::Result<ox::StringView> getNameFor(TileSheet const&ts, SubSheetId pId) noexcept;
|
ox::Result<ox::StringView> getNameFor(TileSheet &ts, SubSheetId pId) noexcept;
|
||||||
|
|
||||||
|
ox::Result<ox::StringView> getNameFor(TileSheet const &ts, SubSheetId pId) noexcept;
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
ox::Vector<uint8_t> pixels(TileSheet &ts) noexcept;
|
ox::Vector<uint8_t> pixels(TileSheet &ts) noexcept;
|
||||||
@ -497,7 +499,7 @@ struct CompactTileSheetV1 {
|
|||||||
};
|
};
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
constexpr bool valid(CompactTileSheetV1 const&ts) noexcept {
|
constexpr bool valid(CompactTileSheetV1 const &ts) noexcept {
|
||||||
return ts.bpp == 4 || ts.bpp == 8;
|
return ts.bpp == 4 || ts.bpp == 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -506,22 +508,22 @@ using CompactTileSheet = CompactTileSheetV1;
|
|||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
uint8_t getPixel4Bpp(
|
uint8_t getPixel4Bpp(
|
||||||
CompactTileSheet const&ts,
|
CompactTileSheet const &ts,
|
||||||
size_t idx) noexcept;
|
size_t idx) noexcept;
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
uint8_t getPixel8Bpp(
|
uint8_t getPixel8Bpp(
|
||||||
CompactTileSheet const&ts,
|
CompactTileSheet const &ts,
|
||||||
size_t idx) noexcept;
|
size_t idx) noexcept;
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
ox::Pair<uint8_t> get2Pixels4Bpp(
|
ox::Pair<uint8_t> get2Pixels4Bpp(
|
||||||
CompactTileSheet const&ts,
|
CompactTileSheet const &ts,
|
||||||
size_t idx) noexcept;
|
size_t idx) noexcept;
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
ox::Pair<uint8_t> get2Pixels8Bpp(
|
ox::Pair<uint8_t> get2Pixels8Bpp(
|
||||||
CompactTileSheet const&ts,
|
CompactTileSheet const &ts,
|
||||||
size_t idx) noexcept;
|
size_t idx) noexcept;
|
||||||
|
|
||||||
OX_MODEL_BEGIN(TileSheetV1)
|
OX_MODEL_BEGIN(TileSheetV1)
|
||||||
@ -601,8 +603,8 @@ OX_MODEL_BEGIN(CompactTileSheetV1)
|
|||||||
OX_MODEL_END()
|
OX_MODEL_END()
|
||||||
|
|
||||||
ox::Vector<uint32_t> resizeTileSheetData(
|
ox::Vector<uint32_t> resizeTileSheetData(
|
||||||
ox::Vector<uint32_t> const&srcPixels,
|
ox::Vector<uint32_t> const &srcPixels,
|
||||||
ox::Size const&srcSize,
|
ox::Size const &srcSize,
|
||||||
int scale = 2) noexcept;
|
int scale = 2) noexcept;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -133,6 +133,9 @@ ox::Error cmdExportTilesheet(studio::Project &project, ox::SpanView<ox::CString>
|
|||||||
"[-scale <int>]\n");
|
"[-scale <int>]\n");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
if (args.empty()) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
OX_REQUIRE(srcPath, clargs.getString("src-path").transformError(1, "no src path specified"));
|
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"));
|
OX_REQUIRE(dstPath, clargs.getString("dst-path").transformError(2, "no dst path specified"));
|
||||||
auto const palPath = clargs.getString("pal-path", "");
|
auto const palPath = clargs.getString("pal-path", "");
|
||||||
|
@ -90,7 +90,10 @@ static ox::Error run(
|
|||||||
return ox::Error{2, "failed to load project directory"};
|
return ox::Error{2, "failed to load project directory"};
|
||||||
}
|
}
|
||||||
Project project{*kctx.value, projectDir, projectDataDir};
|
Project project{*kctx.value, projectDir, projectDataDir};
|
||||||
return c.func(project, args + numCmdArgs);
|
return c.func(
|
||||||
|
project,
|
||||||
|
args.size() > numCmdArgs ?
|
||||||
|
args + numCmdArgs : ox::SpanView<ox::CString>{});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ox::Error{1, "command not found"};
|
return ox::Error{1, "command not found"};
|
||||||
|
Reference in New Issue
Block a user