]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/renderer.h
Add XRC handler for wxCommandLinkButton.
[wxWidgets.git] / include / wx / renderer.h
index 1c54983345832262d1bccf26e08220cc6c6a8475..c1b744ce61de0f0133190782af4f3927943898c6 100644 (file)
@@ -41,6 +41,11 @@ class WXDLLIMPEXP_FWD_CORE wxWindow;
     #undef wxHAS_NATIVE_RENDERER
 #endif
 
     #undef wxHAS_NATIVE_RENDERER
 #endif
 
+// only MSW and OS X currently provides DrawTitleBarBitmap() method
+#if defined(__WXMSW__) || (defined(__WXMAC__) && wxUSE_LIBPNG && wxUSE_IMAGE)
+    #define wxHAS_DRAW_TITLE_BAR_BITMAP
+#endif
+
 // ----------------------------------------------------------------------------
 // constants
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // constants
 // ----------------------------------------------------------------------------
@@ -70,6 +75,19 @@ enum
     wxCONTROL_DIRTY      = 0x80000000
 };
 
     wxCONTROL_DIRTY      = 0x80000000
 };
 
+// title bar buttons supported by DrawTitleBarBitmap()
+//
+// NB: they have the same values as wxTOPLEVEL_BUTTON_XXX constants in
+//     wx/univ/toplevel.h as they really represent the same things
+enum wxTitleBarButton
+{
+    wxTITLEBAR_BUTTON_CLOSE    = 0x01000000,
+    wxTITLEBAR_BUTTON_MAXIMIZE = 0x02000000,
+    wxTITLEBAR_BUTTON_ICONIZE  = 0x04000000,
+    wxTITLEBAR_BUTTON_RESTORE  = 0x08000000,
+    wxTITLEBAR_BUTTON_HELP     = 0x10000000
+};
+
 // ----------------------------------------------------------------------------
 // helper structs
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // helper structs
 // ----------------------------------------------------------------------------
@@ -254,19 +272,52 @@ public:
     // draw the focus rectangle around the label contained in the given rect
     //
     // only wxCONTROL_SELECTED makes sense in flags here
     // draw the focus rectangle around the label contained in the given rect
     //
     // only wxCONTROL_SELECTED makes sense in flags here
-    virtual void DrawFocusRect(wxWindow* win, wxDC& dc, const wxRect& rect, int flags = 0) = 0;
+    virtual void DrawFocusRect(wxWindow* win,
+                               wxDC& dc,
+                               const wxRect& rect,
+                               int flags = 0) = 0;
 
     // Draw a native wxChoice
 
     // 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
 
     // 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
 
     // 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 bitmap
+    virtual void DrawRadioBitmap(wxWindow* win,
+                                 wxDC& dc,
+                                 const wxRect& rect,
+                                 int flags = 0) = 0;
+
+#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
+    // Draw one of the standard title bar buttons
+    //
+    // This is currently implemented only for MSW and OS X (for the close
+    // button only) because there is no way to render standard title bar
+    // buttons under the other platforms, the best can be done is to use normal
+    // (only) images which wxArtProvider provides for wxART_HELP and
+    // wxART_CLOSE (but not any other title bar buttons)
+    //
+    // NB: make sure PNG handler is enabled if using this function under OS X
+    virtual void DrawTitleBarBitmap(wxWindow *win,
+                                    wxDC& dc,
+                                    const wxRect& rect,
+                                    wxTitleBarButton button,
+                                    int flags = 0) = 0;
+#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
 
 
-    // Draw a native wxRadioButton (just the graphical portion)
-    virtual void DrawRadioButton(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0) = 0;
 
     // geometry functions
     // ------------------
 
     // geometry functions
     // ------------------
@@ -386,7 +437,7 @@ public:
     virtual void DrawCheckBox(wxWindow *win,
                               wxDC& dc,
                               const wxRect& rect,
     virtual void DrawCheckBox(wxWindow *win,
                               wxDC& dc,
                               const wxRect& rect,
-                              int flags = 0 )
+                              int flags = 0)
         { m_rendererNative.DrawCheckBox( win, dc, rect, flags ); }
 
     virtual wxSize GetCheckBoxSize(wxWindow *win)
         { m_rendererNative.DrawCheckBox( win, dc, rect, flags ); }
 
     virtual wxSize GetCheckBoxSize(wxWindow *win)
