1 #ifndef YSCROLLVIEW_H
2 #define YSCROLLVIEW_H
3 
4 #include "ywindow.h"
5 #include "ypointer.h"
6 
7 class YScrollBar;
8 class YScrollBarListener;
9 
10 class YScrollable {
11 public:
12     virtual unsigned contentWidth() = 0;
13     virtual unsigned contentHeight() = 0;
14 protected:
~YScrollable()15     virtual ~YScrollable() {}
16 };
17 
18 class YScrollView: public YWindow {
19 public:
20     YScrollView(YWindow* aParent, YScrollable* scroll = nullptr);
21 
22     void setView(YScrollable* l);
23     void setListener(YScrollBarListener* l);
24 
getVerticalScrollBar()25     YScrollBar* getVerticalScrollBar() { return scrollVert; }
getHorizontalScrollBar()26     YScrollBar* getHorizontalScrollBar() { return scrollHoriz; }
getScrollable()27     YScrollable* getScrollable() { return scrollable; }
28 
29     void layout();
30     void configure(const YRect2& r) override ;
paint(Graphics & g,const YRect & r)31     void paint(Graphics& g, const YRect& r) override { }
repaint()32     void repaint() override { }
33     void handleExpose(const XExposeEvent& expose) override;
34     bool handleScrollKeys(const XKeyEvent& key);
35 
36 protected:
37     void getGap(int& dx, int& dy);
38 
39 private:
40     YScrollable* scrollable;
41     osmart<YScrollBar> scrollVert;
42     osmart<YScrollBar> scrollHoriz;
43 };
44 
45 #endif
46 
47 // vim: set sw=4 ts=4 et:
48