Compare commits
No commits in common. "9ff614095f907d92ad8f11cb79653fc7c4399788" and "9229713ba208bfebee9a2790891c64db70a1835a" have entirely different histories.
9ff614095f
...
9229713ba2
@ -8,14 +8,14 @@
|
|||||||
|
|
||||||
namespace nostalgia::gfx {
|
namespace nostalgia::gfx {
|
||||||
|
|
||||||
DeleteTilesCommand::DeleteTilesCommand(
|
gfx::DeleteTilesCommand::DeleteTilesCommand(
|
||||||
TileSheet &img,
|
TileSheet &img,
|
||||||
TileSheet::SubSheetIdx idx,
|
TileSheet::SubSheetIdx idx,
|
||||||
std::size_t const tileIdx,
|
std::size_t tileIdx,
|
||||||
std::size_t const tileCnt) noexcept:
|
std::size_t tileCnt) noexcept:
|
||||||
m_img(img),
|
m_img(img),
|
||||||
m_idx(std::move(idx)) {
|
m_idx(std::move(idx)) {
|
||||||
constexpr unsigned bytesPerTile = PixelsPerTile;
|
const unsigned bytesPerTile = m_img.bpp == 4 ? PixelsPerTile / 2 : PixelsPerTile;
|
||||||
m_deletePos = tileIdx * bytesPerTile;
|
m_deletePos = tileIdx * bytesPerTile;
|
||||||
m_deleteSz = tileCnt * bytesPerTile;
|
m_deleteSz = tileCnt * bytesPerTile;
|
||||||
m_deletedPixels.resize(m_deleteSz);
|
m_deletedPixels.resize(m_deleteSz);
|
||||||
@ -31,17 +31,13 @@ DeleteTilesCommand::DeleteTilesCommand(
|
|||||||
ox::Error gfx::DeleteTilesCommand::redo() noexcept {
|
ox::Error gfx::DeleteTilesCommand::redo() noexcept {
|
||||||
auto &s = getSubSheet(m_img, m_idx);
|
auto &s = getSubSheet(m_img, m_idx);
|
||||||
auto &p = s.pixels;
|
auto &p = s.pixels;
|
||||||
auto const srcPos = m_deletePos + m_deleteSz;
|
auto srcPos = m_deletePos + m_deleteSz;
|
||||||
|
auto const src = &p[srcPos];
|
||||||
auto const dst1 = &p[m_deletePos];
|
auto const dst1 = &p[m_deletePos];
|
||||||
auto const dst2 = &p[(p.size() - m_deleteSz)];
|
auto const dst2 = &p[(p.size() - m_deleteSz)];
|
||||||
OX_ALLOW_UNSAFE_BUFFERS_BEGIN
|
OX_ALLOW_UNSAFE_BUFFERS_BEGIN
|
||||||
if (srcPos < p.size()) {
|
ox::memmove(dst1, src, p.size() - srcPos);
|
||||||
auto const src = &p[srcPos];
|
ox::memset(dst2, 0, m_deleteSz * sizeof(decltype(p[0])));
|
||||||
ox::memmove(dst1, src, p.size() - srcPos);
|
|
||||||
ox::memset(dst2, 0, m_deleteSz * sizeof(decltype(p[0])));
|
|
||||||
} else {
|
|
||||||
ox::memset(dst1, 0, p.size() - m_deletePos);
|
|
||||||
}
|
|
||||||
OX_ALLOW_UNSAFE_BUFFERS_END
|
OX_ALLOW_UNSAFE_BUFFERS_END
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
@ -50,14 +46,11 @@ ox::Error DeleteTilesCommand::undo() noexcept {
|
|||||||
auto &s = getSubSheet(m_img, m_idx);
|
auto &s = getSubSheet(m_img, m_idx);
|
||||||
auto &p = s.pixels;
|
auto &p = s.pixels;
|
||||||
auto const src = &p[m_deletePos];
|
auto const src = &p[m_deletePos];
|
||||||
auto const sz = p.size() - m_deletePos - m_deleteSz;
|
auto const dst1 = &p[m_deletePos + m_deleteSz];
|
||||||
auto const srcPos = m_deletePos + m_deleteSz;
|
|
||||||
OX_ALLOW_UNSAFE_BUFFERS_BEGIN
|
|
||||||
if (srcPos < p.size()) {
|
|
||||||
auto const dst1 = &p[m_deletePos + m_deleteSz];
|
|
||||||
ox::memmove(dst1, src, sz);
|
|
||||||
}
|
|
||||||
auto const dst2 = src;
|
auto const dst2 = src;
|
||||||
|
auto const sz = p.size() - m_deletePos - m_deleteSz;
|
||||||
|
OX_ALLOW_UNSAFE_BUFFERS_BEGIN
|
||||||
|
ox::memmove(dst1, src, sz);
|
||||||
ox::memcpy(dst2, m_deletedPixels.data(), m_deletedPixels.size());
|
ox::memcpy(dst2, m_deletedPixels.data(), m_deletedPixels.size());
|
||||||
OX_ALLOW_UNSAFE_BUFFERS_END
|
OX_ALLOW_UNSAFE_BUFFERS_END
|
||||||
return {};
|
return {};
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
namespace keel {
|
namespace keel {
|
||||||
|
|
||||||
|
class Context;
|
||||||
|
|
||||||
class Context {
|
class Context {
|
||||||
public:
|
public:
|
||||||
ox::UPtr<ox::FileSystem> rom;
|
ox::UPtr<ox::FileSystem> rom;
|
||||||
|
@ -182,7 +182,7 @@ ox::Result<ox::CStringView> uuidToPath(Context &ctx, ox::UUID const&uuid) noexce
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
ox::Error reloadAsset(Context &ctx, ox::StringViewCR assetId) noexcept {
|
ox::Error reloadAsset(keel::Context &ctx, ox::StringViewCR assetId) noexcept {
|
||||||
if (beginsWith(assetId, "uuid://")) {
|
if (beginsWith(assetId, "uuid://")) {
|
||||||
return ctx.assetManager.reloadAsset(substr(assetId, 7));
|
return ctx.assetManager.reloadAsset(substr(assetId, 7));
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user