]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/univ/scrolbar.h
detect and report errors in XRC specification of grid sizers
[wxWidgets.git] / include / wx / univ / scrolbar.h
index 8580977eb13cd63bc6bfabafd11e997aaa1f7259..dd59432a36dc95b73128f53aad9439ae0a48e25e 100644 (file)
@@ -12,7 +12,7 @@
 #ifndef _WX_UNIV_SCROLBAR_H_
 #define _WX_UNIV_SCROLBAR_H_
 
-class WXDLLEXPORT wxScrollTimer;
+class WXDLLIMPEXP_FWD_CORE wxScrollTimer;
 
 #include "wx/univ/scrarrow.h"
 #include "wx/renderer.h"
@@ -38,7 +38,7 @@ class WXDLLEXPORT wxScrollTimer;
 // wxScrollBar
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxScrollBar : public wxScrollBarBase,
+class WXDLLIMPEXP_CORE wxScrollBar : public wxScrollBarBase,
                                 public wxControlWithArrows
 {
 public:
@@ -116,11 +116,14 @@ public:
     virtual int GetArrowState(wxScrollArrows::Arrow arrow) const;
     virtual void SetArrowFlag(wxScrollArrows::Arrow arrow, int flag, bool set);
     virtual bool OnArrow(wxScrollArrows::Arrow arrow);
-    virtual wxScrollArrows::Arrow HitTest(const wxPoint& pt) const;
+    virtual wxScrollArrows::Arrow HitTestArrow(const wxPoint& pt) const;
 
     // for wxControlRenderer::DrawScrollbar() only
     const wxScrollArrows& GetArrows() const { return m_arrows; }
 
+    // returns one of wxHT_SCROLLBAR_XXX constants
+    wxHitTest HitTestBar(const wxPoint& pt) const;
+
     // idle processing
     virtual void OnInternalIdle();
 
@@ -141,6 +144,30 @@ protected:
     // is this scrollbar attached to a window or a standalone control?
     bool IsStandalone() const;
 
+    // scrollbar geometry methods:
+
+    // gets the bounding box for a scrollbar element for the given (by default
+    // - current) thumb position
+    wxRect GetScrollbarRect(wxScrollBar::Element elem, int thumbPos = -1) const;
+
+    // returns the size of the scrollbar shaft excluding the arrows
+    wxCoord GetScrollbarSize() const;
+
+    // translate the scrollbar position (in logical units) into physical
+    // coordinate (in pixels) and the other way round
+    wxCoord ScrollbarToPixel(int thumbPos = -1);
+    int PixelToScrollbar(wxCoord coord);
+
+    // return the starting and ending positions, in pixels, of the thumb of a
+    // scrollbar with the given logical position, thumb size and range and the
+    // given physical length
+    static void GetScrollBarThumbSize(wxCoord length,
+                                      int thumbPos,
+                                      int thumbSize,
+                                      int range,
+                                      wxCoord *thumbStart,
+                                      wxCoord *thumbEnd);
+
 private:
     // total range of the scrollbar in logical units
     int m_range;
@@ -165,6 +192,9 @@ private:
     // the object handling the arrows
     wxScrollArrows m_arrows;
 
+    friend WXDLLIMPEXP_CORE class wxControlRenderer; // for geometry methods
+    friend class wxStdScrollBarInputHandler; // for geometry methods
+
     DECLARE_EVENT_TABLE()
     DECLARE_DYNAMIC_CLASS(wxScrollBar)
 };
@@ -173,7 +203,7 @@ private:
 // Standard scrollbar input handler which can be used as a base class
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxStdScrollBarInputHandler : public wxStdInputHandler
+class WXDLLIMPEXP_CORE wxStdScrollBarInputHandler : public wxStdInputHandler
 {
 public:
     // constructor takes a renderer (used for scrollbar hit testing) and the