From bd2e88cd888abf32f9319e2eadecff1da469a424 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Fri, 30 Aug 2024 20:47:43 -0500 Subject: [PATCH] [olympic,nostalgia] Cleanup with StringParam --- .../paletteeditor/paletteeditor-imgui.cpp | 4 +- .../paletteeditor/paletteeditor-imgui.hpp | 2 +- .../tilesheeteditor/commands/drawcommand.cpp | 12 ++--- .../tilesheeteditor/commands/drawcommand.hpp | 4 +- .../tilesheeteditor/tilesheeteditor-imgui.cpp | 6 +-- .../tilesheeteditor/tilesheeteditor-imgui.hpp | 2 +- src/olympic/studio/applib/src/newmenu.cpp | 2 +- src/olympic/studio/applib/src/newproject.cpp | 4 +- src/olympic/studio/applib/src/newproject.hpp | 2 +- src/olympic/studio/applib/src/studioapp.cpp | 16 +++--- src/olympic/studio/applib/src/studioapp.hpp | 4 +- .../studio/modlib/include/studio/editor.hpp | 2 +- .../modlib/include/studio/itemmaker.hpp | 49 +++++++++---------- .../studio/modlib/include/studio/module.hpp | 4 +- .../studio/modlib/include/studio/popup.hpp | 2 +- src/olympic/studio/modlib/src/editor.cpp | 4 +- 16 files changed, 59 insertions(+), 60 deletions(-) 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 52bbd234..8faf6a02 100644 --- a/src/nostalgia/modules/core/src/studio/paletteeditor/paletteeditor-imgui.cpp +++ b/src/nostalgia/modules/core/src/studio/paletteeditor/paletteeditor-imgui.cpp @@ -17,8 +17,8 @@ namespace nostalgia::core { namespace ig = studio::ig; -PaletteEditorImGui::PaletteEditorImGui(studio::StudioContext &sctx, ox::StringView const path): - Editor(path), +PaletteEditorImGui::PaletteEditorImGui(studio::StudioContext &sctx, ox::StringParam path): + Editor(std::move(path)), m_sctx(sctx), m_tctx(sctx.tctx), m_pal(*keel::readObj(keelCtx(m_tctx), itemPath()).unwrapThrow()) { diff --git a/src/nostalgia/modules/core/src/studio/paletteeditor/paletteeditor-imgui.hpp b/src/nostalgia/modules/core/src/studio/paletteeditor/paletteeditor-imgui.hpp index c448ec2a..0289f059 100644 --- a/src/nostalgia/modules/core/src/studio/paletteeditor/paletteeditor-imgui.hpp +++ b/src/nostalgia/modules/core/src/studio/paletteeditor/paletteeditor-imgui.hpp @@ -21,7 +21,7 @@ class PaletteEditorImGui: public studio::Editor { size_t m_page = 0; public: - PaletteEditorImGui(studio::StudioContext &sctx, ox::StringView path); + PaletteEditorImGui(studio::StudioContext &sctx, ox::StringParam path); void keyStateChanged(turbine::Key key, bool down) override; diff --git a/src/nostalgia/modules/core/src/studio/tilesheeteditor/commands/drawcommand.cpp b/src/nostalgia/modules/core/src/studio/tilesheeteditor/commands/drawcommand.cpp index f99b783a..1353d5e3 100644 --- a/src/nostalgia/modules/core/src/studio/tilesheeteditor/commands/drawcommand.cpp +++ b/src/nostalgia/modules/core/src/studio/tilesheeteditor/commands/drawcommand.cpp @@ -21,13 +21,13 @@ DrawCommand::DrawCommand( DrawCommand::DrawCommand( TileSheet &img, TileSheet::SubSheetIdx subSheetIdx, - const ox::Vector &idxList, + ox::Vector const&idxList, int palIdx) noexcept: m_img(img), m_subSheetIdx(std::move(subSheetIdx)), m_palIdx(palIdx) { auto &subsheet = getSubSheet(m_img, m_subSheetIdx); - for (const auto idx : idxList) { + for (auto const idx : idxList) { m_changes.emplace_back(static_cast(idx), getPixel(subsheet, m_img.bpp, idx)); } } @@ -36,7 +36,7 @@ bool DrawCommand::append(std::size_t idx) noexcept { auto &subsheet = getSubSheet(m_img, m_subSheetIdx); if (m_changes.back().value->idx != idx && getPixel(subsheet, m_img.bpp, idx) != m_palIdx) { // duplicate entries are bad - auto existing = ox::find_if(m_changes.cbegin(), m_changes.cend(), [idx](const auto &c) { + auto existing = ox::find_if(m_changes.cbegin(), m_changes.cend(), [idx](auto const&c) { return c.idx == idx; }); if (existing == m_changes.cend()) { @@ -48,7 +48,7 @@ bool DrawCommand::append(std::size_t idx) noexcept { return false; } -bool DrawCommand::append(const ox::Vector &idxList) noexcept { +bool DrawCommand::append(ox::Vector const&idxList) noexcept { auto out = false; for (auto idx : idxList) { out = append(idx) || out; @@ -58,7 +58,7 @@ bool DrawCommand::append(const ox::Vector &idxList) noexcept { ox::Error DrawCommand::redo() noexcept { auto &subsheet = getSubSheet(m_img, m_subSheetIdx); - for (const auto &c : m_changes) { + for (auto const&c : m_changes) { setPixel(subsheet, m_img.bpp, c.idx, static_cast(m_palIdx)); } return {}; @@ -66,7 +66,7 @@ ox::Error DrawCommand::redo() noexcept { ox::Error DrawCommand::undo() noexcept { auto &subsheet = getSubSheet(m_img, m_subSheetIdx); - for (const auto &c : m_changes) { + for (auto const&c : m_changes) { setPixel(subsheet, m_img.bpp, c.idx, static_cast(c.oldPalIdx)); } return {}; diff --git a/src/nostalgia/modules/core/src/studio/tilesheeteditor/commands/drawcommand.hpp b/src/nostalgia/modules/core/src/studio/tilesheeteditor/commands/drawcommand.hpp index 9c517fbb..3c0befeb 100644 --- a/src/nostalgia/modules/core/src/studio/tilesheeteditor/commands/drawcommand.hpp +++ b/src/nostalgia/modules/core/src/studio/tilesheeteditor/commands/drawcommand.hpp @@ -33,12 +33,12 @@ class DrawCommand: public TileSheetCommand { DrawCommand( TileSheet &img, TileSheet::SubSheetIdx subSheetIdx, - const ox::Vector &idxList, + ox::Vector const&idxList, int palIdx) noexcept; bool append(std::size_t idx) noexcept; - bool append(const ox::Vector &idxList) noexcept; + bool append(ox::Vector const&idxList) noexcept; ox::Error redo() noexcept final; diff --git a/src/nostalgia/modules/core/src/studio/tilesheeteditor/tilesheeteditor-imgui.cpp b/src/nostalgia/modules/core/src/studio/tilesheeteditor/tilesheeteditor-imgui.cpp index f14c4451..e7d68791 100644 --- a/src/nostalgia/modules/core/src/studio/tilesheeteditor/tilesheeteditor-imgui.cpp +++ b/src/nostalgia/modules/core/src/studio/tilesheeteditor/tilesheeteditor-imgui.cpp @@ -86,11 +86,11 @@ static ox::Error toPngFile( 8))); } -TileSheetEditorImGui::TileSheetEditorImGui(studio::StudioContext &sctx, ox::StringView const path): - Editor(path), +TileSheetEditorImGui::TileSheetEditorImGui(studio::StudioContext &sctx, ox::StringParam path): + Editor(std::move(path)), m_sctx(sctx), m_tctx(m_sctx.tctx), - m_view(m_sctx, path, *undoStack()), + m_view(m_sctx, itemPath(), *undoStack()), m_model(m_view.model()) { std::ignore = setPaletteSelection(); // connect signal/slots diff --git a/src/nostalgia/modules/core/src/studio/tilesheeteditor/tilesheeteditor-imgui.hpp b/src/nostalgia/modules/core/src/studio/tilesheeteditor/tilesheeteditor-imgui.hpp index deb45d47..251a27c0 100644 --- a/src/nostalgia/modules/core/src/studio/tilesheeteditor/tilesheeteditor-imgui.hpp +++ b/src/nostalgia/modules/core/src/studio/tilesheeteditor/tilesheeteditor-imgui.hpp @@ -67,7 +67,7 @@ class TileSheetEditorImGui: public studio::Editor { TileSheetTool m_tool = TileSheetTool::Draw; public: - TileSheetEditorImGui(studio::StudioContext &sctx, ox::StringView path); + TileSheetEditorImGui(studio::StudioContext &sctx, ox::StringParam path); ~TileSheetEditorImGui() override = default; diff --git a/src/olympic/studio/applib/src/newmenu.cpp b/src/olympic/studio/applib/src/newmenu.cpp index 7fea9923..35b282b8 100644 --- a/src/olympic/studio/applib/src/newmenu.cpp +++ b/src/olympic/studio/applib/src/newmenu.cpp @@ -13,7 +13,7 @@ namespace studio { NewMenu::NewMenu() noexcept { - setTitle(ox::String("New Item")); + setTitle("New Item"); setSize({230, 140}); } diff --git a/src/olympic/studio/applib/src/newproject.cpp b/src/olympic/studio/applib/src/newproject.cpp index 284810ad..6957791c 100644 --- a/src/olympic/studio/applib/src/newproject.cpp +++ b/src/olympic/studio/applib/src/newproject.cpp @@ -12,8 +12,8 @@ namespace studio { -NewProject::NewProject(ox::String projectDatadir) noexcept: m_projectDataDir(std::move(projectDatadir)) { - setTitle(ox::String("New Project")); +NewProject::NewProject(ox::StringParam projectDatadir) noexcept: m_projectDataDir(std::move(projectDatadir)) { + setTitle("New Project"); setSize({230, 140}); } diff --git a/src/olympic/studio/applib/src/newproject.hpp b/src/olympic/studio/applib/src/newproject.hpp index eae284d6..ce6914ba 100644 --- a/src/olympic/studio/applib/src/newproject.hpp +++ b/src/olympic/studio/applib/src/newproject.hpp @@ -33,7 +33,7 @@ class NewProject: public studio::Popup { bool m_open = false; public: - NewProject(ox::String projectDatadir) noexcept; + NewProject(ox::StringParam projectDatadir) noexcept; void open() noexcept override; diff --git a/src/olympic/studio/applib/src/studioapp.cpp b/src/olympic/studio/applib/src/studioapp.cpp index 607627ae..db84e5a3 100644 --- a/src/olympic/studio/applib/src/studioapp.cpp +++ b/src/olympic/studio/applib/src/studioapp.cpp @@ -41,12 +41,12 @@ oxModelBegin(StudioConfig) oxModelFieldRename(showProjectExplorer, show_project_explorer) oxModelEnd() -StudioUI::StudioUI(turbine::Context &ctx, ox::StringView projectDataDir) noexcept: +StudioUI::StudioUI(turbine::Context &ctx, ox::StringParam projectDataDir) noexcept: m_sctx(*this, ctx), m_ctx(ctx), - m_projectDataDir(projectDataDir), + m_projectDataDir(std::move(projectDataDir)), m_projectExplorer(m_ctx), - m_newProject(ox::String(projectDataDir)), + m_newProject(m_projectDataDir), m_aboutPopup(m_ctx) { turbine::setApplicationData(m_ctx, &m_sctx); m_projectExplorer.fileChosen.connect(this, &StudioUI::openFile); @@ -326,11 +326,11 @@ ox::Error StudioUI::createOpenProject(ox::CRStringView path) noexcept { return m_project->writeTypeStore(); } -ox::Error StudioUI::openProjectPath(ox::CRStringView path) noexcept { - oxRequireM(fs, keel::loadRomFs(path)); +ox::Error StudioUI::openProjectPath(ox::StringParam path) noexcept { + oxRequireM(fs, keel::loadRomFs(path.view())); oxReturnError(keel::setRomFs(keelCtx(m_ctx), std::move(fs))); oxReturnError( - ox::make_unique_catch(keelCtx(m_ctx), ox::String(path), m_projectDataDir) + ox::make_unique_catch(keelCtx(m_ctx), std::move(path), m_projectDataDir) .moveTo(m_project)); auto const sctx = applicationData(m_ctx); sctx->project = m_project.get(); @@ -364,7 +364,7 @@ ox::Error StudioUI::openFileActiveTab(ox::CRStringView path, bool makeActiveTab) } return {}; } - oxRequire(ext, studio::fileExt(path).to([](auto const&v) {return ox::String(v);})); + oxRequire(ext, studio::fileExt(path)); // create Editor studio::BaseEditor *editor = nullptr; if (!m_editorMakers.contains(ext)) { @@ -392,7 +392,7 @@ ox::Error StudioUI::openFileActiveTab(ox::CRStringView path, bool makeActiveTab) m_activeEditorUpdatePending = editor; } // save to config - studio::editConfig(keelCtx(m_ctx), [&](StudioConfig &config) { + studio::editConfig(keelCtx(m_ctx), [&path](StudioConfig &config) { if (!config.openFiles.contains(path)) { config.openFiles.emplace_back(path); } diff --git a/src/olympic/studio/applib/src/studioapp.hpp b/src/olympic/studio/applib/src/studioapp.hpp index 30ae7991..059c9f72 100644 --- a/src/olympic/studio/applib/src/studioapp.hpp +++ b/src/olympic/studio/applib/src/studioapp.hpp @@ -48,7 +48,7 @@ class StudioUI: public ox::SignalHandler { bool m_showProjectExplorer = true; public: - explicit StudioUI(turbine::Context &ctx, ox::StringView projectDataDir) noexcept; + explicit StudioUI(turbine::Context &ctx, ox::StringParam projectDataDir) noexcept; void handleKeyEvent(turbine::Key, bool down) noexcept; @@ -85,7 +85,7 @@ class StudioUI: public ox::SignalHandler { ox::Error createOpenProject(ox::CRStringView path) noexcept; - ox::Error openProjectPath(ox::CRStringView path) noexcept; + ox::Error openProjectPath(ox::StringParam path) noexcept; ox::Error openFile(ox::CRStringView path) noexcept; diff --git a/src/olympic/studio/modlib/include/studio/editor.hpp b/src/olympic/studio/modlib/include/studio/editor.hpp index ab096b83..39d2736f 100644 --- a/src/olympic/studio/modlib/include/studio/editor.hpp +++ b/src/olympic/studio/modlib/include/studio/editor.hpp @@ -123,7 +123,7 @@ class Editor: public studio::BaseEditor { ox::String m_itemName; public: - Editor(ox::StringView itemPath) noexcept; + Editor(ox::StringParam itemPath) noexcept; [[nodiscard]] ox::CStringView itemPath() const noexcept final; diff --git a/src/olympic/studio/modlib/include/studio/itemmaker.hpp b/src/olympic/studio/modlib/include/studio/itemmaker.hpp index ee095a79..d386bfb2 100644 --- a/src/olympic/studio/modlib/include/studio/itemmaker.hpp +++ b/src/olympic/studio/modlib/include/studio/itemmaker.hpp @@ -19,17 +19,17 @@ class ItemMaker { ox::String const parentDir; ox::String const fileExt; constexpr explicit ItemMaker( - ox::StringView pName, - ox::StringView pParentDir, - ox::StringView pFileExt) noexcept: - typeName(pName), - parentDir(pParentDir), - fileExt(pFileExt) { + ox::StringParam pName, + ox::StringParam pParentDir, + ox::StringParam pFileExt) noexcept: + typeName{std::move(pName)}, + parentDir{std::move(pParentDir)}, + fileExt{std::move(pFileExt)} { } virtual ~ItemMaker() noexcept = default; [[nodiscard]] - inline virtual ox::String itemPath(ox::StringView pName) const noexcept { + virtual ox::String itemPath(ox::StringView pName) const noexcept { return ox::sfmt("/{}/{}.{}", parentDir, pName, fileExt); } @@ -39,8 +39,7 @@ class ItemMaker { * @param pName * @return path of file or error in Result */ - virtual ox::Result write( - studio::StudioContext &ctx, ox::CRStringView pName) const noexcept = 0; + virtual ox::Result write(StudioContext &ctx, ox::StringView pName) const noexcept = 0; }; template @@ -50,36 +49,36 @@ class ItemMakerT: public ItemMaker { ox::ClawFormat const m_fmt; public: constexpr ItemMakerT( - ox::StringView pDisplayName, - ox::StringView pParentDir, - ox::StringView fileExt, + ox::StringParam pDisplayName, + ox::StringParam pParentDir, + ox::StringParam fileExt, ox::ClawFormat pFmt = ox::ClawFormat::Metal) noexcept: - ItemMaker(pDisplayName, pParentDir, fileExt), + ItemMaker(std::move(pDisplayName), std::move(pParentDir), std::move(fileExt)), m_fmt(pFmt) { } constexpr ItemMakerT( - ox::StringView pDisplayName, - ox::StringView pParentDir, - ox::StringView fileExt, + ox::StringParam pDisplayName, + ox::StringParam pParentDir, + ox::StringParam fileExt, T pItem, ox::ClawFormat pFmt) noexcept: - ItemMaker(pDisplayName, pParentDir, fileExt), + ItemMaker(std::move(pDisplayName), std::move(pParentDir), std::move(fileExt)), m_item(std::move(pItem)), m_fmt(pFmt) { } constexpr ItemMakerT( - ox::StringView pDisplayName, - ox::StringView pParentDir, - ox::StringView fileExt, + ox::StringParam pDisplayName, + ox::StringParam pParentDir, + ox::StringParam fileExt, T &&pItem, ox::ClawFormat pFmt) noexcept: - ItemMaker(pDisplayName, pParentDir, fileExt), - m_item(std::move(pItem)), - m_fmt(pFmt) { + ItemMaker(std::move(pDisplayName), std::move(pParentDir), std::move(fileExt)), + m_item(std::move(pItem)), + m_fmt(pFmt) { } - ox::Result write(studio::StudioContext &sctx, ox::CRStringView pName) const noexcept override { + ox::Result write(studio::StudioContext &sctx, ox::StringView const pName) const noexcept override { auto const path = itemPath(pName); - keel::createUuidMapping(keelCtx(sctx.tctx), path, ox::UUID::generate().unwrap()); + createUuidMapping(keelCtx(sctx.tctx), path, ox::UUID::generate().unwrap()); oxReturnError(sctx.project->writeObj(path, m_item, m_fmt)); return path; } diff --git a/src/olympic/studio/modlib/include/studio/module.hpp b/src/olympic/studio/modlib/include/studio/module.hpp index 778bf520..a8fac916 100644 --- a/src/olympic/studio/modlib/include/studio/module.hpp +++ b/src/olympic/studio/modlib/include/studio/module.hpp @@ -35,9 +35,9 @@ class Module { template [[nodiscard]] -studio::EditorMaker editorMaker(studio::StudioContext &ctx, ox::CRStringView ext) noexcept { +studio::EditorMaker editorMaker(studio::StudioContext &ctx, ox::StringParam ext) noexcept { return { - {ox::String(ext)}, + {std::move(ext)}, [&ctx](ox::CRStringView path) -> ox::Result { return ox::makeCatch(ctx, path); } diff --git a/src/olympic/studio/modlib/include/studio/popup.hpp b/src/olympic/studio/modlib/include/studio/popup.hpp index 1fb0891c..4f6fb313 100644 --- a/src/olympic/studio/modlib/include/studio/popup.hpp +++ b/src/olympic/studio/modlib/include/studio/popup.hpp @@ -39,7 +39,7 @@ class Popup { m_size = {static_cast(sz.width), static_cast(sz.height)}; } - constexpr void setTitle(ox::String title) noexcept { + constexpr void setTitle(ox::StringParam title) noexcept { m_title = std::move(title); } diff --git a/src/olympic/studio/modlib/src/editor.cpp b/src/olympic/studio/modlib/src/editor.cpp index 4edc39c6..a806d191 100644 --- a/src/olympic/studio/modlib/src/editor.cpp +++ b/src/olympic/studio/modlib/src/editor.cpp @@ -115,8 +115,8 @@ void BaseEditor::setRequiresConstantRefresh(bool value) noexcept { } -Editor::Editor(ox::StringView itemPath) noexcept: - m_itemPath(itemPath), +Editor::Editor(ox::StringParam itemPath) noexcept: + m_itemPath(std::move(itemPath)), m_itemName(m_itemPath.substr(std::find(m_itemPath.rbegin(), m_itemPath.rend(), '/').offset() + 1)) { m_undoStack.changeTriggered.connect(this, &Editor::markUnsavedChanges); }