]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/renderer.h
allow windows which are placed inside wxStaticBoxes to be built as children of the...
[wxWidgets.git] / interface / wx / renderer.h
index 6c33c39d59f897d1bb59b8ba18e0f05617ffe987..0d0803e4f48f0647c44e35fd2f6d9b211e800f2d 100644 (file)
@@ -58,7 +58,6 @@ enum
 
 /**
     @struct wxSplitterRenderParams
-    @wxheader{renderer.h}
 
     This is just a simple @c struct used as a return value of
     wxRendererNative::GetSplitterParams().
@@ -95,7 +94,6 @@ struct wxSplitterRenderParams
 
 /**
     @struct wxHeaderButtonParams
-    @wxheader{renderer.h}
 
     This @c struct can optionally be used with
     wxRendererNative::DrawHeaderButton() to specify custom values used to draw
@@ -132,7 +130,6 @@ enum wxHeaderSortIconType
 
 /**
     @class wxDelegateRendererNative
-    @wxheader{renderer.h}
 
     wxDelegateRendererNative allows reuse of renderers code by forwarding all the
     wxRendererNative methods to the given object and
@@ -214,6 +211,8 @@ public:
     virtual void DrawCheckBox(wxWindow *win, wxDC& dc,
                               const wxRect& rect, int flags = 0 );
 
+    virtual wxSize GetCheckBoxSize(wxWindow *win);
+
     virtual void DrawPushButton(wxWindow *win, wxDC& dc,
                                 const wxRect& rect, int flags = 0 );
 
@@ -232,7 +231,6 @@ public:
 
 /**
     @class wxRendererNative
-    @wxheader{renderer.h}
 
     First, a brief introduction to wxRendererNative and why it is needed.
 
@@ -287,16 +285,16 @@ public:
     /**
         Virtual destructor as for any base class.
     */
-    ~wxRendererNative();
+    virtual ~wxRendererNative();
 
     /**
-        Draw a check box (used by wxDataViewCtrl).
+        Draw a check box.
 
         @a flags may have the @c wxCONTROL_CHECKED, @c wxCONTROL_CURRENT or
         @c wxCONTROL_UNDETERMINED bit set, see @ref wxCONTROL_FLAGS.
     */
-    virtual void DrawCheckBox(wxWindow* win, wxDC& dc,
-                              const wxRect& rect, int flags);
+    virtual void DrawCheckBox(wxWindow* win, wxDC& dc, const wxRect& rect,
+                              int flags = 0) = 0;
 
     /**
         Draw a button like the one used by wxComboBox to show a
@@ -306,8 +304,7 @@ public:
         see @ref wxCONTROL_FLAGS.
     */
     virtual void DrawComboBoxDropButton(wxWindow* win, wxDC& dc,
-                                const wxRect& rect,
-                                int flags);
+                                        const wxRect& rect, int flags = 0) = 0;
 
     /**
         Draw a drop down arrow that is suitable for use outside a combo box. Arrow will
@@ -320,7 +317,7 @@ public:
         see @ref wxCONTROL_FLAGS.
     */
     virtual void DrawDropArrow(wxWindow* win, wxDC& dc, const wxRect& rect,
-                       int flags);
+                               int flags = 0) = 0;
 
     /**
         Draw a focus rectangle using the specified rectangle.
@@ -330,7 +327,7 @@ public:
         see @ref wxCONTROL_FLAGS.
     */
     virtual void DrawFocusRect(wxWindow* win, wxDC& dc, const wxRect& rect,
-                       int flags = 0);
+                               int flags = 0) = 0;
 
     /**
         Draw the header control button (used, for example, by wxListCtrl).
@@ -342,10 +339,9 @@ public:
         The optimal width to contain the the unabreviated label text or
         bitmap, the sort arrow if present, and internal margins.
     */
-    virtual int DrawHeaderButton(wxWindow* win, wxDC& dc,
-                                 const wxRect& rect, int flags = 0,
-                                 wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE,
-                                 wxHeaderButtonParams* params = NULL);
+    virtual int DrawHeaderButton(wxWindow* win, wxDC& dc, const wxRect& rect,
+                                 int flags = 0,
+                                 wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE, wxHeaderButtonParams* params = NULL) = 0;
 
     /**
         Draw the contents of a header control button (label, sort arrows,
@@ -358,10 +354,9 @@ public:
         The optimal width to contain the the unabreviated label text or
         bitmap, the sort arrow if present, and internal margins.
     */
