1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxScrolledWindow class
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart and Markus Holzem
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef __SCROLWINH_G__
13 #define __SCROLWINH_G__
16 #pragma interface "scrolwin.h"
19 #include "wx/window.h"
21 WXDLLEXPORT_DATA(extern const wxChar
*) wxPanelNameStr
;
23 class WXDLLEXPORT wxScrolledWindow
: public wxWindow
25 DECLARE_ABSTRACT_CLASS(wxScrolledWindow
)
29 inline wxScrolledWindow(wxWindow
*parent
, wxWindowID id
= -1,
30 const wxPoint
& pos
= wxDefaultPosition
,
31 const wxSize
& size
= wxDefaultSize
,
32 long style
= wxHSCROLL
|wxVSCROLL
,
33 const wxString
& name
= wxPanelNameStr
)
35 Create(parent
, id
, pos
, size
, style
, name
);
38 ~wxScrolledWindow() {}
40 bool Create(wxWindow
*parent
, wxWindowID id
,
41 const wxPoint
& pos
= wxDefaultPosition
,
42 const wxSize
& size
= wxDefaultSize
,
43 long style
= wxHSCROLL
|wxVSCROLL
,
44 const wxString
& name
= wxPanelNameStr
);
47 // Should take account of scrollbars
48 // virtual void SetClientSize(int width, int size);
50 // Is the window retained?
51 // inline bool IsRetained(void) const;
53 // Number of pixels per user unit (0 or -1 for no scrollbar)
54 // Length of virtual canvas in user units
55 // Length of page in user units
56 virtual void SetScrollbars(int pixelsPerUnitX
, int pixelsPerUnitY
,
57 int noUnitsX
, int noUnitsY
,
58 int xPos
= 0, int yPos
= 0,
59 bool noRefresh
= FALSE
);
61 // Physically scroll the window
62 virtual void Scroll(int x_pos
, int y_pos
);
64 #if WXWIN_COMPATIBILITY
65 virtual void GetScrollUnitsPerPage(int *x_page
, int *y_page
) const;
68 int GetScrollPageSize(int orient
) const ;
69 void SetScrollPageSize(int orient
, int pageSize
);
71 virtual void GetScrollPixelsPerUnit(int *x_unit
, int *y_unit
) const;
72 // Enable/disable Windows scrolling in either direction.
73 // If TRUE, wxWindows scrolls the canvas and only a bit of
74 // the canvas is invalidated; no Clear() is necessary.
75 // If FALSE, the whole canvas is invalidated and a Clear() is
76 // necessary. Disable for when the scroll increment is used
77 // to actually scroll a non-constant distance
78 virtual void EnableScrolling(bool x_scrolling
, bool y_scrolling
);
81 virtual void ViewStart(int *x
, int *y
) const;
83 // Actual size in pixels when scrolling is taken into account
84 virtual void GetVirtualSize(int *x
, int *y
) const;
86 // Set the scale factor, used in PrepareDC
87 inline void SetScale(double xs
, double ys
) { m_scaleX
= xs
; m_scaleY
= ys
; }
88 inline double GetScaleX() const { return m_scaleX
; }
89 inline double GetScaleY() const { return m_scaleY
; }
91 virtual void CalcScrolledPosition(int x
, int y
, int *xx
, int *yy
) const ;
92 virtual void CalcUnscrolledPosition(int x
, int y
, float *xx
, float *yy
) const ;
94 // Adjust the scrollbars
95 virtual void AdjustScrollbars(void);
97 void OnScroll(wxScrollWinEvent
& event
);
98 void OnSize(wxSizeEvent
& event
);
99 void OnPaint(wxPaintEvent
& event
);
101 // Override this function to draw the graphic.
102 virtual void OnDraw(wxDC
& WXUNUSED(dc
)) {};
104 // Override this function if you don't want to have wxScrolledWindow
105 // automatically change the origin according to the scroll position.
106 virtual void PrepareDC(wxDC
& dc
);
111 // Calculate scroll increment
112 virtual int CalcScrollInc(wxScrollWinEvent
& event
);
115 int m_xScrollPixelsPerLine
;
116 int m_yScrollPixelsPerLine
;
117 bool m_xScrollingEnabled
;
118 bool m_yScrollingEnabled
;
119 int m_xScrollPosition
;
120 int m_yScrollPosition
;
123 int m_xScrollLinesPerPage
;
124 int m_yScrollLinesPerPage
;
128 DECLARE_EVENT_TABLE()