1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/gtk/scrolwin.h
3// Purpose:     wxScrolledWindow class
4// Author:      Robert Roebling
5// Modified by: Vadim Zeitlin (2005-10-10): wxScrolledWindow is now common
6// Created:     01/02/97
7// RCS-ID:      $Id: scrolwin.h 43795 2006-12-04 11:05:59Z VZ $
8// Copyright:   (c) Robert Roebling
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_GTK_SCROLLWIN_H_
13#define _WX_GTK_SCROLLWIN_H_
14
15// ----------------------------------------------------------------------------
16// wxScrolledWindow
17// ----------------------------------------------------------------------------
18
19class WXDLLEXPORT wxScrollHelperNative : public wxScrollHelper
20{
21public:
22    // default ctor doesn't do anything
23    wxScrollHelperNative(wxWindow *win) : wxScrollHelper(win) { }
24
25    virtual void SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY,
26                               int noUnitsX, int noUnitsY,
27                               int xPos = 0, int yPos = 0,
28                               bool noRefresh = false);
29    virtual void AdjustScrollbars();
30    virtual void Scroll(int x, int y);
31
32protected:
33    // this does (each) half of AdjustScrollbars() work
34    void DoAdjustScrollbar(GtkRange* range,
35                           int pixelsPerLine,
36                           int winSize,
37                           int virtSize,
38                           int *pos,
39                           int *lines,
40                           int *linesPerPage);
41
42    void DoAdjustHScrollbar(int winSize, int virtSize)
43    {
44        DoAdjustScrollbar
45        (
46            m_win->m_scrollBar[wxWindow::ScrollDir_Horz],
47            m_xScrollPixelsPerLine, winSize, virtSize,
48            &m_xScrollPosition, &m_xScrollLines, &m_xScrollLinesPerPage
49        );
50    }
51
52    void DoAdjustVScrollbar(int winSize, int virtSize)
53    {
54        DoAdjustScrollbar
55        (
56            m_win->m_scrollBar[wxWindow::ScrollDir_Vert],
57            m_yScrollPixelsPerLine, winSize, virtSize,
58            &m_yScrollPosition, &m_yScrollLines, &m_yScrollLinesPerPage
59        );
60    }
61
62    // and this does the same for Scroll()
63    void DoScroll(int orient,
64                  int pos,
65                  int pixelsPerLine,
66                  int *posOld);
67
68private:
69    DECLARE_NO_COPY_CLASS(wxScrollHelperNative)
70};
71
72#endif // _WX_GTK_SCROLLWIN_H_
73
74