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"
22 WXDLLEXPORT_DATA(extern const wxChar
*) wxPanelNameStr
;
24 class WXDLLEXPORT wxScrolledWindow
: public wxPanel
26 DECLARE_ABSTRACT_CLASS(wxScrolledWindow
)
30 inline wxScrolledWindow(wxWindow
*parent
, wxWindowID id
= -1,
31 const wxPoint
& pos
= wxDefaultPosition
,
32 const wxSize
& size
= wxDefaultSize
,
33 long style
= wxHSCROLL
|wxVSCROLL
,
34 const wxString
& name
= wxPanelNameStr
)
36 Create(parent
, id
, pos
, size
, style
, name
);
39 ~wxScrolledWindow() {}
41 bool Create(wxWindow
*parent
, wxWindowID id
,
42 const wxPoint
& pos
= wxDefaultPosition
,
43 const wxSize
& size
= wxDefaultSize
,
44 long style
= wxHSCROLL
|wxVSCROLL
,
45 const wxString
& name
= wxPanelNameStr
);
48 // Should take account of scrollbars
49 // virtual void SetClientSize(int width, int size);
51 // Is the window retained?
52 // inline bool IsRetained(void) const;
54 // Number of pixels per user unit (0 or -1 for no scrollbar)
55 // Length of virtual canvas in user units
56 // Length of page in user units
57 virtual void SetScrollbars(int pixelsPerUnitX
, int pixelsPerUnitY
,
58 int noUnitsX
, int noUnitsY
,
59 int xPos
= 0, int yPos
= 0,
60 bool noRefresh
= FALSE
);
62 // Physically scroll the window
63 virtual void Scroll(int x_pos
, int y_pos
);
65 #if WXWIN_COMPATIBILITY
66 virtual void GetScrollUnitsPerPage(int *x_page
, int *y_page
) const;
69 int GetScrollPageSize(int orient
) const ;
70 void SetScrollPageSize(int orient
, int pageSize
);
72 virtual void GetScrollPixelsPerUnit(int *x_unit
, int *y_unit
) const;
73 // Enable/disable Windows scrolling in either direction.
74 // If TRUE, wxWindows scrolls the canvas and only a bit of
75 // the canvas is invalidated; no Clear() is necessary.
76 // If FALSE, the whole canvas is invalidated and a Clear() is
77 // necessary. Disable for when the scroll increment is used
78 // to actually scroll a non-constant distance
79 virtual void EnableScrolling(bool x_scrolling
, bool y_scrolling
);
82 virtual void ViewStart(int *x
, int *y
) const;
84 // Actual size in pixels when scrolling is taken into account
85 virtual void GetVirtualSize(int *x
, int *y
) const;
87 // Set the scale factor, used in PrepareDC
88 inline void SetScale(double xs
, double ys
) { m_scaleX
= xs
; m_scaleY
= ys
; }
89 inline double GetScaleX() const { return m_scaleX
; }
90 inline double GetScaleY() const { return m_scaleY
; }
92 virtual void CalcScrolledPosition(int x
, int y
, int *xx
, int *yy
) const ;
93 virtual void CalcUnscrolledPosition(int x
, int y
, float *xx
, float *yy
) const ;
95 // Adjust the scrollbars
96 virtual void AdjustScrollbars(void);
98 void OnScroll(wxScrollWinEvent
& event
);
99 void OnSize(wxSizeEvent
& event
);
100 void OnPaint(wxPaintEvent
& event
);
102 // Override this function to draw the graphic.
103 virtual void OnDraw(wxDC
& WXUNUSED(dc
)) {};
105 // Override this function if you don't want to have wxScrolledWindow
106 // automatically change the origin according to the scroll position.
107 virtual void PrepareDC(wxDC
& dc
);
112 // Calculate scroll increment
113 virtual int CalcScrollInc(wxScrollWinEvent
& event
);
116 int m_xScrollPixelsPerLine
;
117 int m_yScrollPixelsPerLine
;
118 bool m_xScrollingEnabled
;
119 bool m_yScrollingEnabled
;
120 int m_xScrollPosition
;
121 int m_yScrollPosition
;
124 int m_xScrollLinesPerPage
;
125 int m_yScrollLinesPerPage
;
129 DECLARE_EVENT_TABLE()