wxOrientation orient,
int flags = 0 );
+ virtual void DrawCheckBox(wxWindow *win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags = 0);
+
virtual void DrawComboBoxDropButton(wxWindow *win,
wxDC& dc,
const wxRect& rect,
wxHeaderSortIconType sortArrow,
wxHeaderButtonParams* params )
{
-#if !wxMAC_USE_CORE_GRAPHICS
- const wxCoord x = dc.LogicalToDeviceX(rect.x);
- const wxCoord y = dc.LogicalToDeviceY(rect.y);
- const wxCoord w = dc.LogicalToDeviceXRel(rect.width);
- const wxCoord h = dc.LogicalToDeviceYRel(rect.height);
-#else
- // now the wxGCDC is using native transformations
const wxCoord x = rect.x;
const wxCoord y = rect.y;
const wxCoord w = rect.width;
const wxCoord h = rect.height;
-#endif
dc.SetBrush( *wxTRANSPARENT_BRUSH );
HIRect headerRect = CGRectMake( x, y, w, h );
if ( !dc.IsKindOf( CLASSINFO( wxPaintDC ) ) )
{
- Rect r =
- {
- (short) headerRect.origin.y, (short) headerRect.origin.x,
- (short) (headerRect.origin.y + headerRect.size.height),
- (short) (headerRect.origin.x + headerRect.size.width)
- };
-
- RgnHandle updateRgn = NewRgn();
- RectRgn( updateRgn, &r );
- HIViewSetNeedsDisplayInRegion( (HIViewRef) win->GetHandle(), updateRgn, true );
- DisposeRgn( updateRgn );
+ win->Refresh( &rect );
}
else
{
CGContextRef cgContext;
+ wxGCDCImpl *impl = (wxGCDCImpl*) dc.GetImpl();
-#if wxMAC_USE_CORE_GRAPHICS
- cgContext = (CGContextRef) dc.GetGraphicsContext()->GetNativeContext();
-#else
- Rect bounds;
-
- GetPortBounds( (CGrafPtr) dc.m_macPort, &bounds );
- QDBeginCGContext( (CGrafPtr) dc.m_macPort, &cgContext );
-
- CGContextTranslateCTM( cgContext, 0, bounds.bottom - bounds.top );
- CGContextScaleCTM( cgContext, 1, -1 );
-
- HIShapeReplacePathInCGContext( HIShapeCreateWithQDRgn( (RgnHandle) dc.m_macCurrentClipRgn ), cgContext );
- CGContextClip( cgContext );
- HIViewConvertRect( &headerRect, (HIViewRef) win->GetHandle(), (HIViewRef) win->MacGetTopLevelWindow()->GetHandle() );
-#endif
+ cgContext = (CGContextRef) impl->GetGraphicsContext()->GetNativeContext();
{
HIThemeButtonDrawInfo drawInfo;
CGContextRestoreGState( cgContext );
}
}
-
-#if wxMAC_USE_CORE_GRAPHICS
-#else
- QDEndCGContext( (CGrafPtr) dc.m_macPort, &cgContext );
-#endif
}
// Reserve room for the arrows before writing the label, and turn off the
const wxRect& rect,
int flags )
{
-#if !wxMAC_USE_CORE_GRAPHICS
- const wxCoord x = dc.LogicalToDeviceX(rect.x);
- const wxCoord y = dc.LogicalToDeviceY(rect.y);
- const wxCoord w = dc.LogicalToDeviceXRel(rect.width);
- const wxCoord h = dc.LogicalToDeviceYRel(rect.height);
-#else
// now the wxGCDC is using native transformations
const wxCoord x = rect.x;
const wxCoord y = rect.y;
const wxCoord w = rect.width;
const wxCoord h = rect.height;
-#endif
dc.SetBrush( *wxTRANSPARENT_BRUSH );
HIRect headerRect = CGRectMake( x, y, w, h );
if ( !dc.IsKindOf( CLASSINFO( wxPaintDC ) ) )
{
- Rect r =
- {
- (short) headerRect.origin.y, (short) headerRect.origin.x,
- (short) (headerRect.origin.y + headerRect.size.height),
- (short) (headerRect.origin.x + headerRect.size.width)
- };
-
- RgnHandle updateRgn = NewRgn();
- RectRgn( updateRgn, &r );
- HIViewSetNeedsDisplayInRegion( (HIViewRef) win->GetHandle(), updateRgn, true );
- DisposeRgn( updateRgn );
+ win->Refresh( &rect );
}
else
{
CGContextRef cgContext;
-#if wxMAC_USE_CORE_GRAPHICS
- cgContext = (CGContextRef) dc.GetGraphicsContext()->GetNativeContext();
-#else
- Rect bounds;
-
- GetPortBounds( (CGrafPtr) dc.m_macPort, &bounds );
- QDBeginCGContext( (CGrafPtr) dc.m_macPort, &cgContext );
-
- CGContextTranslateCTM( cgContext, 0, bounds.bottom - bounds.top );
- CGContextScaleCTM( cgContext, 1, -1 );
-
- HIShapeReplacePathInCGContext( HIShapeCreateWithQDRgn( (RgnHandle) dc.m_macCurrentClipRgn ), cgContext );
- CGContextClip( cgContext );
- HIViewConvertRect( &headerRect, (HIViewRef) win->GetHandle(), (HIViewRef) win->MacGetTopLevelWindow()->GetHandle() );
-#endif
-
- {
- HIThemeButtonDrawInfo drawInfo;
- HIRect labelRect;
-
- memset( &drawInfo, 0, sizeof(drawInfo) );
- drawInfo.version = 0;
- drawInfo.kind = kThemeDisclosureButton;
- drawInfo.state = (flags & wxCONTROL_DISABLED) ? kThemeStateInactive : kThemeStateActive;
- // Apple mailing list posts say to use the arrow adornment constants, but those don't work.
- // We need to set the value using the 'old' DrawThemeButton constants instead.
- drawInfo.value = (flags & wxCONTROL_EXPANDED) ? kThemeDisclosureDown : kThemeDisclosureRight;
- drawInfo.adornment = kThemeAdornmentNone;
+ wxGCDCImpl *impl = (wxGCDCImpl*) dc.GetImpl();
+ cgContext = (CGContextRef) impl->GetGraphicsContext()->GetNativeContext();
- HIThemeDrawButton( &headerRect, &drawInfo, cgContext, kHIThemeOrientationNormal, &labelRect );
+ HIThemeButtonDrawInfo drawInfo;
+ HIRect labelRect;
- }
-
-#if wxMAC_USE_CORE_GRAPHICS
-#else
- QDEndCGContext( (CGrafPtr) dc.m_macPort, &cgContext );
-#endif
+ memset( &drawInfo, 0, sizeof(drawInfo) );
+ drawInfo.version = 0;
+ drawInfo.kind = kThemeDisclosureButton;
+ drawInfo.state = (flags & wxCONTROL_DISABLED) ? kThemeStateInactive : kThemeStateActive;
+ // Apple mailing list posts say to use the arrow adornment constants, but those don't work.
+ // We need to set the value using the 'old' DrawThemeButton constants instead.
+ drawInfo.value = (flags & wxCONTROL_EXPANDED) ? kThemeDisclosureDown : kThemeDisclosureRight;
+ drawInfo.adornment = kThemeAdornmentNone;
+
+ HIThemeDrawButton( &headerRect, &drawInfo, cgContext, kHIThemeOrientationNormal, &labelRect );
}
}
else
splitterRect = CGRectMake( 0, position, size.x, height );
-#if !wxMAC_USE_CORE_GRAPHICS
- HIViewConvertRect(
- &splitterRect,
- (HIViewRef) win->GetHandle(),
- (HIViewRef) win->MacGetTopLevelWindow()->GetHandle() );
-#endif
-
// under compositing we should only draw when called by the OS, otherwise just issue a redraw command
// strange redraw errors occur if we don't do this
if ( !dc.IsKindOf( CLASSINFO( wxPaintDC ) ) )
{
- Rect r =
- {
- (short) splitterRect.origin.y,
- (short) splitterRect.origin.x,
- (short) (splitterRect.origin.y + splitterRect.size.height),
- (short) (splitterRect.origin.x + splitterRect.size.width)
- };
-
- RgnHandle updateRgn = NewRgn();
- RectRgn( updateRgn, &r );
- HIViewSetNeedsDisplayInRegion( (HIViewRef) win->GetHandle(), updateRgn, true );
- DisposeRgn( updateRgn );
- }
+ wxRect rect( (int) splitterRect.origin.x, (int) splitterRect.origin.y, (int) splitterRect.size.width,
+ (int) splitterRect.size.height );
+ win->Refresh( &rect );
+ }
else
{
CGContextRef cgContext;
-
-#if wxMAC_USE_CORE_GRAPHICS
- cgContext = (CGContextRef) dc.GetGraphicsContext()->GetNativeContext();
-#else
- Rect bounds;
- GetPortBounds( (CGrafPtr) dc.m_macPort, &bounds );
- QDBeginCGContext( (CGrafPtr) dc.m_macPort, &cgContext );
- CGContextTranslateCTM( cgContext, 0, bounds.bottom - bounds.top );
- CGContextScaleCTM( cgContext, 1, -1 );
-#endif
+ wxGCDCImpl *impl = (wxGCDCImpl*) dc.GetImpl();
+ cgContext = (CGContextRef) impl->GetGraphicsContext()->GetNativeContext();
HIThemeSplitterDrawInfo drawInfo;
drawInfo.version = 0;
drawInfo.state = kThemeStateActive;
drawInfo.adornment = hasMetal ? kHIThemeSplitterAdornmentMetal : kHIThemeSplitterAdornmentNone;
HIThemeDrawPaneSplitter( &splitterRect, &drawInfo, cgContext, kHIThemeOrientationNormal );
-
-#if wxMAC_USE_CORE_GRAPHICS
-#else
- QDEndCGContext( (CGrafPtr) dc.m_macPort, &cgContext );
-#endif
}
}
void
-wxRendererMac::DrawItemSelectionRect(wxWindow *win,
+wxRendererMac::DrawItemSelectionRect(wxWindow * WXUNUSED(win),
wxDC& dc,
const wxRect& rect,
- int flags )
+ int flags)
{
if ( !(flags & wxCONTROL_SELECTED) )
return;
- RGBColor selColor;
- GetThemeBrushAsColor(flags & wxCONTROL_FOCUSED
- ? kThemeBrushAlternatePrimaryHighlightColor
- : kThemeBrushSecondaryHighlightColor,
- 32, true, &selColor);
-
- wxBrush selBrush(selColor);
+ wxColour col( wxMacCreateCGColorFromHITheme( (flags & wxCONTROL_FOCUSED) ?
+ kThemeBrushAlternatePrimaryHighlightColor
+ : kThemeBrushSecondaryHighlightColor ) );
+ wxBrush selBrush( col );
dc.SetPen( *wxTRANSPARENT_PEN );
dc.SetBrush( selBrush );
int kind,
int adornment)
{
-#if !wxMAC_USE_CORE_GRAPHICS
- const wxCoord x = dc.LogicalToDeviceX(rect.x);
- const wxCoord y = dc.LogicalToDeviceY(rect.y);
- const wxCoord w = dc.LogicalToDeviceXRel(rect.width);
- const wxCoord h = dc.LogicalToDeviceYRel(rect.height);
-#else
// now the wxGCDC is using native transformations
const wxCoord x = rect.x;
const wxCoord y = rect.y;
const wxCoord w = rect.width;
const wxCoord h = rect.height;
-#endif
dc.SetBrush( *wxTRANSPARENT_BRUSH );
HIRect headerRect = CGRectMake( x, y, w, h );
if ( !dc.IsKindOf( CLASSINFO( wxPaintDC ) ) )
{
- Rect r =
- {
- (short) headerRect.origin.y, (short) headerRect.origin.x,
- (short) (headerRect.origin.y + headerRect.size.height),
- (short) (headerRect.origin.x + headerRect.size.width)
- };
-
- RgnHandle updateRgn = NewRgn();
- RectRgn( updateRgn, &r );
- HIViewSetNeedsDisplayInRegion( (HIViewRef) win->GetHandle(), updateRgn, true );
- DisposeRgn( updateRgn );
+ win->Refresh( &rect );
}
else
{
+ wxGCDCImpl *impl = (wxGCDCImpl*) dc.GetImpl();
CGContextRef cgContext;
+ cgContext = (CGContextRef) impl->GetGraphicsContext()->GetNativeContext();
-#if wxMAC_USE_CORE_GRAPHICS
- cgContext = (CGContextRef) dc.GetGraphicsContext()->GetNativeContext();
-#else
- Rect bounds;
-
- GetPortBounds( (CGrafPtr) dc.m_macPort, &bounds );
- QDBeginCGContext( (CGrafPtr) dc.m_macPort, &cgContext );
-
- CGContextTranslateCTM( cgContext, 0, bounds.bottom - bounds.top );
- CGContextScaleCTM( cgContext, 1, -1 );
-
- HIShapeReplacePathInCGContext( HIShapeCreateWithQDRgn( (RgnHandle) dc.m_macCurrentClipRgn ), cgContext );
- CGContextClip( cgContext );
- HIViewConvertRect( &headerRect, (HIViewRef) win->GetHandle(), (HIViewRef) win->MacGetTopLevelWindow()->GetHandle() );
-#endif
-
- {
- HIThemeButtonDrawInfo drawInfo;
- HIRect labelRect;
-
- memset( &drawInfo, 0, sizeof(drawInfo) );
- drawInfo.version = 0;
- drawInfo.kind = kind;
- drawInfo.state = (flags & wxCONTROL_DISABLED) ? kThemeStateInactive : kThemeStateActive;
- drawInfo.value = (flags & wxCONTROL_SELECTED) ? kThemeButtonOn : kThemeButtonOff;
- drawInfo.adornment = adornment;
-
- HIThemeDrawButton( &headerRect, &drawInfo, cgContext, kHIThemeOrientationNormal, &labelRect );
- }
+ HIThemeButtonDrawInfo drawInfo;
+ HIRect labelRect;
-#if wxMAC_USE_CORE_GRAPHICS
-#else
- QDEndCGContext( (CGrafPtr) dc.m_macPort, &cgContext );
-#endif
+ memset( &drawInfo, 0, sizeof(drawInfo) );
+ drawInfo.version = 0;
+ drawInfo.kind = kind;
+ drawInfo.state = (flags & wxCONTROL_DISABLED) ? kThemeStateInactive : kThemeStateActive;
+ drawInfo.value = (flags & wxCONTROL_SELECTED) ? kThemeButtonOn : kThemeButtonOff;
+ if (flags & wxCONTROL_UNDETERMINED)
+ drawInfo.value = kThemeButtonMixed;
+ drawInfo.adornment = adornment;
+
+ HIThemeDrawButton( &headerRect, &drawInfo, cgContext, kHIThemeOrientationNormal, &labelRect );
}
}
+void
+wxRendererMac::DrawCheckBox(wxWindow *win,
+ wxDC& dc,
+ const wxRect& rect,
+ int flags)
+{
+ if (flags & wxCONTROL_CHECKED)
+ flags |= wxCONTROL_SELECTED;
+
+ DrawMacThemeButton(win, dc, rect, flags,
+ kThemeCheckBox, kThemeAdornmentNone);
+}
void
wxRendererMac::DrawComboBoxDropButton(wxWindow *win,
return;
}
-#if wxMAC_USE_CORE_GRAPHICS
- {
- CGRect cgrect = CGRectMake( rect.x , rect.y , rect.width, rect.height ) ;
+ CGRect cgrect = CGRectMake( rect.x , rect.y , rect.width, rect.height ) ;
- HIThemeFrameDrawInfo info ;
- memset( &info, 0 , sizeof(info) ) ;
+ HIThemeFrameDrawInfo info ;
+ memset( &info, 0 , sizeof(info) ) ;
- info.version = 0 ;
- info.kind = 0 ;
- info.state = kThemeStateActive;
- info.isFocused = true ;
+ info.version = 0 ;
+ info.kind = 0 ;
+ info.state = kThemeStateActive;
+ info.isFocused = true ;
- CGContextRef cgContext = (CGContextRef) win->MacGetCGContextRef() ;
- wxASSERT( cgContext ) ;
+ CGContextRef cgContext = (CGContextRef) win->MacGetCGContextRef() ;
+ wxASSERT( cgContext ) ;
- HIThemeDrawFocusRect( &cgrect , true , cgContext , kHIThemeOrientationNormal ) ;
- }
-#else
- // FIXME: not yet working for !wxMAC_USE_CORE_GRAPHICS
- {
- Rect r;
- r.left = rect.x; r.top = rect.y; r.right = rect.GetRight(); r.bottom = rect.GetBottom();
- wxTopLevelWindowMac* top = win->MacGetTopLevelWindow();
- if ( top )
- {
- wxPoint pt(0, 0) ;
- wxMacControl::Convert( &pt , win->GetPeer() , top->GetPeer() ) ;
- OffsetRect( &r , pt.x , pt.y ) ;
- }
-
- DrawThemeFocusRect( &r , true ) ;
- }
-#endif
+ HIThemeDrawFocusRect( &cgrect , true , cgContext , kHIThemeOrientationNormal ) ;
}