X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/34621cc5d6eaf8933935fbda55625124429a0ff9..d924939be81c8a836516cded30f1392cd9b6baf5:/include/wx/univ/renderer.h diff --git a/include/wx/univ/renderer.h b/include/wx/univ/renderer.h index 11c5a02807..1db8d9e190 100644 --- a/include/wx/univ/renderer.h +++ b/include/wx/univ/renderer.h @@ -9,6 +9,9 @@ // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// +#ifndef _WX_UNIV_RENDERER_H_ +#define _WX_UNIV_RENDERER_H_ + /* wxRenderer class is used to draw all wxWidgets controls. This is an ABC and the look of the application is determined by the concrete derivation of @@ -25,25 +28,29 @@ implementation of the latter or reimplement itself). */ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma interface "renderer.h" -#endif - -#ifndef _WX_UNIV_RENDERER_H_ -#define _WX_UNIV_RENDERER_H_ - #include "wx/renderer.h" +class WXDLLEXPORT wxWindow; class WXDLLEXPORT wxDC; class WXDLLEXPORT wxCheckListBox; -class WXDLLEXPORT wxListBox; -class WXDLLEXPORT wxMenu; -class WXDLLEXPORT wxMenuGeometryInfo; + +#if wxUSE_LISTBOX + class WXDLLEXPORT wxListBox; +#endif // wxUSE_LISTBOX + +#if wxUSE_MENUS + class WXDLLEXPORT wxMenu; + class WXDLLEXPORT wxMenuGeometryInfo; +#endif // wxUSE_MENUS + class WXDLLEXPORT wxScrollBar; -class WXDLLEXPORT wxTextCtrl; -class WXDLLEXPORT wxWindow; + +#if wxUSE_TEXTCTRL + class WXDLLEXPORT wxTextCtrl; +#endif + #if wxUSE_GAUGE -class WXDLLEXPORT wxGauge; + class WXDLLEXPORT wxGauge; #endif // wxUSE_GAUGE #include "wx/string.h" @@ -203,6 +210,7 @@ public: wxAlignment align = wxALIGN_LEFT, int indexAccel = -1) = 0; +#if wxUSE_TOOLBAR // draw a toolbar button (label may be empty, bitmap may be invalid, if // both conditions are true this function draws a separator) virtual void DrawToolBarButton(wxDC& dc, @@ -210,7 +218,9 @@ public: const wxBitmap& bitmap, const wxRect& rect, int flags = 0, - long style = 0) = 0; + long style = 0, + int tbarStyle = 0) = 0; +#endif // wxUSE_TOOLBAR // draw a (part of) line in the text control virtual void DrawTextLine(wxDC& dc, @@ -232,6 +242,8 @@ public: int flags = 0, int indexAccel = -1) = 0; +#if wxUSE_SLIDER + // draw the slider shaft virtual void DrawSliderShaft(wxDC& dc, const wxRect& rect, @@ -258,7 +270,9 @@ public: int step = 1, int flags = 0, long style = 0) = 0; +#endif // wxUSE_SLIDER +#if wxUSE_MENUS // draw a menu bar item virtual void DrawMenuBarItem(wxDC& dc, const wxRect& rect, @@ -282,13 +296,16 @@ public: virtual void DrawMenuSeparator(wxDC& dc, wxCoord y, const wxMenuGeometryInfo& geomInfo) = 0; +#endif // wxUSE_MENUS +#if wxUSE_STATUSBAR // draw a status bar field: wxCONTROL_ISDEFAULT bit in the flags is // interpreted specially and means "draw the status bar grip" here virtual void DrawStatusField(wxDC& dc, const wxRect& rect, const wxString& label, int flags = 0, int style = 0) = 0; +#endif // wxUSE_STATUSBAR // draw complete frame/dialog titlebar virtual void DrawFrameTitleBar(wxDC& dc, @@ -353,6 +370,8 @@ public: // the control looks "nice" if it uses the adjusted rectangle virtual void AdjustSize(wxSize *size, const wxWindow *window) = 0; +#if wxUSE_SCROLLBAR + // get the size of a scrollbar arrow virtual wxSize GetScrollbarArrowSize() const = 0; @@ -376,6 +395,8 @@ public: virtual int PixelToScrollbar(const wxScrollBar *scrollbar, wxCoord coord) = 0; +#endif // wxUSE_SCROLLBAR + // get the height of a listbox item from the base font height virtual wxCoord GetListboxItemHeight(wxCoord fontHeight) = 0; @@ -391,6 +412,7 @@ public: // get the margins between/around the toolbar buttons virtual wxSize GetToolBarMargin() const = 0; +#if wxUSE_TEXTCTRL // convert between text rectangle and client rectangle for text controls: // the former is typicall smaller to leave margins around text virtual wxRect GetTextTotalArea(const wxTextCtrl *text, @@ -400,6 +422,7 @@ public: virtual wxRect GetTextClientArea(const wxTextCtrl *text, const wxRect& rectTotal, wxCoord *extraSpaceBeyond) const = 0; +#endif // wxUSE_TEXTCTRL // get the overhang of a selected tab virtual wxSize GetTabIndent() const = 0; @@ -407,6 +430,7 @@ public: // get the padding around the text in a tab virtual wxSize GetTabPadding() const = 0; +#if wxUSE_SLIDER // get the default size of the slider in lesser dimension (i.e. height of a // horizontal slider or width of a vertical one) virtual wxCoord GetSliderDim() const = 0; @@ -424,10 +448,12 @@ public: virtual wxSize GetSliderThumbSize(const wxRect& rect, int lenThumb, wxOrientation orient) const = 0; +#endif // wxUSE_SLIDER // get the size of one progress bar step (in horz and vertical directions) virtual wxSize GetProgressBarStep() const = 0; +#if wxUSE_MENUS // get the size of rectangle to use in the menubar for the given text rect virtual wxSize GetMenuBarItemSize(const wxSize& sizeText) const = 0; @@ -438,10 +464,13 @@ public: // the returned pointer must be deleted by the caller virtual wxMenuGeometryInfo *GetMenuGeometry(wxWindow *win, const wxMenu& menu) const = 0; +#endif // wxUSE_MENUS +#if wxUSE_STATUSBAR // get the borders around the status bar fields (x and y fields of the // return value) and also, optionally, the border between the fields virtual wxSize GetStatusBarBorders(wxCoord *borderBetweenFields) const = 0; +#endif // wxUSE_STATUSBAR // get client area rectangle of top level window (i.e. subtract // decorations from given rectangle) @@ -480,6 +509,7 @@ protected: int selStart, int selEnd, int flags); +#if wxUSE_SCROLLBAR // standard scrollbar hit testing: this assumes that it only has 2 arrows // and a thumb, so the themes which have more complicated scrollbars (e.g. // BeOS) can't use this method @@ -504,6 +534,8 @@ protected: int range, wxCoord *thumbStart, wxCoord *thumbEnd); +#endif // wxUSE_SCROLLBAR + }; // ---------------------------------------------------------------------------- @@ -625,13 +657,16 @@ public: int indexAccel = -1) { m_renderer->DrawRadioButton(dc, label, bitmap, rect, flags, align, indexAccel); } +#if wxUSE_TOOLBAR virtual void DrawToolBarButton(wxDC& dc, const wxString& label, const wxBitmap& bitmap, const wxRect& rect, int flags = 0, - long style = 0) - { m_renderer->DrawToolBarButton(dc, label, bitmap, rect, flags, style); } + long style = 0, + int tbarStyle = 0) + { m_renderer->DrawToolBarButton(dc, label, bitmap, rect, flags, style, tbarStyle); } +#endif // wxUSE_TOOLBAR virtual void DrawTextLine(wxDC& dc, const wxString& text, const wxRect& rect, @@ -651,6 +686,8 @@ public: int accel = -1) { m_renderer->DrawTab(dc, rect, dir, label, bitmap, flags, accel); } +#if wxUSE_SLIDER + virtual void DrawSliderShaft(wxDC& dc, const wxRect& rect, int lenThumb, @@ -676,7 +713,9 @@ public: long style = 0) { m_renderer->DrawSliderTicks(dc, rect, lenThumb, orient, start, end, start, flags, style); } +#endif // wxUSE_SLIDER +#if wxUSE_MENUS virtual void DrawMenuBarItem(wxDC& dc, const wxRect& rect, const wxString& label, @@ -697,12 +736,15 @@ public: wxCoord y, const wxMenuGeometryInfo& geomInfo) { m_renderer->DrawMenuSeparator(dc, y, geomInfo); } +#endif // wxUSE_MENUS +#if wxUSE_STATUSBAR virtual void DrawStatusField(wxDC& dc, const wxRect& rect, const wxString& label, int flags = 0, int style = 0) { m_renderer->DrawStatusField(dc, rect, label, flags, style); } +#endif // wxUSE_STATUSBAR virtual void DrawFrameTitleBar(wxDC& dc, const wxRect& rect, @@ -751,6 +793,7 @@ public: virtual bool AreScrollbarsInsideBorder() const { return m_renderer->AreScrollbarsInsideBorder(); } +#if wxUSE_SCROLLBAR virtual wxSize GetScrollbarArrowSize() const { return m_renderer->GetScrollbarArrowSize(); } virtual wxRect GetScrollbarRect(const wxScrollBar *scrollbar, @@ -768,6 +811,8 @@ public: virtual int PixelToScrollbar(const wxScrollBar *scrollbar, wxCoord coord) { return m_renderer->PixelToScrollbar(scrollbar, coord); } +#endif // wxUSE_SCROLLBAR + virtual wxCoord GetListboxItemHeight(wxCoord fontHeight) { return m_renderer->GetListboxItemHeight(fontHeight); } virtual wxSize GetCheckBitmapSize() const @@ -782,6 +827,7 @@ public: virtual wxSize GetToolBarMargin() const { return m_renderer->GetToolBarMargin(); } +#if wxUSE_TEXTCTRL virtual wxRect GetTextTotalArea(const wxTextCtrl *text, const wxRect& rect) const { return m_renderer->GetTextTotalArea(text, rect); } @@ -789,14 +835,17 @@ public: const wxRect& rect, wxCoord *extraSpaceBeyond) const { return m_renderer->GetTextClientArea(text, rect, extraSpaceBeyond); } +#endif // wxUSE_TEXTCTRL virtual wxSize GetTabIndent() const { return m_renderer->GetTabIndent(); } virtual wxSize GetTabPadding() const { return m_renderer->GetTabPadding(); } +#if wxUSE_SLIDER virtual wxCoord GetSliderDim() const { return m_renderer->GetSliderDim(); } virtual wxCoord GetSliderTickLen() const { return m_renderer->GetSliderTickLen(); } + virtual wxRect GetSliderShaftRect(const wxRect& rect, int lenThumb, wxOrientation orient, @@ -806,15 +855,23 @@ public: int lenThumb, wxOrientation orient) const { return m_renderer->GetSliderThumbSize(rect, lenThumb, orient); } +#endif // wxUSE_SLIDER + virtual wxSize GetProgressBarStep() const { return m_renderer->GetProgressBarStep(); } + +#if wxUSE_MENUS virtual wxSize GetMenuBarItemSize(const wxSize& sizeText) const { return m_renderer->GetMenuBarItemSize(sizeText); } virtual wxMenuGeometryInfo *GetMenuGeometry(wxWindow *win, const wxMenu& menu) const { return m_renderer->GetMenuGeometry(win, menu); } +#endif // wxUSE_MENUS + +#if wxUSE_STATUSBAR virtual wxSize GetStatusBarBorders(wxCoord *borderBetweenFields) const { return m_renderer->GetStatusBarBorders(borderBetweenFields); } +#endif // wxUSE_STATUSBAR virtual wxRect GetFrameClientArea(const wxRect& rect, int flags) const { return m_renderer->GetFrameClientArea(rect, flags); } virtual wxSize GetFrameTotalSize(const wxSize& clientSize, int flags) const @@ -894,10 +951,13 @@ public: wxStretch stretch = wxSTRETCH_NOT); private: + +#if wxUSE_LISTBOX // common part of DrawItems() and DrawCheckItems() void DoDrawItems(const wxListBox *listbox, size_t itemFirst, size_t itemLast, bool isCheckLbox = false); +#endif // wxUSE_LISTBOX wxWindow *m_window; wxRenderer *m_renderer; @@ -906,4 +966,3 @@ private: }; #endif // _WX_UNIV_RENDERER_H_ -