aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/cru/platform/graphics/Painter.h11
-rw-r--r--include/cru/platform/graphics/util/Painter.h18
2 files changed, 11 insertions, 18 deletions
diff --git a/include/cru/platform/graphics/Painter.h b/include/cru/platform/graphics/Painter.h
index de44c7b4..2e122a08 100644
--- a/include/cru/platform/graphics/Painter.h
+++ b/include/cru/platform/graphics/Painter.h
@@ -1,4 +1,5 @@
#pragma once
+#include <type_traits>
#include "Base.h"
namespace cru::platform::graphics {
@@ -42,5 +43,15 @@ struct CRU_PLATFORM_GRAPHICS_API IPainter : virtual IPlatformResource {
virtual void PopState() = 0;
virtual void EndDraw() = 0;
+
+ template <typename Fn>
+ std::enable_if_t<std::is_invocable_v<Fn, IPainter*>> WithTransform(
+ const Matrix& matrix, const Fn& action) {
+ const auto old = this->GetTransform();
+ this->PushState();
+ this->ConcatTransform(matrix);
+ action(this);
+ this->PopState();
+ }
};
} // namespace cru::platform::graphics
diff --git a/include/cru/platform/graphics/util/Painter.h b/include/cru/platform/graphics/util/Painter.h
deleted file mode 100644
index e36d5c55..00000000
--- a/include/cru/platform/graphics/util/Painter.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#pragma once
-#include "../Painter.h"
-
-#include <functional>
-#include <type_traits>
-
-namespace cru::platform::graphics::util {
-template <typename Fn>
-void WithTransform(IPainter* painter, const Matrix& matrix, const Fn& action) {
- static_assert(std::is_invocable_v<decltype(action), IPainter*>,
- "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