]> git.saurik.com Git - wxWidgets.git/blame - include/wx/generic/scrolwin.h
*** empty log message ***
[wxWidgets.git] / include / wx / generic / scrolwin.h
CommitLineData
c801d85f
KB
1/////////////////////////////////////////////////////////////////////////////
2// Name: scrolwin.h
3// Purpose: wxScrolledWindow class
4// Author: Julian Smart
5// Modified by:
6// Created: 01/02/97
7// RCS-ID: $Id$
8// Copyright: (c) Julian Smart and Markus Holzem
9// Licence: wxWindows license
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef __SCROLWINH_G__
13#define __SCROLWINH_G__
14
15#ifdef __GNUG__
16#pragma interface "scrolwin.h"
17#endif
18
19#include "wx/window.h"
053f9cc1 20#include "wx/panel.h"
c801d85f 21
908d4516 22WXDLLEXPORT_DATA(extern const wxChar*) wxPanelNameStr;
c801d85f 23
a0bc2c1d 24class WXDLLEXPORT wxScrolledWindow : public wxPanel
c801d85f
KB
25{
26 DECLARE_ABSTRACT_CLASS(wxScrolledWindow)
27
28public:
c5b42c87 29 wxScrolledWindow();
debe6624 30 inline wxScrolledWindow(wxWindow *parent, wxWindowID id = -1,
c801d85f
KB
31 const wxPoint& pos = wxDefaultPosition,
32 const wxSize& size = wxDefaultSize,
debe6624 33 long style = wxHSCROLL|wxVSCROLL,
c801d85f
KB
34 const wxString& name = wxPanelNameStr)
35 {
36 Create(parent, id, pos, size, style, name);
37 }
38
a0bc2c1d 39 ~wxScrolledWindow() { }
c801d85f 40
debe6624 41 bool Create(wxWindow *parent, wxWindowID id,
c801d85f
KB
42 const wxPoint& pos = wxDefaultPosition,
43 const wxSize& size = wxDefaultSize,
debe6624 44 long style = wxHSCROLL|wxVSCROLL,
c801d85f
KB
45 const wxString& name = wxPanelNameStr);
46
47 // Set client size
48 // Should take account of scrollbars
debe6624 49// virtual void SetClientSize(int width, int size);
c801d85f
KB
50
51 // Is the window retained?
52// inline bool IsRetained(void) const;
53
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
debe6624
JS
57 virtual void SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY,
58 int noUnitsX, int noUnitsY,
59 int xPos = 0, int yPos = 0,
60 bool noRefresh = FALSE );
c801d85f
KB
61
62 // Physically scroll the window
debe6624 63 virtual void Scroll(int x_pos, int y_pos);
c801d85f
KB
64
65#if WXWIN_COMPATIBILITY
66 virtual void GetScrollUnitsPerPage(int *x_page, int *y_page) const;
a0bc2c1d 67 virtual void CalcUnscrolledPosition(int x, int y, float *xx, float *yy) const ;
c801d85f
KB
68#endif
69
70 int GetScrollPageSize(int orient) const ;
71 void SetScrollPageSize(int orient, int pageSize);
72
73 virtual void GetScrollPixelsPerUnit(int *x_unit, int *y_unit) const;
74 // Enable/disable Windows scrolling in either direction.
75 // If TRUE, wxWindows scrolls the canvas and only a bit of
76 // the canvas is invalidated; no Clear() is necessary.
77 // If FALSE, the whole canvas is invalidated and a Clear() is
78 // necessary. Disable for when the scroll increment is used
79 // to actually scroll a non-constant distance
debe6624 80 virtual void EnableScrolling(bool x_scrolling, bool y_scrolling);
c801d85f
KB
81
82 // Get the view start
83 virtual void ViewStart(int *x, int *y) const;
84
85 // Actual size in pixels when scrolling is taken into account
86 virtual void GetVirtualSize(int *x, int *y) const;
87
0d8d91a9 88 // Set the scale factor, used in PrepareDC
a0bc2c1d
VZ
89 void SetScale(double xs, double ys) { m_scaleX = xs; m_scaleY = ys; }
90 double GetScaleX() const { return m_scaleX; }
91 double GetScaleY() const { return m_scaleY; }
0d8d91a9 92
debe6624 93 virtual void CalcScrolledPosition(int x, int y, int *xx, int *yy) const ;
a0bc2c1d 94 virtual void CalcUnscrolledPosition(int x, int y, int *xx, int *yy) const ;
c801d85f
KB
95
96 // Adjust the scrollbars
97 virtual void AdjustScrollbars(void);
98
a0bc2c1d 99 // Override this function to draw the graphic (or just process EVT_PAINT)
c801d85f
KB
100 virtual void OnDraw(wxDC& WXUNUSED(dc)) {};
101
102 // Override this function if you don't want to have wxScrolledWindow
103 // automatically change the origin according to the scroll position.
104 virtual void PrepareDC(wxDC& dc);
105
a0bc2c1d
VZ
106 // implementation from now on
107 void OnScroll(wxScrollWinEvent& event);
108 void OnSize(wxSizeEvent& event);
109 void OnPaint(wxPaintEvent& event);
110
c801d85f 111 // Calculate scroll increment
c5b42c87 112 virtual int CalcScrollInc(wxScrollWinEvent& event);
c801d85f 113
c801d85f
KB
114protected:
115 int m_xScrollPixelsPerLine;
116 int m_yScrollPixelsPerLine;
117 bool m_xScrollingEnabled;
118 bool m_yScrollingEnabled;
119 int m_xScrollPosition;
120 int m_yScrollPosition;
121 int m_xScrollLines;
122 int m_yScrollLines;
123 int m_xScrollLinesPerPage;
124 int m_yScrollLinesPerPage;
0d8d91a9
JS
125 double m_scaleX;
126 double m_scaleY;
c801d85f
KB
127
128DECLARE_EVENT_TABLE()
129};
130
c801d85f
KB
131#endif
132 // __SCROLWINH_G__