#include "wx/region.h"
#endif
+#ifdef __WXMAC__
+#include "wx/mac/private.h"
+#endif
//-----------------------------------------------------------------------------
// constants
//-----------------------------------------------------------------------------
m_graphicContext->DrawIcon( icon , x, y, w, h );
}
+bool wxGCDC::StartDoc( const wxString& WXUNUSED(message) )
+{
+ return false;
+}
+
+void wxGCDC::EndDoc()
+{
+}
+
+void wxGCDC::StartPage()
+{
+}
+
+void wxGCDC::EndPage()
+{
+}
+
+void wxGCDC::Flush()
+{
+#ifdef __WXMAC__
+ CGContextFlush( (CGContextRef) m_graphicContext->GetNativeContext() );
+#endif
+}
+
void wxGCDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord w, wxCoord h )
{
wxCHECK_RET( Ok(), wxT("wxGCDC(cg)::DoSetClippingRegion - invalid DC") );
if (region.Empty())
{
- DestroyClippingRegion();
+ //DestroyClippingRegion();
return;
}
// so we must explicitely make sure it only covers the area we want it to draw
int width, height ;
GetSize( &width , &height ) ;
- m_graphicContext->Clip( DeviceToLogicalX(0) , DeviceToLogicalY(0) , width, height );
+ m_graphicContext->Clip( DeviceToLogicalX(0) , DeviceToLogicalY(0) , DeviceToLogicalXRel(width), DeviceToLogicalYRel(height) );
m_graphicContext->SetPen( m_pen );
m_graphicContext->SetBrush( m_brush );
if ( !m_logicalFunctionSupported )
return;
- wxGraphicsPath path = m_graphicContext->CreatePath();
m_graphicContext->PushState();
m_graphicContext->Translate(x+w/2.0,y+h/2.0);
wxDouble factor = ((wxDouble) w) / h;
// since these angles (ea,sa) are measured counter-clockwise, we invert them to
// get clockwise angles
+ if ( m_brush.GetStyle() != wxTRANSPARENT )
+ {
+ wxGraphicsPath path = m_graphicContext->CreatePath();
+ path.MoveToPoint( 0, 0 );
+ path.AddLineToPoint( h / 2.0 * cos(DegToRad(sa)) , h / 2.0 * sin(DegToRad(-sa)) );
+ path.AddLineToPoint( h / 2.0 * cos(DegToRad(ea)) , h / 2.0 * sin(DegToRad(-ea)) );
+ path.AddLineToPoint( 0, 0 );
+ m_graphicContext->FillPath( path );
+
+ path = m_graphicContext->CreatePath();
+ path.AddArc( 0, 0, h/2.0 , DegToRad(-sa) , DegToRad(-ea), sa > ea );
+ m_graphicContext->FillPath( path );
+ m_graphicContext->StrokePath( path );
+ }
+ else
+ {
+ wxGraphicsPath path = m_graphicContext->CreatePath();
path.AddArc( 0, 0, h/2.0 , DegToRad(-sa) , DegToRad(-ea), sa > ea );
m_graphicContext->DrawPath( path );
+ }
+
m_graphicContext->PopState();
}
if ( logical_func == wxNO_OP )
return true;
- else if ( logical_func != wxCOPY )
+ else if ( !m_graphicContext->SetLogicalFunction( logical_func ) )
+
{
wxFAIL_MSG( wxT("Blitting is only supported with wxCOPY logical operation.") );
return false;
return false;
}
+ // reset logical function
+ m_graphicContext->SetLogicalFunction( m_logicalFunction );
+
return true;
}
m_graphicContext->GetTextExtent( str, &w, &h, &d, &e );
if ( height )
- *height = (wxCoord)h;
+ *height = (wxCoord)(h+0.5);
if ( descent )
- *descent = (wxCoord)d;
+ *descent = (wxCoord)(d+0.5);
if ( externalLeading )
- *externalLeading = (wxCoord)e;
+ *externalLeading = (wxCoord)(e+0.5);
if ( width )
- *width = (wxCoord)w;
+ *width = (wxCoord)(w+0.5);
if ( theFont )
{
void wxGCDC::DoGetSize(int *width, int *height) const
{
- *width = 1000;
- *height = 1000;
+ *width = 10000;
+ *height = 10000;
}
void wxGCDC::DoGradientFillLinear(const wxRect& rect,
{
}
+bool wxGraphicsContext::StartDoc( const wxString& message )
+{
+ return true;
+}
+
+void wxGraphicsContext::EndDoc()
+{
+}
+
+void wxGraphicsContext::StartPage( wxDouble width, wxDouble height )
+{
+}
+
+void wxGraphicsContext::EndPage()
+{
+}
+
+void wxGraphicsContext::Flush()
+{
+}
+
+#if 0
+void wxGraphicsContext::SetAlpha( wxDouble WXUNUSED(alpha) )
+{
+}
+
+wxDouble wxGraphicsContext::GetAlpha() const
+{
+ return 1.0;
+}
+#endif
+
+void wxGraphicsContext::GetSize( wxDouble* width, wxDouble* height)
+{
+ *width = 10000.0;
+ *height = 10000.0;
+}
+
+void wxGraphicsContext::GetDPI( wxDouble* dpiX, wxDouble* dpiY)
+{
+ *dpiX = 72.0;
+ *dpiY = 72.0;
+}
+
// sets the pen
void wxGraphicsContext::SetPen( const wxGraphicsPen& pen )
{
void wxGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDouble y, const wxGraphicsBrush& backgroundBrush )
{
wxGraphicsBrush formerBrush = m_brush;
+ wxGraphicsPen formerPen = m_pen;
wxDouble width;
wxDouble height;
wxDouble descent;
wxDouble externalLeading;
GetTextExtent( str , &width, &height, &descent, &externalLeading );
SetBrush( backgroundBrush );
+ // to make sure our 'OffsetToPixelBoundaries' doesn't move the fill shape
+ SetPen( wxNullGraphicsPen );
wxGraphicsPath path = CreatePath();
path.AddRectangle( x , y, width, height );
DrawText( str, x ,y);
SetBrush( formerBrush );
+ SetPen( formerPen );
}
void wxGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDouble y, wxDouble angle, const wxGraphicsBrush& backgroundBrush )
{
wxGraphicsBrush formerBrush = m_brush;
+ wxGraphicsPen formerPen = m_pen;
wxDouble width;
wxDouble height;
wxDouble externalLeading;
GetTextExtent( str , &width, &height, &descent, &externalLeading );
SetBrush( backgroundBrush );
+ // to make sure our 'OffsetToPixelBoundaries' doesn't move the fill shape
+ SetPen( wxNullGraphicsPen );
wxGraphicsPath path = CreatePath();
path.MoveToPoint( x , y );
FillPath( path );
DrawText( str, x ,y, angle);
SetBrush( formerBrush );
+ SetPen( formerPen );
}
void wxGraphicsContext::StrokeLine( wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2)