⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 renderer.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
            (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 );    }    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;             HIThemeDrawButton( &headerRect, &drawInfo, cgContext, kHIThemeOrientationNormal, &labelRect );                    }#if wxMAC_USE_CORE_GRAPHICS#else        QDEndCGContext( (CGrafPtr) dc.m_macPort, &cgContext );#endif    }}void wxRendererMac::DrawSplitterSash( wxWindow *win,    wxDC& dc,    const wxSize& size,    wxCoord position,    wxOrientation orient,    int WXUNUSED(flags) ){    bool hasMetal = win->MacGetTopLevelWindow()->MacGetMetalAppearance();    SInt32 height;    GetThemeMetric( kThemeMetricSmallPaneSplitterHeight, &height );    HIRect splitterRect;    if (orient == wxVERTICAL)        splitterRect = CGRectMake( position, 0, height, size.y );    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 );    }    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        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    }}voidwxRendererMac::DrawItemSelectionRect(wxWindow *win,                                     wxDC& dc,                                     const wxRect& rect,                                     int flags ){    RGBColor selColor;     if (flags & wxCONTROL_SELECTED)    {        if (flags & wxCONTROL_FOCUSED)            GetThemeBrushAsColor(kThemeBrushAlternatePrimaryHighlightColor, 32, true, &selColor);        else            GetThemeBrushAsColor(kThemeBrushSecondaryHighlightColor, 32, true, &selColor);    }        wxBrush selBrush = wxBrush( wxColour( selColor.red, selColor.green, selColor.blue ), wxSOLID );    dc.SetPen( *wxTRANSPARENT_PEN );    dc.SetBrush( selBrush );    dc.DrawRectangle( rect );}voidwxRendererMac::DrawMacThemeButton(wxWindow *win,                                  wxDC& dc,                                  const wxRect& rect,                                  int flags,                                  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 );    }    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 = kind;            drawInfo.state = (flags & wxCONTROL_DISABLED) ? kThemeStateInactive : kThemeStateActive;            drawInfo.value = (flags & wxCONTROL_SELECTED) ? kThemeButtonOn : kThemeButtonOff;            drawInfo.adornment = adornment;            HIThemeDrawButton( &headerRect, &drawInfo, cgContext, kHIThemeOrientationNormal, &labelRect );        }#if wxMAC_USE_CORE_GRAPHICS#else        QDEndCGContext( (CGrafPtr) dc.m_macPort, &cgContext );#endif    }}voidwxRendererMac::DrawComboBoxDropButton(wxWindow *win,                              wxDC& dc,                              const wxRect& rect,                              int flags){    DrawMacThemeButton(win, dc, rect, flags,                       kThemeArrowButton, kThemeAdornmentArrowDownArrow);}    voidwxRendererMac::DrawPushButton(wxWindow *win,                              wxDC& dc,                              const wxRect& rect,                              int flags){    DrawMacThemeButton(win, dc, rect, flags,                       kThemeBevelButton, kThemeAdornmentNone);}    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -