]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/renderer.h
Allow customizing AUI tab colours in wxAuiTabArt.
[wxWidgets.git] / interface / wx / renderer.h
index 61f3f56c07f91d20efaf09d1892f8ab5e2b3f9a6..f6b55e934f8532f4aaf1382f05a579f89c3ea6d7 100644 (file)
@@ -3,7 +3,7 @@
 // Purpose:     interface of wxRendererNative
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /**
@@ -56,6 +56,18 @@ enum
     wxCONTROL_UNDETERMINED = wxCONTROL_CHECKABLE
 };
 
+/**
+    Title bar buttons supported by wxRendererNative::DrawTitleBarBitmap().
+ */
+enum wxTitleBarButton
+{
+    wxTITLEBAR_BUTTON_CLOSE    = 0x01000000,
+    wxTITLEBAR_BUTTON_MAXIMIZE = 0x02000000,
+    wxTITLEBAR_BUTTON_ICONIZE  = 0x04000000,
+    wxTITLEBAR_BUTTON_RESTORE  = 0x08000000,
+    wxTITLEBAR_BUTTON_HELP     = 0x10000000
+};
+
 /**
     @struct wxSplitterRenderParams
 
@@ -132,8 +144,9 @@ enum wxHeaderSortIconType
     @class wxDelegateRendererNative
 
     wxDelegateRendererNative allows reuse of renderers code by forwarding all the
-    wxRendererNative methods to the given object and thus allowing you to only
-    modify some of its methods -- without having to reimplement all of them.
+    wxRendererNative methods to the given object and
+    thus allowing you to only modify some of its methods -- without having to
+    reimplement all of them.
 
     Note that the "normal", inheritance-based approach, doesn't work with the
     renderers as it is impossible to derive from a class unknown at compile-time
@@ -145,11 +158,11 @@ enum wxHeaderSortIconType
     by using this class.
 
     Except for the constructor, it has exactly the same methods as
-    wxRendererNative and their implementation is trivial: they are simply forwarded
-    to the real renderer. Note that the "real" renderer may, in turn, be a
-    wxDelegateRendererNative as well and that there may be arbitrarily many levels
-    like this -- but at the end of the chain there must be a real renderer which
-    does the drawing.
+    wxRendererNative and their implementation is
+    trivial: they are simply forwarded to the real renderer. Note that the "real"
+    renderer may, in turn, be a wxDelegateRendererNative as well and that there may
+    be arbitrarily many levels like this -- but at the end of the chain there must
+    be a real renderer which does the drawing.
 
     @library{wxcore}
     @category{gdi}
@@ -191,6 +204,8 @@ public:
 
     virtual int GetHeaderButtonHeight(wxWindow *win);
 
+    virtual int GetHeaderButtonMargin(wxWindow *win);
+
     virtual void DrawTreeItemButton(wxWindow *win, wxDC& dc,
                                     const wxRect& rect, int flags = 0);
 
@@ -210,7 +225,7 @@ public:
     virtual void DrawCheckBox(wxWindow *win, wxDC& dc,
                               const wxRect& rect, int flags = 0 );
 
-    virtual wxSize GetCheckBoxSize() const;
+    virtual wxSize GetCheckBoxSize(wxWindow *win);
 
     virtual void DrawPushButton(wxWindow *win, wxDC& dc,
                                 const wxRect& rect, int flags = 0 );
@@ -335,7 +350,7 @@ public:
         @c wxCONTROL_DISABLED and @c wxCONTROL_CURRENT bits, see @ref wxCONTROL_FLAGS.
 
         @return
-        The optimal width to contain the the unabreviated label text or
+        The optimal width to contain the unabbreviated label text or
         bitmap, the sort arrow if present, and internal margins.
     */
     virtual int DrawHeaderButton(wxWindow* win, wxDC& dc, const wxRect& rect,
@@ -350,7 +365,7 @@ public:
         @c wxCONTROL_DISABLED and @c wxCONTROL_CURRENT bits, see @ref wxCONTROL_FLAGS.
 
         @return
-        The optimal width to contain the the unabreviated label text or
+        The optimal width to contain the unabbreviated label text or
         bitmap, the sort arrow if present, and internal margins.
     */
     virtual int DrawHeaderButtonContents(wxWindow* win, wxDC& dc,
@@ -365,7 +380,7 @@ public:
         which are selected (e.g. often a blue rectangle) and @c wxCONTROL_CURRENT
         for the item that has the focus (often a dotted line around the item's text).
         @c wxCONTROL_FOCUSED may be used to indicate if the control has the focus
-        (othewise the the selection rectangle is e.g. often grey and not blue).
+        (otherwise the selection rectangle is e.g. often grey and not blue).
         This may be ignored by the renderer or deduced by the code directly from
         the @a win.
     */
@@ -408,22 +423,46 @@ public:
     /**
         Draw a native wxChoice
     */
-    virtual void DrawChoice(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0) = 0;
+    virtual void DrawChoice(wxWindow* win, wxDC& dc, const wxRect& rect, int flags = 0) = 0;
 
     /**
         Draw a native wxComboBox
     */
-    virtual void DrawComboBox(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0) = 0;
+    virtual void DrawComboBox(wxWindow* win, wxDC& dc, const wxRect& rect, int flags = 0) = 0;
 
     /**
         Draw a native wxTextCtrl frame
     */
-    virtual void DrawTextCtrl(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0) = 0;
+    virtual void DrawTextCtrl(wxWindow* win, wxDC& dc, const wxRect& rect, int flags = 0) = 0;
 
     /**
-        Draw a native wxRadioButton (just the button image, not the text)
+        Draw a native wxRadioButton bitmap.
     */
-    virtual void DrawRadioButton(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0) = 0;
+    virtual void DrawRadioBitmap(wxWindow* win, wxDC& dc, const wxRect& rect, int flags = 0) = 0;
+
+    /**
+        Draw a title bar button in the given state.
+
+        This function is currently only available under MSW and OS X (and only
+        for wxTITLEBAR_BUTTON_CLOSE under the latter), its best replacement for
+        the other platforms is to use wxArtProvider to retrieve the bitmaps for
+        @c wxART_HELP and @c wxART_CLOSE (but not any other title bar buttons
+        and not for any state but normal, i.e. not pressed and not current one).
+
+        The presence of this function is indicated by @c
+        wxHAS_DRAW_TITLE_BAR_BITMAP symbol being defined.
+
+        Also notice that PNG handler must be enabled using wxImage::AddHandler()
+        to use this function under OS X currently as the bitmaps are embedded
+        in the library itself in PNG format.
+
+        @since 2.9.1
+     */
+    virtual void DrawTitleBarBitmap(wxWindow *win,
+                                    wxDC& dc,
+                                    const wxRect& rect,
+                                    wxTitleBarButton button,
+                                    int flags = 0) = 0;
 
     /**
         Return the currently used renderer.
@@ -447,19 +486,27 @@ public:
 
     /**
         Returns the size of a check box.
+        The @a win parameter is not used currently and can be @NULL.
     */
-    virtual wxSize GetCheckBoxSize() const = 0;
+    virtual wxSize GetCheckBoxSize(wxWindow* win) = 0;
 
     /**
         Returns the height of a header button, either a fixed platform height if
-        available, or a
-        generic height based on the window's font.
+        available, or a generic height based on the @a win window's font.
     */
     virtual int GetHeaderButtonHeight(wxWindow* win) = 0;
 
     /**
-        Get the splitter parameters, see
-        wxSplitterRenderParams.
+        Returns the horizontal margin on the left and right sides of header
+        button's label.
+
+        @since 2.9.2
+     */
+    virtual int GetHeaderButtonMargin(wxWindow *win) = 0;
+
+    /**
+        Get the splitter parameters, see wxSplitterRenderParams.
+        The @a win parameter should be a wxSplitterWindow.
     */
     virtual wxSplitterRenderParams GetSplitterParams(const wxWindow* win) = 0;