#include "wx/region.h"
#include "wx/image.h"
-#include "wx/mac/private.h"
#if __MSL__ >= 0x6000
#include "math.h"
+using namespace std ;
#endif
+#include "wx/mac/private.h"
+
+
#if !USE_SHARED_LIBRARY
IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject)
#endif
}
}
}
- // wxFAIL_MSG("unimplemented emulated mode") ;
}
}
else
}
else
{
+ RgnHandle clipRgn = NewRgn() ;
+ SetRectRgn( clipRgn , dstrect.left , dstrect.top , dstrect.right , dstrect.bottom ) ;
if ( mode == kEmulatedMode )
{
- CopyBits( GetPortBitMapForCopyBits( sourcePort ) ,
- GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ) ,
- &srcrect, &dstrect, mode, NULL ) ;
+ Pattern pat ;
+ ::PenPat(GetQDGlobalsBlack(&pat));
+ if ( logical_func == wxSET )
+ {
+ RGBColor col= { 0xFFFF, 0xFFFF, 0xFFFF } ;
+ ::RGBForeColor( &col ) ;
+ ::PaintRgn( clipRgn ) ;
+ }
+ else if ( logical_func == wxCLEAR )
+ {
+ RGBColor col= { 0x0000, 0x0000, 0x0000 } ;
+ ::RGBForeColor( &col ) ;
+ ::PaintRgn( clipRgn ) ;
+ }
+ else if ( logical_func == wxINVERT )
+ {
+ MacInvertRgn( clipRgn ) ;
+ }
+ else
+ {
+ for ( int y = 0 ; y < srcrect.right - srcrect.left ; ++y )
+ {
+ for ( int x = 0 ; x < srcrect.bottom - srcrect.top ; ++x )
+ {
+ Point dstPoint = { dstrect.top + y , dstrect.left + x } ;
+ Point srcPoint = { srcrect.top + y , srcrect.left + x } ;
+
+ {
+ RGBColor srcColor ;
+ RGBColor dstColor ;
+
+ SetPort( (GrafPtr) sourcePort ) ;
+ GetCPixel( srcPoint.h , srcPoint.v , &srcColor) ;
+ SetPort( (GrafPtr) m_macPort ) ;
+ GetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ;
+
+ wxMacCalculateColour( logical_func , srcColor , dstColor ) ;
+ SetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ;
+ }
+ }
+ }
+ }
+
}
else
{
- Pattern pat ;
- ::PenPat(GetQDGlobalsBlack(&pat));
- if ( logical_func == wxSET )
- {
- RGBColor col= { 0xFFFF, 0xFFFF, 0xFFFF } ;
- ::RGBForeColor( &col ) ;
- }
- else
- {
- RGBColor col= { 0x0000, 0x0000, 0x0000 } ;
- ::RGBForeColor( &col ) ;
- }
- ::PaintRect( &dstrect ) ;
+ if ( invertDestinationFirst )
+ {
+ MacInvertRgn( clipRgn ) ;
+ }
+ CopyBits( GetPortBitMapForCopyBits( sourcePort ) ,
+ GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ) ,
+ &srcrect, &dstrect, mode, NULL ) ;
}
+ DisposeRgn( clipRgn ) ;
}
UnlockPixels( bmappixels ) ;
}
bool backgroundTransparent = (GetBackgroundMode() == wxTRANSPARENT) ;
::RGBForeColor( &MAC_WXCOLORREF( m_brush.GetColour().GetPixel()) );
+ ::RGBBackColor( &MAC_WXCOLORREF( m_backgroundBrush.GetColour().GetPixel()) );
int brushStyle = m_brush.GetStyle();
if (brushStyle == wxSOLID)
+ {
::PenPat(GetQDGlobalsBlack(&blackColor));
+ }
else if (IS_HATCH(brushStyle))
{
Pattern pat ;
if ( isMonochrome )
{
::RGBForeColor( &MAC_WXCOLORREF( m_textForegroundColour.GetPixel()) );
+ ::RGBForeColor( &MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()) );
BitMap* gwbitmap = (BitMap*) *gwpixmaphandle ; // since the color depth is 1 it is a BitMap
UInt8 *gwbits = (UInt8*) gwbitmap->baseAddr ;
{
::PenPat(GetQDGlobalsBlack(&blackColor));
}
-
- if ( !backgroundTransparent )
- ::RGBBackColor( &MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()) ) ;
-
+
short mode = patCopy ;
switch( m_logicalFunction )
{