Implement Flush() method for Cairo graphics context

wxCairoContext implementation for wxMSW and wxQT use internally helper surface so there is a need to flush it on demand.
This commit is contained in:
Artur Wieczorek
2016-09-08 19:15:27 +02:00
parent 83527e93d1
commit f68dad69cc
2 changed files with 18 additions and 0 deletions

View File

@@ -102,6 +102,7 @@ All (GUI):
- Fix wxGCDC::Clear() for rotated graphics context.
- Fix wxGCDC::GetClippingBox() for transformed wxDC (MSW, GTK+).
- Add support for affine transformation matrix in wxGCDC.
- Add wxGraphicsContext::Flush() for Cairo renderer.
wxGTK:

View File

@@ -494,6 +494,7 @@ public:
virtual void DrawIcon( const wxIcon &icon, wxDouble x, wxDouble y, wxDouble w, wxDouble h ) wxOVERRIDE;
virtual void PushState() wxOVERRIDE;
virtual void PopState() wxOVERRIDE;
virtual void Flush() wxOVERRIDE;
virtual void GetTextExtent( const wxString &str, wxDouble *width, wxDouble *height,
wxDouble *descent, wxDouble *externalLeading ) const wxOVERRIDE;
@@ -2476,6 +2477,22 @@ void wxCairoContext::PopState()
cairo_restore(m_context);
}
void wxCairoContext::Flush()
{
#ifdef __WXMSW__
if ( m_mswSurface )
{
cairo_surface_flush(m_mswSurface);
}
#endif
#ifdef __WXQT__
if ( m_qtSurface )
{
cairo_surface_flush(m_qtSurface);
}
#endif
}
void wxCairoContext::DrawBitmap( const wxBitmap &bmp, wxDouble x, wxDouble y, wxDouble w, wxDouble h )
{
wxGraphicsBitmap bitmap = GetRenderer()->CreateBitmap(bmp);