X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c9a828e77fec39b9a2a9e2d26d20c75057fef9b1..39d169639b01d4902583d4e541746a93a156ab78:/src/msw/graphics.cpp diff --git a/src/msw/graphics.cpp b/src/msw/graphics.cpp index e5161c5d5b..cad53a46d0 100644 --- a/src/msw/graphics.cpp +++ b/src/msw/graphics.cpp @@ -396,10 +396,7 @@ protected: void Init(Graphics* graphics, int width, int height); private: - virtual void DoDrawText(const wxString& str, wxDouble x, wxDouble y) - { DoDrawFilledText(str, x, y, wxNullGraphicsBrush); } - virtual void DoDrawFilledText(const wxString& str, wxDouble x, wxDouble y, - const wxGraphicsBrush& backgroundBrush); + virtual void DoDrawText(const wxString& str, wxDouble x, wxDouble y); Graphics* m_context; wxStack m_stateStack; @@ -1390,6 +1387,7 @@ void wxGDIPlusContext::Init(Graphics* graphics, int width, int height) m_context->SetTextRenderingHint(TextRenderingHintSystemDefault); m_context->SetPixelOffsetMode(PixelOffsetModeHalf); m_context->SetSmoothingMode(SmoothingModeHighQuality); + m_context->SetInterpolationMode(InterpolationModeHighQuality); m_state1 = m_context->Save(); m_state2 = m_context->Save(); } @@ -1535,10 +1533,44 @@ bool wxGDIPlusContext::SetAntialiasMode(wxAntialiasMode antialias) return true; } -bool wxGDIPlusContext::SetInterpolationQuality(wxInterpolationQuality WXUNUSED(interpolation)) +bool wxGDIPlusContext::SetInterpolationQuality(wxInterpolationQuality interpolation) { - // placeholder - return false; + if (m_interpolation == interpolation) + return true; + + InterpolationMode interpolationMode = InterpolationModeDefault; + switch (interpolation) + { + case wxINTERPOLATION_DEFAULT: + interpolationMode = InterpolationModeDefault; + break; + + case wxINTERPOLATION_NONE: + interpolationMode = InterpolationModeNearestNeighbor; + break; + + case wxINTERPOLATION_FAST: + interpolationMode = InterpolationModeLowQuality; + break; + + case wxINTERPOLATION_GOOD: + interpolationMode = InterpolationModeHighQuality; + break; + + case wxINTERPOLATION_BEST: + interpolationMode = InterpolationModeHighQualityBicubic; + break; + + default: + return false; + } + + if ( m_context->SetInterpolationMode(interpolationMode) != Gdiplus::Ok ) + return false; + + m_interpolation = interpolation; + + return true; } bool wxGDIPlusContext::SetCompositionMode(wxCompositionMode op) @@ -1698,9 +1730,8 @@ void wxGDIPlusContext::DrawIcon( const wxIcon &icon, wxDouble x, wxDouble y, wxD DeleteObject(iconInfo.hbmMask); } -void wxGDIPlusContext::DoDrawFilledText(const wxString& str, - wxDouble x, wxDouble y, - const wxGraphicsBrush& brush) +void wxGDIPlusContext::DoDrawText(const wxString& str, + wxDouble x, wxDouble y ) { if (m_composition == wxCOMPOSITION_DEST) return; @@ -1713,9 +1744,7 @@ void wxGDIPlusContext::DoDrawFilledText(const wxString& str, wxGDIPlusFontData * const fontData = (wxGDIPlusFontData *)m_font.GetRefData(); - wxGDIPlusBrushData * const - brushData = (wxGDIPlusBrushData *)brush.GetRefData(); - + m_context->DrawString ( str.wc_str(*wxConvUI), // string to draw, always Unicode @@ -1723,8 +1752,7 @@ void wxGDIPlusContext::DoDrawFilledText(const wxString& str, fontData->GetGDIPlusFont(), PointF(x, y), StringFormat::GenericTypographic(), - brushData ? brushData->GetGDIPlusBrush() - : fontData->GetGDIPlusBrush() + fontData->GetGDIPlusBrush() ); }