summaryrefslogtreecommitdiff
path: root/libs/canvas/canvas
diff options
context:
space:
mode:
Diffstat (limited to 'libs/canvas/canvas')
-rw-r--r--libs/canvas/canvas/item.h17
-rw-r--r--libs/canvas/canvas/scroll_group.h47
-rw-r--r--libs/canvas/canvas/wave_view.h2
3 files changed, 53 insertions, 13 deletions
diff --git a/libs/canvas/canvas/item.h b/libs/canvas/canvas/item.h
index 429df33894..487efae4d0 100644
--- a/libs/canvas/canvas/item.h
+++ b/libs/canvas/canvas/item.h
@@ -112,22 +112,17 @@ public:
void set_y_position (Coord);
void move (Duple);
- enum ScrollSensitivity {
- ScrollsVertically = 0x1,
- ScrollsHorizontally = 0x2
- };
-
- void set_scroll_sensitivity (ScrollSensitivity s);
- ScrollSensitivity scroll_sensitivity () const { return _scroll_sensitivity; }
-
- virtual void scroll_to (Duple const& d);
- Duple scroll_offset() const { return _scroll_offset; }
+ virtual void scroll_to (Duple const&) {}
/** @return Position of this item in the parent's coordinates */
Duple position () const {
return _position;
}
+ virtual Duple canvas_position () const {
+ return _position;
+ }
+
boost::optional<Rect> bounding_box () const;
Coord height() const;
Coord width() const;
@@ -248,8 +243,6 @@ private:
void init ();
bool _ignore_events;
- ScrollSensitivity _scroll_sensitivity;
- Duple _scroll_offset;
};
extern LIBCANVAS_API std::ostream& operator<< (std::ostream&, const ArdourCanvas::Item&);
diff --git a/libs/canvas/canvas/scroll_group.h b/libs/canvas/canvas/scroll_group.h
new file mode 100644
index 0000000000..c2b26bf9d9
--- /dev/null
+++ b/libs/canvas/canvas/scroll_group.h
@@ -0,0 +1,47 @@
+/*
+ Copyright (C) 2014 Paul Davis
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#ifndef __CANVAS_SCROLL_GROUP_H__
+#define __CANVAS_SCROLL_GROUP_H__
+
+#include "canvas/group.h"
+
+namespace ArdourCanvas {
+
+class LIBCANVAS_API ScrollGroup : public Group
+{
+ public:
+ enum ScrollSensitivity {
+ ScrollsVertically = 0x1,
+ ScrollsHorizontally = 0x2
+ };
+
+ explicit ScrollGroup (Group *, ScrollSensitivity);
+ explicit ScrollGroup (Group *, Duple, ScrollSensitivity);
+
+ void scroll_to (Duple const& d);
+ Duple canvas_position() const;
+
+ private:
+ ScrollSensitivity _scroll_sensitivity;
+ Duple _scroll_offset;
+};
+
+}
+
+#endif
diff --git a/libs/canvas/canvas/wave_view.h b/libs/canvas/canvas/wave_view.h
index 307528c685..0ddffca180 100644
--- a/libs/canvas/canvas/wave_view.h
+++ b/libs/canvas/canvas/wave_view.h
@@ -173,7 +173,7 @@ private:
void handle_clip_level_change ();
void ensure_cache (ARDOUR::framepos_t sample_start, ARDOUR::framepos_t sample_end) const;
- ArdourCanvas::Coord position (double) const;
+ ArdourCanvas::Coord y_extent (double) const;
void draw_image (ARDOUR::PeakData*, int npeaks) const;
};