@@ -395,29 +446,53 @@ public:
     virtual void DrawPushButton(wxWindow *win,
                                 wxDC& dc,
                                 const wxRect& rect,
     virtual void DrawPushButton(wxWindow *win,
                                 wxDC& dc,
                                 const wxRect& rect,
-                                int flags = 0 )
+                                int flags = 0)
         { m_rendererNative.DrawPushButton( win, dc, rect, flags ); }
 
     virtual void DrawItemSelectionRect(wxWindow *win,
                                        wxDC& dc,
                                        const wxRect& rect,
         { m_rendererNative.DrawPushButton( win, dc, rect, flags ); }
 
     virtual void DrawItemSelectionRect(wxWindow *win,
                                        wxDC& dc,
                                        const wxRect& rect,
-                                       int flags = 0 )
+                                       int flags = 0)
         { m_rendererNative.DrawItemSelectionRect( win, dc, rect, flags ); }
 
         { m_rendererNative.DrawItemSelectionRect( win, dc, rect, flags ); }
 
-    virtual void DrawFocusRect(wxWindow* win, wxDC& dc, const wxRect& rect, int flags = 0)
+    virtual void DrawFocusRect(wxWindow* win,
+                               wxDC& dc,
+                               const wxRect& rect,
+                               int flags = 0)
         { m_rendererNative.DrawFocusRect( win, dc, rect, flags ); }
 
         { m_rendererNative.DrawFocusRect( win, dc, rect, flags ); }
 
-    virtual void DrawChoice(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0)
+    virtual void DrawChoice(wxWindow* win,
+                            wxDC& dc,
+                            const wxRect& rect,
+                            int flags = 0)
         { m_rendererNative.DrawChoice( win, dc, rect, flags); }
 
         { m_rendererNative.DrawChoice( win, dc, rect, flags); }
 
-    virtual void DrawComboBox(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0)
+    virtual void DrawComboBox(wxWindow* win,
+                              wxDC& dc,
+                              const wxRect& rect,
+                              int flags = 0)
         { m_rendererNative.DrawComboBox( win, dc, rect, flags); }
 
         { m_rendererNative.DrawComboBox( win, dc, rect, flags); }
 
-    virtual void DrawTextCtrl(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0)
+    virtual void DrawTextCtrl(wxWindow* win,
+                              wxDC& dc,
+                              const wxRect& rect,
+                              int flags = 0)
         { m_rendererNative.DrawTextCtrl( win, dc, rect, flags); }
 
         { m_rendererNative.DrawTextCtrl( win, dc, rect, flags); }
 
-    virtual void DrawRadioButton(wxWindow* win, wxDC& dc, const wxRect& rect, int flags=0)
-        { m_rendererNative.DrawRadioButton( win, dc, rect, flags); }
+    virtual void DrawRadioBitmap(wxWindow* win,
+                                 wxDC& dc,
+                                 const wxRect& rect,
+                                 int flags = 0)
+        { m_rendererNative.DrawRadioBitmap(win, dc, rect, flags); }
+
+#ifdef wxHAS_DRAW_TITLE_BAR_BITMAP
+    virtual void DrawTitleBarBitmap(wxWindow *win,
+                                    wxDC& dc,
+                                    const wxRect& rect,
+                                    wxTitleBarButton button,
+                                    int flags = 0)
+        { m_rendererNative.DrawTitleBarBitmap(win, dc, rect, button, flags); }
+#endif // wxHAS_DRAW_TITLE_BAR_BITMAP
 
     virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win)
         { return m_rendererNative.GetSplitterParams(win); }
 
     virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win)
         { return m_rendererNative.GetSplitterParams(win); }
@@ -428,7 +503,7 @@ public:
 protected:
     wxRendererNative& m_rendererNative;
 
 protected:
     wxRendererNative& m_rendererNative;
 
-    DECLARE_NO_COPY_CLASS(wxDelegateRendererNative)
+    wxDECLARE_NO_COPY_CLASS(wxDelegateRendererNative);
 };
 
 // ----------------------------------------------------------------------------
 };
 
 // ----------------------------------------------------------------------------