aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/win
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/platform/win')
-rw-r--r--include/cru/platform/win/d2d_util.hpp17
-rw-r--r--include/cru/platform/win/win_painter.hpp2
2 files changed, 19 insertions, 0 deletions
diff --git a/include/cru/platform/win/d2d_util.hpp b/include/cru/platform/win/d2d_util.hpp
index 9ff6556a..51aea4f8 100644
--- a/include/cru/platform/win/d2d_util.hpp
+++ b/include/cru/platform/win/d2d_util.hpp
@@ -1,9 +1,21 @@
#pragma once
#include "win_pre_config.hpp"
+#include "../matrix.hpp"
#include "cru/common/ui_base.hpp"
namespace cru::platform::win::util {
+inline D2D1_MATRIX_3X2_F Convert(const Matrix& matrix) {
+ D2D1_MATRIX_3X2_F m;
+ m._11 = matrix.m11;
+ m._12 = matrix.m12;
+ m._21 = matrix.m21;
+ m._22 = matrix.m22;
+ m._31 = matrix.m31;
+ m._32 = matrix.m32;
+ return m;
+}
+
inline D2D1_COLOR_F Convert(const ui::Color& color) {
return D2D1::ColorF(color.red / 255.0f, color.green / 255.0f,
color.blue / 255.0f, color.alpha / 255.0f);
@@ -28,6 +40,11 @@ inline D2D1_ELLIPSE Convert(const ui::Ellipse& ellipse) {
ellipse.radius_y);
}
+inline Matrix Convert(const D2D1_MATRIX_3X2_F& matrix) {
+ return Matrix{matrix._11, matrix._12, matrix._21,
+ matrix._22, matrix._31, matrix._32};
+}
+
inline ui::Color Convert(const D2D1_COLOR_F& color) {
auto floor = [](float n) { return static_cast<std::uint8_t>(n + 0.5f); };
return ui::Color{floor(color.r * 255.0f), floor(color.g * 255.0f),
diff --git a/include/cru/platform/win/win_painter.hpp b/include/cru/platform/win/win_painter.hpp
index 7b71ccbd..1e449d85 100644
--- a/include/cru/platform/win/win_painter.hpp
+++ b/include/cru/platform/win/win_painter.hpp
@@ -15,6 +15,8 @@ class WinPainter : public Object, public virtual Painter {
WinPainter& operator=(WinPainter&& other) = delete;
~WinPainter() override;
+ Matrix GetTransform() override;
+ void SetTransform(const Matrix& matrix) override;
void StrokeGeometry(Geometry* geometry, Brush* brush, float width) override;
void FillGeometry(Geometry* geometry, Brush* brush) override;
void EndDraw() override;