minor cleanup: corrected typos, etc.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36328 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -56,15 +56,15 @@ extern TECObjectRef s_TECNativeCToUnicode ;
|
||||
wxMacWindowClipper::wxMacWindowClipper( const wxWindow* win ) :
|
||||
wxMacPortSaver( (GrafPtr) GetWindowPort((WindowRef) win->MacGetTopLevelWindowRef()) )
|
||||
{
|
||||
m_newPort =(GrafPtr) GetWindowPort((WindowRef) win->MacGetTopLevelWindowRef()) ;
|
||||
m_newPort = (GrafPtr) GetWindowPort((WindowRef) win->MacGetTopLevelWindowRef()) ;
|
||||
m_formerClip = NewRgn() ;
|
||||
m_newClip = NewRgn() ;
|
||||
GetClip( m_formerClip ) ;
|
||||
|
||||
|
||||
if ( win )
|
||||
{
|
||||
// guard against half constructed objects, this just leads to a empty clip
|
||||
if( win->GetPeer() )
|
||||
if ( win->GetPeer() )
|
||||
{
|
||||
int x = 0 , y = 0;
|
||||
win->MacWindowToRootWindow( &x,&y ) ;
|
||||
@@ -90,7 +90,7 @@ wxMacWindowStateSaver::wxMacWindowStateSaver( const wxWindow* win ) :
|
||||
wxMacWindowClipper( win )
|
||||
{
|
||||
// the port is already set at this point
|
||||
m_newPort =(GrafPtr) GetWindowPort((WindowRef) win->MacGetTopLevelWindowRef()) ;
|
||||
m_newPort = (GrafPtr) GetWindowPort((WindowRef) win->MacGetTopLevelWindowRef()) ;
|
||||
GetThemeDrawingState( &m_themeDrawingState ) ;
|
||||
}
|
||||
|
||||
@@ -109,6 +109,7 @@ wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) :
|
||||
m_dc = dc ;
|
||||
// dc->MacSetupPort(&m_ph) ;
|
||||
}
|
||||
|
||||
wxMacPortSetter::~wxMacPortSetter()
|
||||
{
|
||||
// m_dc->MacCleanupPort(&m_ph) ;
|
||||
@@ -210,6 +211,7 @@ wxMacCGContext::~wxMacCGContext()
|
||||
CGContextRestoreGState( m_cgContext ) ;
|
||||
CGContextRestoreGState( m_cgContext ) ;
|
||||
}
|
||||
|
||||
if ( m_qdPort )
|
||||
CGContextRelease( m_cgContext ) ;
|
||||
}
|
||||
@@ -217,7 +219,7 @@ wxMacCGContext::~wxMacCGContext()
|
||||
|
||||
void wxMacCGContext::Clip( const wxRegion ®ion )
|
||||
{
|
||||
// ClipCGContextToRegion ( m_cgContext, &bounds , (RgnHandle) dc->m_macCurrentClipRgn ) ;
|
||||
// ClipCGContextToRegion ( m_cgContext, &bounds , (RgnHandle) dc->m_macCurrentClipRgn ) ;
|
||||
}
|
||||
|
||||
void wxMacCGContext::StrokePath( const wxGraphicPath *p )
|
||||
@@ -231,6 +233,7 @@ void wxMacCGContext::DrawPath( const wxGraphicPath *p , int fillStyle )
|
||||
{
|
||||
const wxMacCGPath* path = dynamic_cast< const wxMacCGPath*>( p ) ;
|
||||
CGPathDrawingMode mode = m_mode ;
|
||||
|
||||
if ( fillStyle == wxODDEVEN_RULE )
|
||||
{
|
||||
if ( mode == kCGPathFill )
|
||||
@@ -238,6 +241,7 @@ void wxMacCGContext::DrawPath( const wxGraphicPath *p , int fillStyle )
|
||||
else if ( mode == kCGPathFillStroke )
|
||||
mode = kCGPathEOFillStroke ;
|
||||
}
|
||||
|
||||
CGContextAddPath( m_cgContext , path->GetPath() ) ;
|
||||
CGContextDrawPath( m_cgContext , mode ) ;
|
||||
}
|
||||
@@ -275,7 +279,7 @@ wxGraphicPath* wxMacCGContext::CreatePath()
|
||||
|
||||
CGContextRef wxMacCGContext::GetNativeContext()
|
||||
{
|
||||
if( m_cgContext == NULL )
|
||||
if ( m_cgContext == NULL )
|
||||
{
|
||||
Rect bounds ;
|
||||
GetPortBounds( (CGrafPtr) m_qdPort , &bounds ) ;
|
||||
@@ -290,6 +294,7 @@ CGContextRef wxMacCGContext::GetNativeContext()
|
||||
SetPen( m_pen ) ;
|
||||
SetBrush( m_brush ) ;
|
||||
}
|
||||
|
||||
return m_cgContext ;
|
||||
}
|
||||
|
||||
@@ -309,34 +314,33 @@ void wxMacCGContext::SetNativeContext( CGContextRef cg )
|
||||
class wxMacCGPattern
|
||||
{
|
||||
public :
|
||||
wxMacCGPattern()
|
||||
{
|
||||
}
|
||||
|
||||
wxMacCGPattern() {}
|
||||
|
||||
// is guaranteed to be called only with a non-Null CGContextRef
|
||||
virtual void Render( CGContextRef ctxRef ) = 0 ;
|
||||
|
||||
operator CGPatternRef() const { return m_patternRef ; }
|
||||
|
||||
protected :
|
||||
virtual ~wxMacCGPattern()
|
||||
{
|
||||
// as this is called only when our m_patternRef is been released, don't release
|
||||
// it again
|
||||
// as this is called only when our m_patternRef is been released;
|
||||
// don't release it again
|
||||
}
|
||||
|
||||
|
||||
static void _Render( void *info, CGContextRef ctxRef )
|
||||
{
|
||||
wxMacCGPattern* self = (wxMacCGPattern*) info ;
|
||||
if ( self && ctxRef )
|
||||
self->Render( ctxRef ) ;
|
||||
}
|
||||
|
||||
|
||||
static void _Dispose( void *info )
|
||||
{
|
||||
wxMacCGPattern* self = (wxMacCGPattern*) info ;
|
||||
delete self ;
|
||||
}
|
||||
|
||||
|
||||
CGPatternRef m_patternRef ;
|
||||
|
||||
static const CGPatternCallbacks ms_Callbacks ;
|
||||
@@ -357,9 +361,8 @@ public :
|
||||
ImagePattern( CGImageRef image , CGAffineTransform transform )
|
||||
{
|
||||
if ( image )
|
||||
{
|
||||
CFRetain( image ) ;
|
||||
}
|
||||
|
||||
Init( image , transform ) ;
|
||||
}
|
||||
|
||||
@@ -381,12 +384,13 @@ protected :
|
||||
kCGPatternTilingNoDistortion, true , &wxMacCGPattern::ms_Callbacks ) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
~ImagePattern()
|
||||
{
|
||||
if ( m_image )
|
||||
CGImageRelease( m_image ) ;
|
||||
}
|
||||
|
||||
CGImageRef m_image ;
|
||||
CGRect m_imageBounds ;
|
||||
} ;
|
||||
@@ -424,7 +428,7 @@ public :
|
||||
|
||||
virtual void Render( CGContextRef ctxRef )
|
||||
{
|
||||
switch( m_hatch )
|
||||
switch ( m_hatch )
|
||||
{
|
||||
case wxBDIAGONAL_HATCH :
|
||||
{
|
||||
@@ -434,6 +438,7 @@ public :
|
||||
StrokeLineSegments( ctxRef , pts , 2 ) ;
|
||||
}
|
||||
break ;
|
||||
|
||||
case wxCROSSDIAG_HATCH :
|
||||
{
|
||||
CGPoint pts[] = {
|
||||
@@ -443,6 +448,7 @@ public :
|
||||
StrokeLineSegments( ctxRef , pts , 4 ) ;
|
||||
}
|
||||
break ;
|
||||
|
||||
case wxFDIAGONAL_HATCH :
|
||||
{
|
||||
CGPoint pts[] = {
|
||||
@@ -451,6 +457,7 @@ public :
|
||||
StrokeLineSegments( ctxRef , pts , 2 ) ;
|
||||
}
|
||||
break ;
|
||||
|
||||
case wxCROSS_HATCH :
|
||||
{
|
||||
CGPoint pts[] = {
|
||||
@@ -460,6 +467,7 @@ public :
|
||||
StrokeLineSegments( ctxRef , pts , 4 ) ;
|
||||
}
|
||||
break ;
|
||||
|
||||
case wxHORIZONTAL_HATCH :
|
||||
{
|
||||
CGPoint pts[] = {
|
||||
@@ -468,6 +476,7 @@ public :
|
||||
StrokeLineSegments( ctxRef , pts , 2 ) ;
|
||||
}
|
||||
break ;
|
||||
|
||||
case wxVERTICAL_HATCH :
|
||||
{
|
||||
CGPoint pts[] = {
|
||||
@@ -480,9 +489,8 @@ public :
|
||||
}
|
||||
|
||||
protected :
|
||||
~HatchPattern()
|
||||
{
|
||||
}
|
||||
~HatchPattern() {}
|
||||
|
||||
int m_hatch ;
|
||||
CGRect m_imageBounds ;
|
||||
} ;
|
||||
@@ -508,6 +516,7 @@ void wxMacCGContext::SetPen( const wxPen &pen )
|
||||
{
|
||||
m_mode = kCGPathFill ;
|
||||
}
|
||||
|
||||
if ( stroke )
|
||||
{
|
||||
RGBColor col = MAC_WXCOLORREF( pen.GetColour().GetPixel() ) ;
|
||||
@@ -520,7 +529,7 @@ void wxMacCGContext::SetPen( const wxPen &pen )
|
||||
CGContextSetLineWidth( m_cgContext , penWidth ) ;
|
||||
|
||||
CGLineCap cap ;
|
||||
switch( pen.GetCap() )
|
||||
switch ( pen.GetCap() )
|
||||
{
|
||||
case wxCAP_ROUND :
|
||||
cap = kCGLineCapRound ;
|
||||
@@ -537,7 +546,7 @@ void wxMacCGContext::SetPen( const wxPen &pen )
|
||||
}
|
||||
|
||||
CGLineJoin join ;
|
||||
switch( pen.GetJoin() )
|
||||
switch ( pen.GetJoin() )
|
||||
{
|
||||
case wxJOIN_BEVEL :
|
||||
join = kCGLineJoinBevel ;
|
||||
@@ -568,26 +577,31 @@ void wxMacCGContext::SetPen( const wxPen &pen )
|
||||
const float dotted_dashed[] = { 9.0 , 6.0 , 3.0 , 3.0 };
|
||||
|
||||
|
||||
switch( pen.GetStyle() )
|
||||
switch ( pen.GetStyle() )
|
||||
{
|
||||
case wxSOLID :
|
||||
break ;
|
||||
|
||||
case wxDOT :
|
||||
lengths = dotted ;
|
||||
count = WXSIZEOF(dotted);
|
||||
break ;
|
||||
|
||||
case wxLONG_DASH :
|
||||
lengths = dashed ;
|
||||
count = WXSIZEOF(dashed) ;
|
||||
break ;
|
||||
|
||||
case wxSHORT_DASH :
|
||||
lengths = short_dashed ;
|
||||
count = WXSIZEOF(short_dashed) ;
|
||||
break ;
|
||||
|
||||
case wxDOT_DASH :
|
||||
lengths = dotted_dashed ;
|
||||
count = WXSIZEOF(dotted_dashed);
|
||||
break ;
|
||||
|
||||
case wxUSER_DASH :
|
||||
wxDash *dashes ;
|
||||
count = pen.GetDashes( &dashes ) ;
|
||||
@@ -606,6 +620,7 @@ void wxMacCGContext::SetPen( const wxPen &pen )
|
||||
}
|
||||
lengths = userLengths ;
|
||||
break ;
|
||||
|
||||
case wxSTIPPLE :
|
||||
{
|
||||
float alphaArray[1] = { 1.0 } ;
|
||||
@@ -619,6 +634,7 @@ void wxMacCGContext::SetPen( const wxPen &pen )
|
||||
}
|
||||
}
|
||||
break ;
|
||||
|
||||
default :
|
||||
{
|
||||
wxMacCFRefHolder<CGColorSpaceRef> patternSpace( CGColorSpaceCreatePattern( wxMacGetGenericRGBColorSpace() ) ) ;
|
||||
@@ -643,10 +659,12 @@ void wxMacCGContext::SetPen( const wxPen &pen )
|
||||
{
|
||||
CGContextSetLineDash( m_cgContext , 0 , NULL , 0 ) ;
|
||||
}
|
||||
|
||||
CGContextSetLineCap( m_cgContext , cap ) ;
|
||||
|
||||
delete[] userLengths ;
|
||||
}
|
||||
|
||||
if ( fill && stroke )
|
||||
{
|
||||
m_mode = kCGPathFillStroke ;
|
||||
@@ -706,14 +724,12 @@ void wxMacCGContext::SetBrush( const wxBrush &brush )
|
||||
}
|
||||
m_mode = kCGPathFill ;
|
||||
}
|
||||
|
||||
if ( stroke )
|
||||
{
|
||||
m_mode = kCGPathStroke ;
|
||||
}
|
||||
|
||||
if ( fill && stroke )
|
||||
{
|
||||
m_mode = kCGPathFillStroke ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -737,6 +753,7 @@ void AddRoundedRectToPath(CGContextRef c, CGRect rect, float ovalWidth,
|
||||
CGContextAddRect(c, rect);
|
||||
return;
|
||||
}
|
||||
|
||||
CGContextSaveGState(c);
|
||||
CGContextTranslateCTM(c, CGRectGetMinX(rect), CGRectGetMinY(rect));
|
||||
CGContextScaleCTM(c, ovalWidth, ovalHeight);
|
||||
@@ -753,8 +770,8 @@ void AddRoundedRectToPath(CGContextRef c, CGRect rect, float ovalWidth,
|
||||
|
||||
wxDC::wxDC()
|
||||
{
|
||||
m_ok = FALSE;
|
||||
m_colour = TRUE;
|
||||
m_ok = false;
|
||||
m_colour = true;
|
||||
m_mm_to_pix_x = mm2pt;
|
||||
m_mm_to_pix_y = mm2pt;
|
||||
|
||||
@@ -766,10 +783,10 @@ wxDC::wxDC()
|
||||
m_userScaleY = 1.0;
|
||||
m_scaleX = 1.0;
|
||||
m_scaleY = 1.0;
|
||||
m_needComputeScaleX = FALSE;
|
||||
m_needComputeScaleY = FALSE;
|
||||
m_needComputeScaleX = false;
|
||||
m_needComputeScaleY = false;
|
||||
|
||||
m_ok = FALSE ;
|
||||
m_ok = false ;
|
||||
m_macPort = 0 ;
|
||||
m_macLocalOrigin.x = m_macLocalOrigin.y = 0 ;
|
||||
|
||||
@@ -782,9 +799,9 @@ wxDC::wxDC()
|
||||
m_graphicContext = NULL ;
|
||||
}
|
||||
|
||||
wxDC::~wxDC(void)
|
||||
wxDC::~wxDC()
|
||||
{
|
||||
if( m_macATSUIStyle )
|
||||
if ( m_macATSUIStyle )
|
||||
{
|
||||
::ATSUDisposeStyle((ATSUStyle)m_macATSUIStyle);
|
||||
m_macATSUIStyle = NULL ;
|
||||
@@ -848,7 +865,7 @@ void wxDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord hei
|
||||
|
||||
// SetRectRgn( (RgnHandle) m_macCurrentClipRgn , xx , yy , xx + ww , yy + hh ) ;
|
||||
// SectRgn( (RgnHandle) m_macCurrentClipRgn , (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
|
||||
if( m_clipping )
|
||||
if ( m_clipping )
|
||||
{
|
||||
m_clipX1 = wxMax( m_clipX1 , xx );
|
||||
m_clipY1 = wxMax( m_clipY1 , yy );
|
||||
@@ -857,7 +874,7 @@ void wxDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord hei
|
||||
}
|
||||
else
|
||||
{
|
||||
m_clipping = TRUE;
|
||||
m_clipping = true;
|
||||
m_clipX1 = xx;
|
||||
m_clipY1 = yy;
|
||||
m_clipX2 = xx + ww;
|
||||
@@ -875,6 +892,7 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion ®ion )
|
||||
DestroyClippingRegion();
|
||||
return;
|
||||
}
|
||||
|
||||
wxCoord x, y, w, h;
|
||||
region.GetBox( x, y, w, h );
|
||||
wxCoord xx, yy, ww, hh;
|
||||
@@ -898,7 +916,7 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion ®ion )
|
||||
}
|
||||
SectRgn( (RgnHandle) m_macCurrentClipRgn , (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
|
||||
*/
|
||||
if( m_clipping )
|
||||
if ( m_clipping )
|
||||
{
|
||||
m_clipX1 = wxMax( m_clipX1 , xx );
|
||||
m_clipY1 = wxMax( m_clipY1 , yy );
|
||||
@@ -907,7 +925,7 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion ®ion )
|
||||
}
|
||||
else
|
||||
{
|
||||
m_clipping = TRUE;
|
||||
m_clipping = true;
|
||||
m_clipX1 = xx;
|
||||
m_clipY1 = yy;
|
||||
m_clipX2 = xx + ww;
|
||||
@@ -924,7 +942,7 @@ void wxDC::DestroyClippingRegion()
|
||||
CGContextSaveGState( cgContext );
|
||||
m_graphicContext->SetPen( m_pen ) ;
|
||||
m_graphicContext->SetBrush( m_brush ) ;
|
||||
m_clipping = FALSE;
|
||||
m_clipping = false;
|
||||
}
|
||||
|
||||
void wxDC::DoGetSizeMM( int* width, int* height ) const
|
||||
@@ -959,24 +977,29 @@ void wxDC::SetMapMode( int mode )
|
||||
case wxMM_TWIPS:
|
||||
SetLogicalScale( twips2mm*m_mm_to_pix_x, twips2mm*m_mm_to_pix_y );
|
||||
break;
|
||||
|
||||
case wxMM_POINTS:
|
||||
SetLogicalScale( pt2mm*m_mm_to_pix_x, pt2mm*m_mm_to_pix_y );
|
||||
break;
|
||||
|
||||
case wxMM_METRIC:
|
||||
SetLogicalScale( m_mm_to_pix_x, m_mm_to_pix_y );
|
||||
break;
|
||||
|
||||
case wxMM_LOMETRIC:
|
||||
SetLogicalScale( m_mm_to_pix_x/10.0, m_mm_to_pix_y/10.0 );
|
||||
break;
|
||||
default:
|
||||
|
||||
case wxMM_TEXT:
|
||||
default:
|
||||
SetLogicalScale( 1.0, 1.0 );
|
||||
break;
|
||||
}
|
||||
|
||||
if (mode != wxMM_TEXT)
|
||||
{
|
||||
m_needComputeScaleX = TRUE;
|
||||
m_needComputeScaleY = TRUE;
|
||||
m_needComputeScaleX =
|
||||
m_needComputeScaleY = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1036,12 +1059,14 @@ void wxDC::ComputeScaleAndOrigin()
|
||||
m_scaleY = m_logicalScaleY * m_userScaleY;
|
||||
m_deviceOriginX = m_externalDeviceOriginX;
|
||||
m_deviceOriginY = m_externalDeviceOriginY;
|
||||
|
||||
// CMB: if scale has changed call SetPen to recalulate the line width
|
||||
if (m_scaleX != origScaleX || m_scaleY != origScaleY)
|
||||
{
|
||||
// this is a bit artificial, but we need to force wxDC to think
|
||||
// the pen has changed
|
||||
wxPen pen(GetPen());
|
||||
|
||||
m_pen = wxNullPen;
|
||||
SetPen(pen);
|
||||
}
|
||||
@@ -1066,6 +1091,7 @@ void wxDC::SetPen( const wxPen &pen )
|
||||
{
|
||||
if ( m_pen == pen )
|
||||
return ;
|
||||
|
||||
m_pen = pen;
|
||||
if ( m_graphicContext )
|
||||
{
|
||||
@@ -1091,6 +1117,7 @@ void wxDC::SetBrush( const wxBrush &brush )
|
||||
{
|
||||
if (m_brush == brush)
|
||||
return;
|
||||
|
||||
m_brush = brush;
|
||||
if ( m_graphicContext )
|
||||
{
|
||||
@@ -1116,6 +1143,7 @@ void wxDC::SetBackground( const wxBrush &brush )
|
||||
{
|
||||
if (m_backgroundBrush == brush)
|
||||
return;
|
||||
|
||||
m_backgroundBrush = brush;
|
||||
if (!m_backgroundBrush.Ok())
|
||||
return;
|
||||
@@ -1125,6 +1153,7 @@ void wxDC::SetLogicalFunction( int function )
|
||||
{
|
||||
if (m_logicalFunction == function)
|
||||
return;
|
||||
|
||||
m_logicalFunction = function ;
|
||||
}
|
||||
|
||||
@@ -1150,6 +1179,7 @@ bool wxDC::DoGetPixel( wxCoord x, wxCoord y, wxColour *col ) const
|
||||
col->Set( colour.red >> 8,
|
||||
colour.green >> 8,
|
||||
colour.blue >> 8);
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -1316,6 +1346,7 @@ void wxDC::DoDrawLines(int n, wxPoint points[],
|
||||
|
||||
path->AddLineToPoint( x2 , y2 ) ;
|
||||
}
|
||||
|
||||
m_graphicContext->StrokePath( path ) ;
|
||||
delete path ;
|
||||
}
|
||||
@@ -1403,10 +1434,10 @@ void wxDC::DoDrawPolygon(int n, wxPoint points[],
|
||||
|
||||
path->AddLineToPoint( x2 , y2 ) ;
|
||||
}
|
||||
|
||||
if ( x1 != x2 || y1 != y2 )
|
||||
{
|
||||
path->AddLineToPoint( x1,y1 ) ;
|
||||
}
|
||||
|
||||
path->CloseSubpath() ;
|
||||
m_graphicContext->DrawPath( path , fillStyle ) ;
|
||||
delete path ;
|
||||
@@ -1426,6 +1457,7 @@ void wxDC::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
|
||||
// CMB: draw nothing if transformed w or h is 0
|
||||
if (ww == 0 || hh == 0)
|
||||
return;
|
||||
|
||||
// CMB: handle -ve width and/or height
|
||||
if (ww < 0)
|
||||
{
|
||||
@@ -1437,6 +1469,7 @@ void wxDC::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
|
||||
hh = -hh;
|
||||
yy = yy - hh;
|
||||
}
|
||||
|
||||
wxGraphicPath* path = m_graphicContext->CreatePath() ;
|
||||
path->AddRectangle( xx , yy , ww , hh ) ;
|
||||
m_graphicContext->DrawPath( path ) ;
|
||||
@@ -1452,7 +1485,6 @@ void wxDC::DoDrawRoundedRectangle(wxCoord x, wxCoord y,
|
||||
if ( m_logicalFunction != wxCOPY )
|
||||
return ;
|
||||
|
||||
|
||||
if (radius < 0.0)
|
||||
radius = - radius * ((width < height) ? width : height);
|
||||
wxCoord xx = XLOG2DEVMAC(x);
|
||||
@@ -1462,6 +1494,7 @@ void wxDC::DoDrawRoundedRectangle(wxCoord x, wxCoord y,
|
||||
// CMB: draw nothing if transformed w or h is 0
|
||||
if (ww == 0 || hh == 0)
|
||||
return;
|
||||
|
||||
// CMB: handle -ve width and/or height
|
||||
if (ww < 0)
|
||||
{
|
||||
@@ -1473,6 +1506,7 @@ void wxDC::DoDrawRoundedRectangle(wxCoord x, wxCoord y,
|
||||
hh = -hh;
|
||||
yy = yy - hh;
|
||||
}
|
||||
|
||||
wxMacCGContext* mctx = ((wxMacCGContext*) m_graphicContext) ;
|
||||
CGContextRef ctx = mctx->GetNativeContext() ;
|
||||
AddRoundedRectToPath( ctx , CGRectMake( xx , yy , ww , hh ) , 16 ,16 ) ;
|
||||
@@ -1493,6 +1527,7 @@ void wxDC::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
|
||||
// CMB: draw nothing if transformed w or h is 0
|
||||
if (ww == 0 || hh == 0)
|
||||
return;
|
||||
|
||||
// CMB: handle -ve width and/or height
|
||||
if (ww < 0)
|
||||
{
|
||||
@@ -1527,10 +1562,12 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
|
||||
wxCHECK_MSG(Ok(), false, wxT("wxDC::DoBlit Illegal dc"));
|
||||
wxCHECK_MSG(source->Ok(), false, wxT("wxDC::DoBlit Illegal source DC"));
|
||||
if ( logical_func == wxNO_OP )
|
||||
return TRUE ;
|
||||
return true ;
|
||||
|
||||
if (xsrcMask == -1 && ysrcMask == -1)
|
||||
{
|
||||
xsrcMask = xsrc; ysrcMask = ysrc;
|
||||
xsrcMask = xsrc;
|
||||
ysrcMask = ysrc;
|
||||
}
|
||||
|
||||
wxCoord yysrc = source->YLOG2DEVMAC(ysrc) ;
|
||||
@@ -1575,6 +1612,7 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
|
||||
blit = wxNullBitmap ;
|
||||
}
|
||||
}
|
||||
|
||||
if ( blit.Ok() )
|
||||
{
|
||||
CGContextRef cg = ((wxMacCGContext*)(m_graphicContext))->GetNativeContext() ;
|
||||
@@ -1583,7 +1621,6 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
|
||||
HIViewDrawCGImage( cg , &r , image ) ;
|
||||
CGImageRelease( image ) ;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1591,9 +1628,10 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
|
||||
CGContextRef cg = (wxMacCGContext*)(source->GetGraphicContext())->GetNativeContext() ;
|
||||
void *data = CGBitmapContextGetData( cg ) ;
|
||||
*/
|
||||
return FALSE ; // wxFAIL_MSG( wxT("Blitting is only supported from bitmap contexts") ) ;
|
||||
return false ; // wxFAIL_MSG( wxT("Blitting is only supported from bitmap contexts") ) ;
|
||||
}
|
||||
return TRUE;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y,
|
||||
@@ -1603,7 +1641,6 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y,
|
||||
|
||||
if ( str.Length() == 0 )
|
||||
return ;
|
||||
|
||||
if ( m_logicalFunction != wxCOPY )
|
||||
return ;
|
||||
|
||||
@@ -1734,6 +1771,7 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y,
|
||||
CalcBoundingBox(XDEV2LOG(rect.right), YDEV2LOG(rect.bottom) );
|
||||
|
||||
::ATSUDisposeTextLayout(atsuLayout);
|
||||
|
||||
#if SIZEOF_WCHAR_T == 4
|
||||
free( ubuf ) ;
|
||||
#endif
|
||||
@@ -1796,7 +1834,6 @@ void wxDC::DoGetTextExtent( const wxString &str, wxCoord *width, wxCoord *heigh
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
status = ::ATSUCreateTextLayoutWithTextPtr( (UniCharArrayPtr) ubuf , 0 , chars , chars , 1 ,
|
||||
&chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ;
|
||||
|
||||
@@ -1831,7 +1868,6 @@ void wxDC::DoGetTextExtent( const wxString &str, wxCoord *width, wxCoord *heigh
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool wxDC::DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const
|
||||
{
|
||||
wxCHECK_MSG(Ok(), false, wxT("Invalid DC"));
|
||||
@@ -1868,26 +1904,26 @@ bool wxDC::DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) con
|
||||
#endif
|
||||
#endif
|
||||
|
||||
OSStatus status;
|
||||
OSStatus status;
|
||||
status = ::ATSUCreateTextLayoutWithTextPtr( (UniCharArrayPtr) ubuf , 0 , chars , chars , 1 ,
|
||||
&chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ;
|
||||
|
||||
for ( int pos = 0; pos < (int)chars; pos ++ ) {
|
||||
unsigned long actualNumberOfBounds = 0;
|
||||
ATSTrapezoid glyphBounds;
|
||||
for ( int pos = 0; pos < (int)chars; pos ++ )
|
||||
{
|
||||
unsigned long actualNumberOfBounds = 0;
|
||||
ATSTrapezoid glyphBounds;
|
||||
|
||||
// We get a single bound, since the text should only require one. If it requires more, there is an issue
|
||||
OSStatus result;
|
||||
result = ATSUGetGlyphBounds( atsuLayout, 0, 0, kATSUFromTextBeginning, pos + 1, kATSUseDeviceOrigins, 1, &glyphBounds, &actualNumberOfBounds );
|
||||
if (result != noErr || actualNumberOfBounds != 1 )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
// We get a single bound, since the text should only require one. If it requires more, there is an issue
|
||||
OSStatus result;
|
||||
result = ATSUGetGlyphBounds( atsuLayout, 0, 0, kATSUFromTextBeginning, pos + 1,
|
||||
kATSUseDeviceOrigins, 1, &glyphBounds, &actualNumberOfBounds );
|
||||
if (result != noErr || actualNumberOfBounds != 1 )
|
||||
return false;
|
||||
|
||||
widths[pos] = XDEV2LOGREL(FixedToInt( glyphBounds.upperRight.x - glyphBounds.upperLeft.x ));
|
||||
//unsigned char uch = s[i];
|
||||
}
|
||||
|
||||
widths[pos] = XDEV2LOGREL(FixedToInt( glyphBounds.upperRight.x - glyphBounds.upperLeft.x ));
|
||||
//unsigned char uch = s[i];
|
||||
|
||||
}
|
||||
::ATSUDisposeTextLayout(atsuLayout);
|
||||
return true;
|
||||
}
|
||||
@@ -1928,18 +1964,19 @@ void wxDC::Clear(void)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
RGBColor color;
|
||||
RGBColor color;
|
||||
GetThemeBrushAsColor( m_backgroundBrush.MacGetTheme(), 32, true, &color );
|
||||
CGContextSetRGBFillColor( cg, (float) color.red / 65536,
|
||||
(float) color.green / 65536, (float) color.blue / 65536, 1 );
|
||||
CGContextFillRect( cg, rect );
|
||||
(float) color.green / 65536, (float) color.blue / 65536, 1 );
|
||||
CGContextFillRect( cg, rect );
|
||||
}
|
||||
|
||||
// reset to normal value
|
||||
RGBColor col = MAC_WXCOLORREF( GetBrush().GetColour().GetPixel() ) ;
|
||||
CGContextSetRGBFillColor( cg, col.red / 65536.0, col.green / 65536.0, col.blue / 65536.0, 1.0 );
|
||||
}
|
||||
break ;
|
||||
break ;
|
||||
|
||||
case kwxMacBrushThemeBackground :
|
||||
{
|
||||
wxFAIL_MSG( wxT("There shouldn't be theme backgrounds under Quartz") ) ;
|
||||
@@ -1956,23 +1993,24 @@ void wxDC::Clear(void)
|
||||
HIThemeApplyBackground( &rect , &drawInfo, cg ,
|
||||
kHIThemeOrientationNormal) ;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
}
|
||||
}
|
||||
break ;
|
||||
case kwxMacBrushColour :
|
||||
{
|
||||
RGBColor col = MAC_WXCOLORREF( m_backgroundBrush.GetColour().GetPixel()) ;
|
||||
CGContextSetRGBFillColor( cg , col.red / 65536.0 , col.green / 65536.0 , col.blue / 65536.0 , 1.0 ) ;
|
||||
CGContextFillRect(cg, rect);
|
||||
break ;
|
||||
|
||||
// reset to normal value
|
||||
col = MAC_WXCOLORREF( GetBrush().GetColour().GetPixel() ) ;
|
||||
CGContextSetRGBFillColor( cg , col.red / 65536.0 , col.green / 65536.0 , col.blue / 65536.0 , 1.0 ) ;
|
||||
}
|
||||
break ;
|
||||
case kwxMacBrushColour :
|
||||
{
|
||||
RGBColor col = MAC_WXCOLORREF( m_backgroundBrush.GetColour().GetPixel()) ;
|
||||
CGContextSetRGBFillColor( cg , col.red / 65536.0 , col.green / 65536.0 , col.blue / 65536.0 , 1.0 ) ;
|
||||
CGContextFillRect(cg, rect);
|
||||
|
||||
// reset to normal value
|
||||
col = MAC_WXCOLORREF( GetBrush().GetColour().GetPixel() ) ;
|
||||
CGContextSetRGBFillColor( cg , col.red / 65536.0 , col.green / 65536.0 , col.blue / 65536.0 , 1.0 ) ;
|
||||
}
|
||||
break ;
|
||||
|
||||
default
|
||||
break ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1981,7 +2019,7 @@ void wxDC::MacInstallFont() const
|
||||
{
|
||||
wxCHECK_RET(Ok(), wxT("Invalid DC"));
|
||||
|
||||
if( m_macATSUIStyle )
|
||||
if ( m_macATSUIStyle )
|
||||
{
|
||||
::ATSUDisposeStyle((ATSUStyle)m_macATSUIStyle);
|
||||
m_macATSUIStyle = NULL ;
|
||||
|
@@ -246,9 +246,7 @@ bool wxToolBar::Create(wxWindow *parent,
|
||||
LRESULT style = ::SendMessage(GetHwnd(), TB_GETSTYLE, 0, 0L);
|
||||
|
||||
if ( !(style & TBSTYLE_FLAT) )
|
||||
{
|
||||
::SendMessage(GetHwnd(), TB_SETSTYLE, 0, style | TBSTYLE_FLAT);
|
||||
}
|
||||
}
|
||||
#endif // wxUSE_UXTHEME
|
||||
|
||||
@@ -362,6 +360,7 @@ wxSize wxToolBar::DoGetBestSize() const
|
||||
}
|
||||
|
||||
CacheBestSize(sizeBest);
|
||||
|
||||
return sizeBest;
|
||||
}
|
||||
|
||||
@@ -374,8 +373,8 @@ WXDWORD wxToolBar::MSWGetStyle(long style, WXDWORD *exstyle) const
|
||||
(style & ~wxBORDER_MASK) | wxBORDER_NONE, exstyle
|
||||
);
|
||||
|
||||
// always include this one, it never hurts and setting it later only if we
|
||||
// do have tooltips wouldn't work
|
||||
// always include this one, it never hurts and setting it later
|
||||
// only if we do have tooltips wouldn't work
|
||||
msStyle |= TBSTYLE_TOOLTIPS;
|
||||
|
||||
if ( style & (wxTB_FLAT | wxTB_HORZ_LAYOUT) )
|
||||
@@ -460,7 +459,6 @@ bool wxToolBar::DoDeleteTool(size_t pos, wxToolBarToolBase *tool)
|
||||
if ( tool->IsControl() )
|
||||
{
|
||||
nButtonsToDelete = ((wxToolBarTool *)tool)->GetSeparatorsCount();
|
||||
|
||||
width *= nButtonsToDelete;
|
||||
}
|
||||
|
||||
@@ -493,6 +491,7 @@ bool wxToolBar::DoDeleteTool(size_t pos, wxToolBarToolBase *tool)
|
||||
}
|
||||
|
||||
InvalidateBestSize();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -535,10 +534,8 @@ bool wxToolBar::Realize()
|
||||
{
|
||||
const size_t nTools = GetToolsCount();
|
||||
if ( nTools == 0 )
|
||||
{
|
||||
// nothing to do
|
||||
return true;
|
||||
}
|
||||
|
||||
const bool isVertical = HasFlag(wxTB_VERTICAL);
|
||||
|
||||
@@ -831,9 +828,7 @@ bool wxToolBar::Realize()
|
||||
{
|
||||
const wxString& label = tool->GetLabel();
|
||||
if ( !label.empty() )
|
||||
{
|
||||
button.iString = (int)label.c_str();
|
||||
}
|
||||
}
|
||||
|
||||
button.idCommand = tool->GetId();
|
||||
@@ -887,12 +882,14 @@ bool wxToolBar::Realize()
|
||||
button.fsStyle = TBSTYLE_CHECK;
|
||||
break;
|
||||
|
||||
default:
|
||||
wxFAIL_MSG( _T("unexpected toolbar button kind") );
|
||||
// fall through
|
||||
|
||||
case wxITEM_NORMAL:
|
||||
button.fsStyle = TBSTYLE_BUTTON;
|
||||
break;
|
||||
|
||||
default:
|
||||
wxFAIL_MSG( _T("unexpected toolbar button kind") );
|
||||
button.fsStyle = TBSTYLE_BUTTON;
|
||||
break;
|
||||
}
|
||||
|
||||
bitmapId++;
|
||||
@@ -1021,7 +1018,7 @@ bool wxToolBar::Realize()
|
||||
left = 0;
|
||||
top = y;
|
||||
|
||||
y += height + 2*GetMargins().y;
|
||||
y += height + 2 * GetMargins().y;
|
||||
}
|
||||
else // horizontal toolbar
|
||||
{
|
||||
@@ -1041,18 +1038,14 @@ bool wxToolBar::Realize()
|
||||
if ( !isVertical )
|
||||
{
|
||||
if ( m_maxRows == 0 )
|
||||
{
|
||||
// if not set yet, only one row
|
||||
SetRows(1);
|
||||
}
|
||||
}
|
||||
else if ( m_nButtons > 0 ) // vertical non empty toolbar
|
||||
{
|
||||
if ( m_maxRows == 0 )
|
||||
{
|
||||
// if not set yet, have one column
|
||||
SetRows(m_nButtons);
|
||||
}
|
||||
}
|
||||
|
||||
InvalidateBestSize();
|
||||
@@ -1214,13 +1207,12 @@ wxToolBarToolBase *wxToolBar::FindToolForPosition(wxCoord x, wxCoord y) const
|
||||
pt.x = x;
|
||||
pt.y = y;
|
||||
int index = (int)::SendMessage(GetHwnd(), TB_HITTEST, 0, (LPARAM)&pt);
|
||||
|
||||
// MBN: when the point ( x, y ) is close to the toolbar border
|
||||
// TB_HITTEST returns m_nButtons ( not -1 )
|
||||
if ( index < 0 || (size_t)index >= m_nButtons )
|
||||
{
|
||||
// it's a separator or there is no tool at all there
|
||||
return (wxToolBarToolBase *)NULL;
|
||||
}
|
||||
|
||||
// when TB_SETBUTTONINFO is available (both during compile- and run-time),
|
||||
// we don't use the dummy separators hack
|
||||
@@ -1244,9 +1236,7 @@ void wxToolBar::UpdateSize()
|
||||
// we must also refresh the frame after the toolbar size (possibly) changed
|
||||
wxFrame *frame = wxDynamicCast(GetParent(), wxFrame);
|
||||
if ( frame )
|
||||
{
|
||||
frame->SendSizeEvent();
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -1427,10 +1417,10 @@ bool wxToolBar::HandleSize(WXWPARAM WXUNUSED(wParam), WXLPARAM lParam)
|
||||
|
||||
bool wxToolBar::HandlePaint(WXWPARAM wParam, WXLPARAM lParam)
|
||||
{
|
||||
// erase any dummy separators which we used for aligning the controls if
|
||||
// any here
|
||||
// erase any dummy separators which were used
|
||||
// for aligning the controls if any here
|
||||
|
||||
// first of all, do we have any controls at all?
|
||||
// first of all, are there any controls at all?
|
||||
wxToolBarToolsList::compatibility_iterator node;
|
||||
for ( node = m_tools.GetFirst(); node; node = node->GetNext() )
|
||||
{
|
||||
@@ -1439,10 +1429,8 @@ bool wxToolBar::HandlePaint(WXWPARAM wParam, WXLPARAM lParam)
|
||||
}
|
||||
|
||||
if ( !node )
|
||||
{
|
||||
// no controls, nothing to erase
|
||||
return false;
|
||||
}
|
||||
|
||||
// prepare the DC on which we'll be drawing
|
||||
wxClientDC dc(this);
|
||||
@@ -1451,10 +1439,8 @@ bool wxToolBar::HandlePaint(WXWPARAM wParam, WXLPARAM lParam)
|
||||
|
||||
RECT r;
|
||||
if ( !::GetUpdateRect(GetHwnd(), &r, FALSE) )
|
||||
{
|
||||
// nothing to redraw anyhow
|
||||
return false;
|
||||
}
|
||||
|
||||
wxRect rectUpdate;
|
||||
wxCopyRECTToRect(r, rectUpdate);
|
||||
@@ -1532,14 +1518,14 @@ void wxToolBar::HandleMouseMove(WXWPARAM WXUNUSED(wParam), WXLPARAM lParam)
|
||||
wxToolBarToolBase* tool = FindToolForPosition( x, y );
|
||||
|
||||
// cursor left current tool
|
||||
if( tool != m_pInTool && !tool )
|
||||
if ( tool != m_pInTool && !tool )
|
||||
{
|
||||
m_pInTool = 0;
|
||||
OnMouseEnter( -1 );
|
||||
}
|
||||
|
||||
// cursor entered a tool
|
||||
if( tool != m_pInTool && tool )
|
||||
if ( tool != m_pInTool && tool )
|
||||
{
|
||||
m_pInTool = tool;
|
||||
OnMouseEnter( tool->GetId() );
|
||||
@@ -1566,6 +1552,9 @@ WXLRESULT wxToolBar::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam
|
||||
if ( HandlePaint(wParam, lParam) )
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return wxControl::MSWWindowProc(nMsg, wParam, lParam);
|
||||
@@ -1681,5 +1670,5 @@ WXHBITMAP wxToolBar::MapBitmap(WXHBITMAP bitmap, int width, int height)
|
||||
#endif // 0
|
||||
}
|
||||
|
||||
#endif // wxUSE_TOOLBAR && Win95
|
||||
#endif // wxUSE_TOOLBAR
|
||||
|
||||
|
Reference in New Issue
Block a user