moved wxScrollBar geometry methods out of wxRenderer, they are common for all themes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42716 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2006-10-30 12:33:25 +00:00
parent 6236b8b477
commit 561955046e
8 changed files with 299 additions and 376 deletions

View File

@@ -56,7 +56,6 @@ class WXDLLEXPORT wxScrollBar;
#include "wx/string.h"
#include "wx/gdicmn.h"
#include "wx/icon.h"
#include "wx/scrolbar.h" // for wxScrollBar::Element
// helper class used by wxMenu-related functions
class WXDLLEXPORT wxMenuGeometryInfo
@@ -382,30 +381,8 @@ public:
virtual void AdjustSize(wxSize *size, const wxWindow *window) = 0;
#if wxUSE_SCROLLBAR
// get the size of a scrollbar arrow
virtual wxSize GetScrollbarArrowSize() const = 0;
// gets the bounding box for a scrollbar element for the given (by default
// - current) thumb position
virtual wxRect GetScrollbarRect(const wxScrollBar *scrollbar,
wxScrollBar::Element elem,
int thumbPos = -1) const = 0;
// returns the size of the scrollbar shaft excluding the arrows
virtual wxCoord GetScrollbarSize(const wxScrollBar *scrollbar) = 0;
// returns one of wxHT_SCROLLBAR_XXX constants
virtual wxHitTest HitTestScrollbar(const wxScrollBar *scrollbar,
const wxPoint& pt) const = 0;
// translate the scrollbar position (in logical units) into physical
// coordinate (in pixels) and the other way round
virtual wxCoord ScrollbarToPixel(const wxScrollBar *scrollbar,
int thumbPos = -1) = 0;
virtual int PixelToScrollbar(const wxScrollBar *scrollbar,
wxCoord coord) = 0;
#endif // wxUSE_SCROLLBAR
// get the height of a listbox item from the base font height
@@ -787,21 +764,6 @@ public:
#if wxUSE_SCROLLBAR
virtual wxSize GetScrollbarArrowSize() const
{ return m_renderer->GetScrollbarArrowSize(); }
virtual wxRect GetScrollbarRect(const wxScrollBar *scrollbar,
wxScrollBar::Element elem,
int thumbPos = -1) const
{ return m_renderer->GetScrollbarRect(scrollbar, elem, thumbPos); }
virtual wxCoord GetScrollbarSize(const wxScrollBar *scrollbar)
{ return m_renderer->GetScrollbarSize(scrollbar); }
virtual wxHitTest HitTestScrollbar(const wxScrollBar *scrollbar,
const wxPoint& pt) const
{ return m_renderer->HitTestScrollbar(scrollbar, pt); }
virtual wxCoord ScrollbarToPixel(const wxScrollBar *scrollbar,
int thumbPos = -1)
{ return m_renderer->ScrollbarToPixel(scrollbar, thumbPos); }
virtual int PixelToScrollbar(const wxScrollBar *scrollbar,
wxCoord coord)
{ return m_renderer->PixelToScrollbar(scrollbar, coord); }
#endif // wxUSE_SCROLLBAR
virtual wxCoord GetListboxItemHeight(wxCoord fontHeight)

View File

@@ -121,6 +121,9 @@ public:
// 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 WXDLLEXPORT class wxControlRenderer; // for geometry methods
friend class wxStdScrollBarInputHandler; // for geometry methods
DECLARE_EVENT_TABLE()
DECLARE_DYNAMIC_CLASS(wxScrollBar)
};

View File

@@ -136,21 +136,6 @@ public:
virtual wxCoord GetListboxItemHeight(wxCoord fontHeight);
#if wxUSE_SCROLLBAR
virtual wxRect GetScrollbarRect(const wxScrollBar *scrollbar,
wxScrollBar::Element elem,
int thumbPos = -1) const;
virtual wxCoord GetScrollbarSize(const wxScrollBar *scrollbar);
virtual wxHitTest HitTestScrollbar(const wxScrollBar *scrollbar,
const wxPoint& pt) const;
virtual wxCoord ScrollbarToPixel(const wxScrollBar *scrollbar,
int thumbPos = -1);
virtual int PixelToScrollbar(const wxScrollBar *scrollbar, wxCoord coord);
#endif // wxUSE_SCROLLBAR
#if wxUSE_STATUSBAR
virtual void DrawStatusField(wxDC& dc,
const wxRect& rect,
@@ -349,16 +334,6 @@ protected:
virtual int GetTextBorderWidth(const wxTextCtrl *text) const;
#endif // wxUSE_TEXTCTRL
// 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);
// GDI objects we often use
wxPen m_penBlack,
m_penDarkGrey,