forward port from 2.8
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49786 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
eb83d250fc
commit
fcaea2fab9
@ -27,6 +27,9 @@
|
||||
#include "wx/region.h"
|
||||
#endif
|
||||
|
||||
#ifdef __WXMAC__
|
||||
#include "wx/mac/private.h"
|
||||
#endif
|
||||
//-----------------------------------------------------------------------------
|
||||
// constants
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -138,6 +141,30 @@ void wxGCDC::DoDrawIcon( const wxIcon &icon, wxCoord x, wxCoord y )
|
||||
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") );
|
||||
@ -168,7 +195,7 @@ void wxGCDC::DoSetClippingRegionAsRegion( const wxRegion ®ion )
|
||||
|
||||
if (region.Empty())
|
||||
{
|
||||
DestroyClippingRegion();
|
||||
//DestroyClippingRegion();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -204,7 +231,7 @@ void wxGCDC::DestroyClippingRegion()
|
||||
// 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 );
|
||||
@ -501,7 +528,6 @@ void wxGCDC::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord w, wxCoord h,
|
||||
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;
|
||||
@ -509,8 +535,27 @@ void wxGCDC::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord w, wxCoord 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();
|
||||
}
|
||||
|
||||
@ -746,7 +791,8 @@ bool wxGCDC::DoStretchBlit(
|
||||
|
||||
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;
|
||||
@ -786,6 +832,9 @@ bool wxGCDC::DoStretchBlit(
|
||||
return false;
|
||||
}
|
||||
|
||||
// reset logical function
|
||||
m_graphicContext->SetLogicalFunction( m_logicalFunction );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -844,13 +893,13 @@ void wxGCDC::DoGetTextExtent( const wxString &str, wxCoord *width, wxCoord *heig
|
||||
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 )
|
||||
{
|
||||
@ -905,8 +954,8 @@ void wxGCDC::Clear(void)
|
||||
|
||||
void wxGCDC::DoGetSize(int *width, int *height) const
|
||||
{
|
||||
*width = 1000;
|
||||
*height = 1000;
|
||||
*width = 10000;
|
||||
*height = 10000;
|
||||
}
|
||||
|
||||
void wxGCDC::DoGradientFillLinear(const wxRect& rect,
|
||||
|
@ -509,6 +509,50 @@ wxGraphicsContext::~wxGraphicsContext()
|
||||
{
|
||||
}
|
||||
|
||||
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 )
|
||||
{
|
||||
@ -579,12 +623,15 @@ void wxGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDouble y, w
|
||||
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 );
|
||||
@ -592,11 +639,13 @@ void wxGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDouble y, c
|
||||
|
||||
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;
|
||||
@ -604,6 +653,8 @@ void wxGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDouble y, w
|
||||
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 );
|
||||
@ -615,6 +666,7 @@ void wxGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDouble y, w
|
||||
FillPath( path );
|
||||
DrawText( str, x ,y, angle);
|
||||
SetBrush( formerBrush );
|
||||
SetPen( formerPen );
|
||||
}
|
||||
|
||||
void wxGraphicsContext::StrokeLine( wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2)
|
||||
|
Loading…
Reference in New Issue
Block a user