#pragma once #include "../Painter.h" #include #include namespace cru::platform::graphics::util { template void WithTransform(IPainter* painter, const Matrix& matrix, const Fn& action) { static_assert(std::is_invocable_v, "Action must can be be invoked with painter."); const auto old = painter->GetTransform(); painter->PushState(); painter->ConcatTransform(matrix); action(painter); painter->PopState(); } } // namespace cru::platform::graphics::util