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<GraphicsState> m_stateStack;
virtual wxGraphicsBitmap CreateBitmap( const wxBitmap &bitmap );
#if wxUSE_IMAGE
virtual wxGraphicsBitmap CreateBitmapFromImage(const wxImage& image);
+ virtual wxImage CreateImageFromBitmap(const wxGraphicsBitmap& bmp);
#endif // wxUSE_IMAGE
virtual wxGraphicsFont CreateFont( const wxFont& font,
const wxColour& col,
Unit fontUnit)
{
- m_font = new Font(name, size, style, fontUnit);
+ m_font = new Font(name.wc_str(), size, style, fontUnit);
m_textBrush = new SolidBrush(wxColourToColor(col));
}
delete m_helper;
}
-// ----------------------------------------------------------------------------
-// wxGraphicsBitmap implementation
-// ----------------------------------------------------------------------------
-
-#if wxUSE_IMAGE
-
-wxImage wxGraphicsBitmap::ConvertToImage() const
-{
- const wxGDIPlusBitmapData* const
- data = static_cast<wxGDIPlusBitmapData*>(GetGraphicsData());
-
- return data ? data->ConvertToImage() : wxNullImage;
-}
-
-#endif // wxUSE_IMAGE
-
//-----------------------------------------------------------------------------
// wxGDIPlusPath implementation
//-----------------------------------------------------------------------------
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();
}
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)
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;
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
fontData->GetGDIPlusFont(),
PointF(x, y),
StringFormat::GenericTypographic(),
- brushData ? brushData->GetGDIPlusBrush()
- : fontData->GetGDIPlusBrush()
+ fontData->GetGDIPlusBrush()
);
}
return wxNullGraphicsBitmap;
}
+
+wxImage wxGDIPlusRenderer::CreateImageFromBitmap(const wxGraphicsBitmap& bmp)
+{
+ ENSURE_LOADED_OR_RETURN(wxNullImage);
+ const wxGDIPlusBitmapData* const
+ data = static_cast<wxGDIPlusBitmapData*>(bmp.GetGraphicsData());
+
+ return data ? data->ConvertToImage() : wxNullImage;
+}
+
#endif // wxUSE_IMAGE
+
wxGraphicsBitmap wxGDIPlusRenderer::CreateBitmapFromNativeBitmap( void *bitmap )
{
ENSURE_LOADED_OR_RETURN(wxNullGraphicsBitmap);