-    virtual int DrawHeaderButtonContents(wxWindow *win, wxDC& dc,
+    virtual int DrawHeaderButtonContents(wxWindowwin, wxDC& dc,
                                          const wxRect& rect, int flags = 0,
-                                         wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE,
-                                         wxHeaderButtonParams* params = NULL);
+                                         wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE, wxHeaderButtonParams* params = NULL) = 0;
 
     /**
         Draw a selection rectangle underneath the text as used e.g. in a
@@ -376,7 +371,7 @@ public:
         the @a win.
     */
     virtual void DrawItemSelectionRect(wxWindow* win, wxDC& dc,
-                                       const wxRect& rect, int flags = 0);
+                                       const wxRect& rect, int flags = 0) = 0;
 
     /**
         Draw a blank push button that looks very similar to wxButton.
@@ -384,23 +379,23 @@ public:
         @a flags may have the @c wxCONTROL_PRESSED, @c wxCONTROL_CURRENT or
         @c wxCONTROL_ISDEFAULT bit set, see @ref wxCONTROL_FLAGS.
     */
-    virtual void DrawPushButton(wxWindow* win, wxDC& dc,
-                                const wxRect& rect, int flags);
+    virtual void DrawPushButton(wxWindow* win, wxDC& dc, const wxRect& rect,
+                                int flags = 0) = 0;
 
     /**
         Draw the border for sash window: this border must be such that the sash
         drawn by DrawSplitterSash() blends into it well.
     */
-    virtual void DrawSplitterBorder(wxWindow* win, wxDC& dc,
-                                    const wxRect& rect, int flags = 0);
+    virtual void DrawSplitterBorder(wxWindow* win, wxDC& dc, const wxRect& rect,
+                                    int flags = 0) = 0;
 
     /**
         Draw a sash. The @a orient parameter defines whether the sash should be
         vertical or horizontal and how the @a position should be interpreted.
     */
-    virtual void DrawSplitterSash(wxWindow* win, wxDC& dc,
-                                  const wxSize& size, wxCoord position,
-                                  wxOrientation orient, int flags = 0);
+    virtual void DrawSplitterSash(wxWindow* win, wxDC& dc, const wxSize& size,
+                                  wxCoord position, wxOrientation orient,
+                                  int flags = 0) = 0;
 
     /**
         Draw the expanded/collapsed icon for a tree control item.
@@ -408,13 +403,33 @@ public:
         To draw an expanded button the @a flags parameter must contain @c wxCONTROL_EXPANDED bit,
         see @ref wxCONTROL_FLAGS.
     */
-    virtual void DrawTreeItemButton(wxWindow* win, wxDC& dc,
-                                    const wxRect& rect, int flags = 0);
+    virtual void DrawTreeItemButton(wxWindow* win, wxDC& dc, const wxRect& rect,
+                                    int flags = 0) = 0;
+
+    /**
+        Draw a native wxChoice
+    */
+    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;
+
+    /**
+        Draw a native wxTextCtrl frame
+    */
+    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)
+    */
+    virtual void DrawRadioButton(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0) = 0;
 
     /**
         Return the currently used renderer.
     */
-    static wxRendererNative Get();
+    static wxRendererNative& Get();
 
     /**
         Return the default (native) implementation for this platform -- this is also
@@ -422,27 +437,32 @@ public:
         Set() in which case the return value of this
         method may be different from the return value of Get().
     */
-    static wxRendererNative GetDefault();
+    static wxRendererNative& GetDefault();
 
     /**
         Return the generic implementation of the renderer. Under some platforms, this
         is the default renderer implementation, others have platform-specific default
         renderer which can be retrieved by calling GetDefault().
     */
-    static wxRendererNative GetGeneric();
+    static wxRendererNative& GetGeneric();
+
+    /**
+        Returns the size of a check box.
+        The @a win parameter is not used currently and can be @NULL.
+    */
+    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);
+    virtual int GetHeaderButtonHeight(wxWindow* win) = 0;
 
     /**
-        Get the splitter parameters, see
-        wxSplitterRenderParams.
+        Get the splitter parameters, see wxSplitterRenderParams.
+        The @a win parameter should be a wxSplitterWindow.
     */
-    virtual wxSplitterRenderParams GetSplitterParams(const wxWindow* win);
+    virtual wxSplitterRenderParams GetSplitterParams(const wxWindow* win) = 0;
 
     /**
         This function is used for version checking: Load()
@@ -455,7 +475,7 @@ public:
         but it has to be in the derived, not base, class, to detect mismatches between
         the renderers versions and so you have to implement it anew in all renderers.
     */
-    virtual wxRendererVersion GetVersion() const;
+    virtual wxRendererVersion GetVersion() const = 0;
 
     /**
         Load the renderer from the specified DLL, the returned pointer must be
@@ -481,7 +501,6 @@ public:
 
 /**
     @struct wxRendererVersion
-    @wxheader{renderer.h}
 
     This simple struct represents the wxRendererNative
     interface version and is only used as the return value of