22#include <kiwano/math/Math.h>
23#include <kiwano/utils/Logger.h>
24#include <kiwano/render/Color.h>
25#include <kiwano/platform/win32/ComPtr.hpp>
35inline void SafeRelease(T*& ptr)
45inline T* SafeAcquire(T* ptr)
58inline const D2D1_POINT_2F& ConvertToPoint2F(
const Vec2& vec2)
60 return reinterpret_cast<const D2D1_POINT_2F&
>(vec2);
63inline D2D1_POINT_2F& ConvertToPoint2F(Vec2& vec2)
65 return reinterpret_cast<D2D1_POINT_2F&
>(vec2);
68inline const D2D1_POINT_2F* ConvertToPoint2F(
const Vec2* vec2)
70 return reinterpret_cast<const D2D1_POINT_2F*
>(vec2);
73inline D2D1_POINT_2F* ConvertToPoint2F(Vec2* vec2)
75 return reinterpret_cast<D2D1_POINT_2F*
>(vec2);
82inline const D2D1_VECTOR_2F& ConvertToVector2F(
const Vec2& vec2)
84 return reinterpret_cast<const D2D1_VECTOR_2F&
>(vec2);
87inline D2D1_VECTOR_2F& ConvertToVector2F(Vec2& vec2)
89 return reinterpret_cast<D2D1_VECTOR_2F&
>(vec2);
92inline const D2D1_VECTOR_2F* ConvertToVector2F(
const Vec2* vec2)
94 return reinterpret_cast<const D2D1_VECTOR_2F*
>(vec2);
97inline D2D1_VECTOR_2F* ConvertToVector2F(Vec2* vec2)
99 return reinterpret_cast<D2D1_VECTOR_2F*
>(vec2);
106inline const D2D1_SIZE_F& ConvertToSizeF(
const Vec2& vec2)
108 return reinterpret_cast<const D2D1_SIZE_F&
>(vec2);
111inline D2D1_SIZE_F& ConvertToSizeF(Vec2& vec2)
113 return reinterpret_cast<D2D1_SIZE_F&
>(vec2);
116inline const D2D1_SIZE_F* ConvertToSizeF(
const Vec2* vec2)
118 return reinterpret_cast<const D2D1_SIZE_F*
>(vec2);
121inline D2D1_SIZE_F* ConvertToSizeF(Vec2* vec2)
123 return reinterpret_cast<D2D1_SIZE_F*
>(vec2);
126inline const D2D1_SIZE_U& ConvertToSizeU(
const math::Vec2T<uint32_t>& vec2)
128 return reinterpret_cast<const D2D1_SIZE_U&
>(vec2);
131inline D2D1_SIZE_U& ConvertToSizeU(math::Vec2T<uint32_t>& vec2)
133 return reinterpret_cast<D2D1_SIZE_U&
>(vec2);
136inline const D2D1_SIZE_U* ConvertToSizeU(
const math::Vec2T<uint32_t>* vec2)
138 return reinterpret_cast<const D2D1_SIZE_U*
>(vec2);
141inline D2D1_SIZE_U* ConvertToSizeU(math::Vec2T<uint32_t>* vec2)
143 return reinterpret_cast<D2D1_SIZE_U*
>(vec2);
150inline const D2D1_RECT_F& ConvertToRectF(
const Rect& rect)
152 return reinterpret_cast<const D2D1_RECT_F&
>(rect);
155inline D2D1_RECT_F& ConvertToRectF(Rect& rect)
157 return reinterpret_cast<D2D1_RECT_F&
>(rect);
160inline const D2D1_RECT_F* ConvertToRectF(
const Rect* rect)
162 return reinterpret_cast<const D2D1_RECT_F*
>(rect);
165inline D2D1_RECT_F* ConvertToRectF(Rect* rect)
167 return reinterpret_cast<D2D1_RECT_F*
>(rect);
173inline const D2D1_COLOR_F& ConvertToColorF(
const Color& color)
175 return reinterpret_cast<const D2D1_COLOR_F&
>(color);
178inline D2D1_COLOR_F& ConvertToColorF(Color& color)
180 return reinterpret_cast<D2D1_COLOR_F&
>(color);
183inline const D2D1_COLOR_F* ConvertToColorF(
const Color* color)
185 return reinterpret_cast<const D2D1_COLOR_F*
>(color);
188inline D2D1_COLOR_F* ConvertToColorF(Color* color)
190 return reinterpret_cast<D2D1_COLOR_F*
>(color);
197inline const D2D1_MATRIX_3X2_F& ConvertToMatrix3x2F(
const Matrix3x2& matrix)
199 return reinterpret_cast<const D2D1_MATRIX_3X2_F&
>(matrix);
202inline D2D1_MATRIX_3X2_F& ConvertToMatrix3x2F(Matrix3x2& matrix)
204 return reinterpret_cast<D2D1_MATRIX_3X2_F&
>(matrix);
207inline const D2D1_MATRIX_3X2_F* ConvertToMatrix3x2F(
const Matrix3x2* matrix)
209 return reinterpret_cast<const D2D1_MATRIX_3X2_F*
>(matrix);
212inline D2D1_MATRIX_3X2_F* ConvertToMatrix3x2F(Matrix3x2* matrix)
214 return reinterpret_cast<D2D1_MATRIX_3X2_F*
>(matrix);
218inline float ConvertDipsToPixels(
float dips,
float dpi)
220 static const float dips_per_inch = 96.0f;
221 return math::Floor(dips * dpi / dips_per_inch + 0.5f);