Compare commits
5 Commits
430cae1622
...
128ddb2ca6
Author | SHA1 | Date | |
---|---|---|---|
128ddb2ca6 | |||
f34704d845 | |||
fb5d3545fe | |||
2180f7bf6f | |||
dcad44403e |
@ -238,7 +238,7 @@ ox::Error resizeSubsheet(TileSheet::SubSheet &ss, int8_t pBpp, ox::Size const&sz
|
||||
* @return a valid version of idx
|
||||
*/
|
||||
[[nodiscard]]
|
||||
TileSheet::SubSheetIdx validateSubSheetIdx(TileSheet const&ts, TileSheet::SubSheetIdx const&idx) noexcept;
|
||||
TileSheet::SubSheetIdx validateSubSheetIdx(TileSheet const&ts, TileSheet::SubSheetIdx idx) noexcept;
|
||||
|
||||
[[nodiscard]]
|
||||
TileSheet::SubSheet const&getSubSheet(
|
||||
|
@ -46,9 +46,11 @@ ox::Error AddSubSheetCommand::undo() noexcept {
|
||||
parent.columns = s.columns;
|
||||
parent.pixels = std::move(s.pixels);
|
||||
parent.subsheets.clear();
|
||||
--m_img.idIt;
|
||||
} else {
|
||||
for (auto idx = m_addedSheets.rbegin(); idx != m_addedSheets.rend(); ++idx) {
|
||||
oxReturnError(rmSubSheet(m_img, *idx));
|
||||
--m_img.idIt;
|
||||
}
|
||||
}
|
||||
return {};
|
||||
|
@ -212,8 +212,8 @@ void TileSheetEditorImGui::draw(studio::StudioContext&) noexcept {
|
||||
}
|
||||
}
|
||||
auto const paneSize = ImGui::GetContentRegionAvail();
|
||||
auto const tileSheetParentSize = ImVec2(paneSize.x - m_palViewWidth, paneSize.y);
|
||||
auto const fbSize = ox::Vec2(tileSheetParentSize.x - 16, tileSheetParentSize.y - 16);
|
||||
auto const tileSheetParentSize = ImVec2{paneSize.x - m_palViewWidth, paneSize.y};
|
||||
auto const fbSize = ox::Vec2{tileSheetParentSize.x - 16, tileSheetParentSize.y - 16};
|
||||
ImGui::BeginChild("TileSheetView", tileSheetParentSize, true);
|
||||
{
|
||||
drawTileSheet(fbSize);
|
||||
@ -225,7 +225,7 @@ void TileSheetEditorImGui::draw(studio::StudioContext&) noexcept {
|
||||
auto const controlsSize = ImGui::GetContentRegionAvail();
|
||||
ImGui::BeginChild("ToolBox", {m_palViewWidth - 24, 30}, true);
|
||||
{
|
||||
auto const btnSz = ImVec2(45, 14);
|
||||
auto const btnSz = ImVec2{45, 14};
|
||||
if (ImGui::Selectable("Select", m_tool == TileSheetTool::Select, 0, btnSz)) {
|
||||
m_tool = TileSheetTool::Select;
|
||||
}
|
||||
@ -388,7 +388,7 @@ ox::Error TileSheetEditorImGui::exportSubhseetToPng(int scale) noexcept {
|
||||
|
||||
void TileSheetEditorImGui::drawTileSheet(ox::Vec2 const&fbSize) noexcept {
|
||||
auto const winPos = ImGui::GetWindowPos();
|
||||
auto const fbSizei = ox::Size(static_cast<int>(fbSize.x), static_cast<int>(fbSize.y));
|
||||
auto const fbSizei = ox::Size{static_cast<int>(fbSize.x), static_cast<int>(fbSize.y)};
|
||||
if (m_framebuffer.width != fbSizei.width || m_framebuffer.height != fbSizei.height) {
|
||||
glutils::resizeInitFrameBuffer(m_framebuffer, fbSizei.width, fbSizei.height);
|
||||
m_view.resizeView(fbSize);
|
||||
@ -404,11 +404,11 @@ void TileSheetEditorImGui::drawTileSheet(ox::Vec2 const&fbSize) noexcept {
|
||||
ImGui::Image(
|
||||
ig::toImTextureID(m_framebuffer.color.id),
|
||||
static_cast<ImVec2>(fbSize),
|
||||
ImVec2(0, 1),
|
||||
ImVec2(1, 0));
|
||||
{0, 1},
|
||||
{1, 0});
|
||||
// handle input, this must come after drawing
|
||||
auto const&io = ImGui::GetIO();
|
||||
auto const mousePos = ox::Vec2(ImGui::GetMousePos());
|
||||
auto const mousePos = ox::Vec2{ImGui::GetMousePos()};
|
||||
if (ImGui::IsItemHovered()) {
|
||||
auto const wheel = io.MouseWheel;
|
||||
auto const wheelh = io.MouseWheelH;
|
||||
@ -436,7 +436,7 @@ void TileSheetEditorImGui::drawTileSheet(ox::Vec2 const&fbSize) noexcept {
|
||||
}
|
||||
}
|
||||
if (ImGui::BeginPopupContextItem("TileMenu", ImGuiPopupFlags_MouseButtonRight)) {
|
||||
auto const popupPos = ox::Vec2(ImGui::GetWindowPos());
|
||||
auto const popupPos = ox::Vec2{ImGui::GetWindowPos()};
|
||||
if (ImGui::MenuItem("Insert Tile")) {
|
||||
m_view.insertTile(fbSize, clickPos(winPos, popupPos));
|
||||
}
|
||||
@ -504,8 +504,8 @@ void TileSheetEditorImGui::drawPaletteSelector() noexcept {
|
||||
auto ic = ImGui::GetColorU32(ImVec4(redf(c), greenf(c), bluef(c), 1));
|
||||
ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg, ic);
|
||||
ImGui::TableNextColumn();
|
||||
auto const&name = pal.colorInfo[i].name;
|
||||
ImGui::Text("%s", name.c_str());
|
||||
auto const&name = i < pal.colorInfo.size() ? pal.colorInfo[i].name.c_str() : "";
|
||||
ImGui::Text("%s", name);
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::Text("(%02d, %02d, %02d)", red16(c), green16(c), blue16(c));
|
||||
ImGui::TableNextRow();
|
||||
@ -556,7 +556,7 @@ void TileSheetEditorImGui::SubSheetEditor::draw(turbine::Context &tctx) noexcept
|
||||
auto const modSize = m_cols > 0;
|
||||
auto constexpr popupWidth = 235.f;
|
||||
auto const popupHeight = modSize ? 130.f : 85.f;
|
||||
auto const popupSz = ImVec2(popupWidth, popupHeight);
|
||||
auto const popupSz = ImVec2{popupWidth, popupHeight};
|
||||
if (ig::BeginPopup(tctx, popupName, m_show, popupSz)) {
|
||||
ImGui::InputText("Name", m_name.data(), m_name.cap());
|
||||
if (modSize) {
|
||||
@ -581,7 +581,7 @@ void TileSheetEditorImGui::ExportMenu::draw(turbine::Context &tctx) noexcept {
|
||||
}
|
||||
constexpr auto popupWidth = 235.f;
|
||||
constexpr auto popupHeight = 85.f;
|
||||
constexpr auto popupSz = ImVec2(popupWidth, popupHeight);
|
||||
constexpr auto popupSz = ImVec2{popupWidth, popupHeight};
|
||||
if (ig::BeginPopup(tctx, popupName, m_show, popupSz)) {
|
||||
ImGui::InputInt("Scale", &m_scale);
|
||||
m_scale = ox::clamp(m_scale, 1, 50);
|
||||
|
@ -191,27 +191,28 @@ ox::Result<ox::StringView> getNameFor(TileSheet::SubSheet const&ss, SubSheetId p
|
||||
|
||||
|
||||
TileSheet::SubSheetIdx validateSubSheetIdx(
|
||||
TileSheet::SubSheetIdx const&pIdx,
|
||||
TileSheet::SubSheetIdx &&pIdx,
|
||||
std::size_t pIdxIt,
|
||||
TileSheet::SubSheet const&pSubsheet) noexcept {
|
||||
if (pIdxIt == pIdx.size()) {
|
||||
return pIdx;
|
||||
if (pIdxIt >= pIdx.size()) {
|
||||
return std::move(pIdx);
|
||||
}
|
||||
const auto currentIdx = pIdx[pIdxIt];
|
||||
auto ¤tIdx = pIdx[pIdxIt];
|
||||
if (pSubsheet.subsheets.size() <= currentIdx) {
|
||||
auto out = pIdx;
|
||||
if (!pSubsheet.subsheets.empty()) {
|
||||
*out.back().value = pSubsheet.subsheets.size() - 1;
|
||||
if (pSubsheet.subsheets.empty()) {
|
||||
// currentIdx could not be repaired, remove
|
||||
// this and all succeeding idxs and return
|
||||
pIdx.resize(pIdxIt);
|
||||
return std::move(pIdx);
|
||||
} else {
|
||||
out.pop_back();
|
||||
currentIdx = pSubsheet.subsheets.size() - 1;
|
||||
}
|
||||
return out;
|
||||
}
|
||||
return validateSubSheetIdx(pIdx, pIdxIt + 1, pSubsheet.subsheets[pIdx[pIdxIt]]);
|
||||
return validateSubSheetIdx(std::move(pIdx), pIdxIt + 1, pSubsheet.subsheets[currentIdx]);
|
||||
}
|
||||
|
||||
TileSheet::SubSheetIdx validateSubSheetIdx(TileSheet const&ts, TileSheet::SubSheetIdx const&idx) noexcept {
|
||||
return validateSubSheetIdx(idx, 0, ts.subsheet);
|
||||
TileSheet::SubSheetIdx validateSubSheetIdx(TileSheet const&ts, TileSheet::SubSheetIdx idx) noexcept {
|
||||
return validateSubSheetIdx(std::move(idx), 0, ts.subsheet);
|
||||
}
|
||||
|
||||
const TileSheet::SubSheet &getSubSheet(
|
||||
|
@ -302,7 +302,7 @@ class AssetManager {
|
||||
template<typename T>
|
||||
class AssetRef {
|
||||
private:
|
||||
T const*const m_obj = nullptr;
|
||||
T const* m_obj = nullptr;
|
||||
|
||||
public:
|
||||
constexpr AssetRef() noexcept = default;
|
||||
|
@ -71,7 +71,7 @@ ox::Result<ContextUPtr> init(
|
||||
void shutdown(Context&) noexcept {
|
||||
}
|
||||
|
||||
uint64_t ticksMs(Context&) noexcept {
|
||||
uint64_t ticksMs(Context const&) noexcept {
|
||||
return g_timerMs;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user