diff --git a/libs/vecr/include/psemek/vecr/renderer.hpp b/libs/vecr/include/psemek/vecr/renderer.hpp index ae9fceed..d26e7361 100644 --- a/libs/vecr/include/psemek/vecr/renderer.hpp +++ b/libs/vecr/include/psemek/vecr/renderer.hpp @@ -23,6 +23,7 @@ namespace psemek::vecr struct renderer { void reset(math::vector const & size, std::size_t samples = 4, gfx::color_rgba const & color = {0, 0, 0, 0}); + void reset(gfx::pixmap_rgba image, std::size_t samples = 4); math::vector size() const; std::size_t samples() const; diff --git a/libs/vecr/source/renderer.cpp b/libs/vecr/source/renderer.cpp index e6eb5789..330d1c0b 100644 --- a/libs/vecr/source/renderer.cpp +++ b/libs/vecr/source/renderer.cpp @@ -12,6 +12,15 @@ namespace psemek::vecr need_resolve_ = false; } + void renderer::reset(gfx::pixmap_rgba image, std::size_t samples) + { + result_ = std::move(image); + canvas_.resize({result_.width() * samples, result_.height() * samples}); + for (auto idx : canvas_.indices()) + canvas_(idx) = result_({idx[0] / samples, idx[1] / samples}); + need_resolve_ = false; + } + math::vector renderer::size() const { return {result_.width(), result_.height()};