X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/914fd3f1e5b3a2be1b1d9a551e462f7ba717af58..88e183d7693c5272673d109b21e40e1bb525a386:/src/common/dcgraph.cpp diff --git a/src/common/dcgraph.cpp b/src/common/dcgraph.cpp index be08d5b29c..20058b9073 100644 --- a/src/common/dcgraph.cpp +++ b/src/common/dcgraph.cpp @@ -3,7 +3,7 @@ // Purpose: graphics context methods common to all platforms // Author: Stefan Csomor // Modified by: -// Created: +// Created: // RCS-ID: $Id$ // Copyright: (c) Stefan Csomor // Licence: wxWindows licence @@ -27,6 +27,10 @@ #include "wx/region.h" #endif +#ifndef wxMAC_USE_CORE_GRAPHICS_BLEND_MODES + #define wxMAC_USE_CORE_GRAPHICS_BLEND_MODES 0 +#endif + //----------------------------------------------------------------------------- // constants //----------------------------------------------------------------------------- @@ -58,7 +62,7 @@ wxGCDC::wxGCDC() } void wxGCDC::SetGraphicsContext( wxGraphicsContext* ctx ) -{ +{ delete m_graphicContext; m_graphicContext = ctx; if ( m_graphicContext ) @@ -105,7 +109,18 @@ void wxGCDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool WXUNU wxCHECK_RET( Ok(), wxT("wxGCDC(cg)::DoDrawBitmap - invalid DC") ); wxCHECK_RET( bmp.Ok(), wxT("wxGCDC(cg)::DoDrawBitmap - invalid bitmap") ); - m_graphicContext->DrawBitmap( bmp, x , y , bmp.GetWidth() , bmp.GetHeight() ); + if ( bmp.GetDepth() == 1 ) + { + m_graphicContext->SetPen(*wxTRANSPARENT_PEN); + m_graphicContext->SetBrush( wxBrush( m_textBackgroundColour , wxSOLID ) ); + m_graphicContext->DrawRectangle( x , y , bmp.GetWidth() , bmp.GetHeight() ); + m_graphicContext->SetBrush( wxBrush( m_textForegroundColour , wxSOLID ) ); + m_graphicContext->DrawBitmap( bmp, x , y , bmp.GetWidth() , bmp.GetHeight() ); + m_graphicContext->SetBrush( m_graphicContext->CreateBrush(m_brush)); + m_graphicContext->SetPen( m_graphicContext->CreatePen(m_pen)); + } + else + m_graphicContext->DrawBitmap( bmp, x , y , bmp.GetWidth() , bmp.GetHeight() ); } void wxGCDC::DoDrawIcon( const wxIcon &icon, wxCoord x, wxCoord y ) @@ -297,8 +312,9 @@ void wxGCDC::ComputeScaleAndOrigin() m_matrixCurrent = m_graphicContext->CreateMatrix(); m_matrixCurrent.Translate( m_deviceOriginX, m_deviceOriginY ); m_matrixCurrent.Scale( m_scaleX, m_scaleY ); - m_matrixCurrent.Translate( m_logicalOriginX, m_logicalOriginY ); - + // the logical origin sets the origin to have new coordinates + m_matrixCurrent.Translate( -m_logicalOriginX, -m_logicalOriginY ); + m_graphicContext->SetTransform( m_matrixOriginal ); m_graphicContext->ConcatTransform( m_matrixCurrent ); } @@ -701,7 +717,7 @@ bool wxGCDC::DoBlit( { wxCHECK_MSG( Ok(), false, wxT("wxGCDC(cg)::DoBlit - invalid DC") ); wxCHECK_MSG( source->Ok(), false, wxT("wxGCDC(cg)::DoBlit - invalid source DC") ); - + if ( logical_func == wxNO_OP ) return true; else if ( logical_func != wxCOPY ) @@ -718,9 +734,9 @@ bool wxGCDC::DoBlit( wxRect subrect(source-> LogicalToDeviceX(xsrc),source-> LogicalToDeviceY(ysrc), source-> LogicalToDeviceXRel(width),source-> LogicalToDeviceYRel(height)); - + wxBitmap blit = source->GetAsBitmap( &subrect ); - + if ( blit.Ok() ) { m_graphicContext->DrawBitmap( blit, xdest , ydest , width , height ); @@ -782,13 +798,13 @@ void wxGCDC::DoGetTextExtent( const wxString &str, wxCoord *width, wxCoord *heig m_graphicContext->GetTextExtent( str, &w, &h, &d, &e ); if ( height ) - *height = h; + *height = (wxCoord)h; if ( descent ) - *descent = d; + *descent = (wxCoord)d; if ( externalLeading ) - *externalLeading =e; + *externalLeading = (wxCoord)e; if ( width ) - *width = w; + *width = (wxCoord)w; if ( theFont ) { @@ -837,7 +853,7 @@ void wxGCDC::Clear(void) wxPen p = *wxTRANSPARENT_PEN; m_graphicContext->SetPen( p ); DoDrawRectangle( 0, 0, 32000 , 32000 ); - m_graphicContext->SetPen( m_pen ); + m_graphicContext->SetPen( m_pen ); m_graphicContext->SetBrush( m_brush ); }