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

📄 mono.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    // radio    {        // normal state        { xpmRadioChecked, xpmRadioUnchecked, xpmUndeterminate },        // pressed state        { xpmUndeterminate, xpmUndeterminate, xpmUndeterminate },        // disabled state        { xpmUndeterminate, xpmUndeterminate, xpmUndeterminate },    },};static const char *xpmLeftArrow[] = {/* columns rows colors chars-per-pixel */"8 8 2 1","  c white","X c black",/* pixels */"   X    ","  XX    "," XXX    ","XXXX    ","XXXX    "," XXX    ","  XX    ","   X    ",};static const char *xpmRightArrow[] = {/* columns rows colors chars-per-pixel */"8 8 2 1","  c white","X c black",/* pixels */"    X   ","    XX  ","    XXX ","    XXXX","    XXXX","    XXX ","    XX  ","    X   ",};static const char *xpmUpArrow[] = {/* columns rows colors chars-per-pixel */"8 8 2 1","  c white","X c black",/* pixels */"        ","   XX   ","  XXXX  "," XXXXXX ","XXXXXXXX","        ","        ","        ",};static const char *xpmDownArrow[] = {/* columns rows colors chars-per-pixel */"8 8 2 1","  c white","X c black",/* pixels */"        ","        ","        ","XXXXXXXX"," XXXXXX ","  XXXX  ","   XX   ","        ",};const char **wxMonoRenderer::ms_xpmArrows[Arrow_Max] ={    xpmLeftArrow, xpmRightArrow, xpmUpArrow, xpmDownArrow,};// ----------------------------------------------------------------------------// wxMonoColourScheme: uses just white and black// ----------------------------------------------------------------------------class wxMonoColourScheme : public wxColourScheme{public:    // we use only 2 colours, white and black, but we avoid referring to them    // like this, instead use the functions below    wxColour GetFg() const { return wxMONO_FG_COL; }    wxColour GetBg() const { return wxMONO_BG_COL; }    // implement base class pure virtuals    virtual wxColour Get(StdColour col) const;    virtual wxColour GetBackground(wxWindow *win) const;};// ----------------------------------------------------------------------------// wxMonoArtProvider// ----------------------------------------------------------------------------class wxMonoArtProvider : public wxArtProvider{protected:    virtual wxBitmap CreateBitmap(const wxArtID& id,                                  const wxArtClient& client,                                  const wxSize& size);};// ----------------------------------------------------------------------------// wxMonoTheme// ----------------------------------------------------------------------------class wxMonoTheme : public wxTheme{public:    wxMonoTheme();    virtual ~wxMonoTheme();    virtual wxRenderer *GetRenderer();    virtual wxArtProvider *GetArtProvider();    virtual wxInputHandler *GetInputHandler(const wxString& control,                                            wxInputConsumer *consumer);    virtual wxColourScheme *GetColourScheme();private:    wxMonoRenderer *m_renderer;    wxMonoArtProvider *m_artProvider;    wxMonoColourScheme *m_scheme;    WX_DECLARE_THEME(mono)};// ============================================================================// implementation// ============================================================================WX_IMPLEMENT_THEME(wxMonoTheme, mono, wxTRANSLATE("Simple monochrome theme"));// ----------------------------------------------------------------------------// wxMonoTheme// ----------------------------------------------------------------------------wxMonoTheme::wxMonoTheme(){    m_scheme = NULL;    m_renderer = NULL;    m_artProvider = NULL;}wxMonoTheme::~wxMonoTheme(){    delete m_renderer;    delete m_scheme;    delete m_artProvider;}wxRenderer *wxMonoTheme::GetRenderer(){    if ( !m_renderer )    {        m_renderer = new wxMonoRenderer(GetColourScheme());    }    return m_renderer;}wxArtProvider *wxMonoTheme::GetArtProvider(){    if ( !m_artProvider )    {        m_artProvider = new wxMonoArtProvider;    }    return m_artProvider;}wxColourScheme *wxMonoTheme::GetColourScheme(){    if ( !m_scheme )    {        m_scheme = new wxMonoColourScheme;    }    return m_scheme;}wxInputHandler *wxMonoTheme::GetInputHandler(const wxString& WXUNUSED(control),                                             wxInputConsumer *consumer){    // no special input handlers so far    return consumer->DoGetStdInputHandler(NULL);}// ============================================================================// wxMonoColourScheme// ============================================================================wxColour wxMonoColourScheme::GetBackground(wxWindow *win) const{    wxColour col;    if ( win->UseBgCol() )    {        // use the user specified colour        col = win->GetBackgroundColour();    }    // doesn't depend on the state    if ( !col.Ok() )    {        col = GetBg();    }    return col;}wxColour wxMonoColourScheme::Get(wxMonoColourScheme::StdColour col) const{    switch ( col )    {        case WINDOW:        case CONTROL:        case CONTROL_PRESSED:        case CONTROL_CURRENT:        case SCROLLBAR:        case SCROLLBAR_PRESSED:        case GAUGE:        case TITLEBAR:        case TITLEBAR_ACTIVE:        case HIGHLIGHT_TEXT:        case DESKTOP:            return GetBg();        case MAX:        default:            wxFAIL_MSG(_T("invalid standard colour"));            // fall through        case SHADOW_DARK:        case SHADOW_HIGHLIGHT:        case SHADOW_IN:        case SHADOW_OUT:        case CONTROL_TEXT:        case CONTROL_TEXT_DISABLED:        case CONTROL_TEXT_DISABLED_SHADOW:        case TITLEBAR_TEXT:        case TITLEBAR_ACTIVE_TEXT:        case HIGHLIGHT:            return GetFg();    }}// ============================================================================// wxMonoRenderer// ============================================================================// ----------------------------------------------------------------------------// construction// ----------------------------------------------------------------------------wxMonoRenderer::wxMonoRenderer(const wxColourScheme *scheme)              : wxStdRenderer(scheme){    m_penFg = wxPen(wxMONO_FG_COL);}// ----------------------------------------------------------------------------// borders// ----------------------------------------------------------------------------wxRect wxMonoRenderer::GetBorderDimensions(wxBorder border) const{    wxCoord width;    switch ( border )    {        case wxBORDER_SIMPLE:        case wxBORDER_STATIC:        case wxBORDER_RAISED:        case wxBORDER_SUNKEN:            width = 1;            break;        case wxBORDER_DOUBLE:            width = 2;            break;        default:            wxFAIL_MSG(_T("unknown border type"));            // fall through        case wxBORDER_DEFAULT:        case wxBORDER_NONE:            width = 0;            break;    }    wxRect rect;    rect.x =    rect.y =    rect.width =    rect.height = width;    return rect;}void wxMonoRenderer::DrawButtonBorder(wxDC& dc,                                     const wxRect& rect,                                     int flags,                                     wxRect *rectIn){    DrawBorder(dc, wxBORDER_SIMPLE, rect, flags, rectIn);}// ----------------------------------------------------------------------------// lines and frames// ----------------------------------------------------------------------------voidwxMonoRenderer::DrawHorizontalLine(wxDC& dc, wxCoord y, wxCoord x1, wxCoord x2){    dc.SetPen(m_penFg);    dc.DrawLine(x1, y, x2 + 1, y);}voidwxMonoRenderer::DrawVerticalLine(wxDC& dc, wxCoord x, wxCoord y1, wxCoord y2){    dc.SetPen(m_penFg);    dc.DrawLine(x, y1, x, y2 + 1);}void wxMonoRenderer::DrawFocusRect(wxDC& dc, const wxRect& rect, int flags){    // no need to draw the focus rect for selected items, it would be invisible    // anyhow    if ( !(flags & wxCONTROL_SELECTED) )    {        dc.SetPen(m_penFg);        dc.SetBrush(*wxTRANSPARENT_BRUSH);        dc.DrawRectangle(rect);    }}// ----------------------------------------------------------------------------// label// ----------------------------------------------------------------------------void wxMonoRenderer::DrawButtonLabel(wxDC& dc,                                     const wxString& label,                                     const wxBitmap& image,                                     const wxRect& rect,                                     int flags,                                     int alignment,                                     int indexAccel,                                     wxRect *rectBounds){    dc.SetTextForeground(m_penFg.GetColour());    dc.DrawLabel(label, image, rect, alignment, indexAccel, rectBounds);    if ( flags & wxCONTROL_DISABLED )    {        // this is ugly but I don't know how to show disabled button visually        // in monochrome theme otherwise, so cross it out        dc.SetPen(m_penFg);

⌨️ 快捷键说明

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