#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 {
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;