From 993fcdac7df53a69306025b3e311273787988f29 Mon Sep 17 00:00:00 2001 From: Artur Wieczorek Date: Thu, 26 May 2016 17:32:09 +0200 Subject: [PATCH] Added missing references to some dynamically loaded Direct2D API's. Without this fix invoking D2D1::Matrix3x2F::IsInvertible() or D2D1::Matrix3x2F::Skew() functions breaks the build. --- src/msw/graphicsd2d.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/msw/graphicsd2d.cpp b/src/msw/graphicsd2d.cpp index 9ef769406c..eec2bacc09 100644 --- a/src/msw/graphicsd2d.cpp +++ b/src/msw/graphicsd2d.cpp @@ -23,6 +23,8 @@ // are not violating the ODR rule. #define D2D1CreateFactory wxD2D1CreateFactory #define D2D1MakeRotateMatrix wxD2D1MakeRotateMatrix +#define D2D1MakeSkewMatrix wxD2D1MakeSkewMatrix +#define D2D1IsMatrixInvertible wxD2D1IsMatrixInvertible #define D2D1InvertMatrix wxD2D1InvertMatrix // There are clashes between the names of the member fields and parameters @@ -158,6 +160,8 @@ private: wxLOAD_FUNC(m_dllDirect2d, D2D1CreateFactory); wxLOAD_FUNC(m_dllDirect2d, D2D1MakeRotateMatrix); + wxLOAD_FUNC(m_dllDirect2d, D2D1MakeSkewMatrix); + wxLOAD_FUNC(m_dllDirect2d, D2D1IsMatrixInvertible); wxLOAD_FUNC(m_dllDirect2d, D2D1InvertMatrix); wxLOAD_FUNC(m_dllDirectWrite, DWriteCreateFactory); @@ -173,6 +177,12 @@ public: typedef void (WINAPI *D2D1MakeRotateMatrix_t)(FLOAT, D2D1_POINT_2F, D2D1_MATRIX_3X2_F*); static D2D1MakeRotateMatrix_t D2D1MakeRotateMatrix; + typedef void (WINAPI *D2D1MakeSkewMatrix_t)(FLOAT, FLOAT, D2D1_POINT_2F, D2D1_MATRIX_3X2_F*); + static D2D1MakeSkewMatrix_t D2D1MakeSkewMatrix; + + typedef BOOL (WINAPI *D2D1IsMatrixInvertible_t)(const D2D1_MATRIX_3X2_F*); + static D2D1IsMatrixInvertible_t D2D1IsMatrixInvertible; + typedef BOOL (WINAPI *D2D1InvertMatrix_t)(D2D1_MATRIX_3X2_F*); static D2D1InvertMatrix_t D2D1InvertMatrix; @@ -199,6 +209,8 @@ wxDynamicLibrary wxDirect2D::m_dllDirectWrite; // define the (not yet imported) functions wxDirect2D::D2D1CreateFactory_t wxDirect2D::D2D1CreateFactory = NULL; wxDirect2D::D2D1MakeRotateMatrix_t wxDirect2D::D2D1MakeRotateMatrix = NULL; +wxDirect2D::D2D1MakeSkewMatrix_t wxDirect2D::D2D1MakeSkewMatrix = NULL; +wxDirect2D::D2D1IsMatrixInvertible_t wxDirect2D::D2D1IsMatrixInvertible = NULL; wxDirect2D::D2D1InvertMatrix_t wxDirect2D::D2D1InvertMatrix = NULL; wxDirect2D::DWriteCreateFactory_t wxDirect2D::DWriteCreateFactory = NULL; @@ -240,6 +252,27 @@ void WINAPI wxD2D1MakeRotateMatrix( wxDirect2D::D2D1MakeRotateMatrix(angle, center, matrix); } +void WINAPI wxD2D1MakeSkewMatrix( + FLOAT angleX, + FLOAT angleY, + D2D1_POINT_2F center, + D2D1_MATRIX_3X2_F *matrix) +{ + if (!wxDirect2D::Initialize()) + return; + + wxDirect2D::D2D1MakeSkewMatrix(angleX, angleY, center, matrix); +} + +BOOL WINAPI wxD2D1IsMatrixInvertible( + const D2D1_MATRIX_3X2_F *matrix) +{ + if (!wxDirect2D::Initialize()) + return FALSE; + + return wxDirect2D::D2D1IsMatrixInvertible(matrix); +} + BOOL WINAPI wxD2D1InvertMatrix( D2D1_MATRIX_3X2_F *matrix) {