package portaudio w/WASAPI for Vista or later
[ardour.git] / libs / canvas / canvas / scroll_group.h
index 36d98538a16ae736d520eaa3051fc12357f12ca0..fd9b2388d4e2da44135626d3b5c59964d8e32781 100644 (file)
 #ifndef __CANVAS_SCROLL_GROUP_H__
 #define __CANVAS_SCROLL_GROUP_H__
 
-#include "canvas/group.h"
+#include "canvas/container.h"
 
 namespace ArdourCanvas {
 
-class LIBCANVAS_API ScrollGroup : public Group
+/** A ScrollGroup has no contents of its own, but renders
+ *  its children in a way that reflects the most recent
+ *  call to its scroll_to() method.
+ */
+class LIBCANVAS_API ScrollGroup : public Container
 {
   public:
        enum ScrollSensitivity {
@@ -31,20 +35,19 @@ class LIBCANVAS_API ScrollGroup : public Group
                ScrollsHorizontally = 0x2
        };
        
-       explicit ScrollGroup (Group *, ScrollSensitivity);
-       explicit ScrollGroup (Group *, Duple, ScrollSensitivity);
+       ScrollGroup (Canvas*, ScrollSensitivity);
+       ScrollGroup (Item*, ScrollSensitivity);
 
        void scroll_to (Duple const& d);
+       Duple scroll_offset() const { return _scroll_offset; }
 
-       /** return the normal "base" position of this item
-           rather its position as affected by any scroll
-           offset.
-       */
-       Duple canvas_position() const {
-               return _position.translate (_scroll_offset);
-       }
+       bool covers_canvas (Duple const& d) const;
+       bool covers_window (Duple const& d) const;
+
+       void render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) const;
+
+       ScrollSensitivity sensitivity() const { return _scroll_sensitivity; }
 
-       Duple scroll_offset() const { return _scroll_offset; }
   private:
        ScrollSensitivity _scroll_sensitivity;
        Duple             _scroll_offset;