From 6a5d805b383cd71bb1d0984964439c5ec08e9270 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sun, 22 Jun 2014 11:41:05 -0400 Subject: more canvas refactoring. Remove Canvas::Layout, use Canvas::Container for the same purpose, move child-rendering into Item::render_children() so that it could theoretically be used by any derived type. --- gtk2_ardour/audio_region_view.cc | 4 +- gtk2_ardour/audio_region_view.h | 4 +- gtk2_ardour/automation_line.cc | 2 +- gtk2_ardour/automation_line.h | 6 +- gtk2_ardour/automation_region_view.cc | 2 +- gtk2_ardour/automation_region_view.h | 2 +- gtk2_ardour/crossfade_view.h | 2 +- gtk2_ardour/editor.h | 40 +++++------ gtk2_ardour/editor_canvas.cc | 24 +++---- gtk2_ardour/editor_markers.cc | 12 ++-- gtk2_ardour/editor_rulers.cc | 2 +- gtk2_ardour/ghostregion.cc | 8 +-- gtk2_ardour/ghostregion.h | 6 +- gtk2_ardour/marker.cc | 12 ++-- gtk2_ardour/marker.h | 14 ++-- gtk2_ardour/midi_region_view.cc | 16 ++--- gtk2_ardour/midi_region_view.h | 8 +-- gtk2_ardour/midi_streamview.cc | 2 +- gtk2_ardour/midi_streamview.h | 2 +- gtk2_ardour/mixer_ui.cc | 2 +- gtk2_ardour/note.h | 2 +- gtk2_ardour/panner2d.h | 2 +- gtk2_ardour/patch_change.cc | 2 +- gtk2_ardour/patch_change.h | 2 +- gtk2_ardour/public_editor.h | 2 +- gtk2_ardour/region_gain_line.cc | 2 +- gtk2_ardour/region_gain_line.h | 2 +- gtk2_ardour/region_view.cc | 4 +- gtk2_ardour/region_view.h | 4 +- gtk2_ardour/streamview.cc | 4 +- gtk2_ardour/streamview.h | 8 +-- gtk2_ardour/sys_ex.cc | 2 +- gtk2_ardour/sys_ex.h | 2 +- gtk2_ardour/tape_region_view.cc | 2 +- gtk2_ardour/tape_region_view.h | 2 +- gtk2_ardour/tempo_lines.cc | 2 +- gtk2_ardour/tempo_lines.h | 2 +- gtk2_ardour/time_axis_view.cc | 6 +- gtk2_ardour/time_axis_view.h | 12 ++-- gtk2_ardour/time_axis_view_item.cc | 4 +- gtk2_ardour/time_axis_view_item.h | 4 +- gtk2_ardour/video_image_frame.cc | 4 +- gtk2_ardour/video_image_frame.h | 6 +- gtk2_ardour/video_timeline.cc | 2 +- gtk2_ardour/video_timeline.h | 6 +- libs/canvas/arrow.cc | 4 +- libs/canvas/canvas/arrow.h | 4 +- libs/canvas/canvas/container.h | 8 ++- libs/canvas/canvas/flag.h | 4 +- libs/canvas/canvas/item.h | 1 + libs/canvas/canvas/layout.h | 43 ----------- libs/canvas/canvas/root_group.h | 4 +- libs/canvas/canvas/scroll_group.h | 4 +- libs/canvas/container.cc | 6 ++ libs/canvas/flag.cc | 4 +- libs/canvas/item.cc | 90 +++++++++++++++++++++++ libs/canvas/layout.cc | 132 ---------------------------------- libs/canvas/root_group.cc | 4 +- libs/canvas/scroll_group.cc | 6 +- libs/canvas/wscript | 1 - 60 files changed, 250 insertions(+), 325 deletions(-) delete mode 100644 libs/canvas/canvas/layout.h delete mode 100644 libs/canvas/layout.cc diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index 63f081608d..e15d83125a 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -75,7 +75,7 @@ using namespace ArdourCanvas; static const int32_t sync_mark_width = 9; static double const handle_size = 10; /* height of fade handles */ -AudioRegionView::AudioRegionView (ArdourCanvas::Layout *parent, RouteTimeAxisView &tv, boost::shared_ptr r, double spu, +AudioRegionView::AudioRegionView (ArdourCanvas::Container *parent, RouteTimeAxisView &tv, boost::shared_ptr r, double spu, uint32_t basic_color) : RegionView (parent, tv, r, spu, basic_color) , sync_mark(0) @@ -96,7 +96,7 @@ AudioRegionView::AudioRegionView (ArdourCanvas::Layout *parent, RouteTimeAxisVie Config->ParameterChanged.connect (*this, invalidator (*this), boost::bind (&AudioRegionView::parameter_changed, this, _1), gui_context()); } -AudioRegionView::AudioRegionView (ArdourCanvas::Layout *parent, RouteTimeAxisView &tv, boost::shared_ptr r, double spu, +AudioRegionView::AudioRegionView (ArdourCanvas::Container *parent, RouteTimeAxisView &tv, boost::shared_ptr r, double spu, uint32_t basic_color, bool recording, TimeAxisViewItem::Visibility visibility) : RegionView (parent, tv, r, spu, basic_color, recording, visibility) , sync_mark(0) diff --git a/gtk2_ardour/audio_region_view.h b/gtk2_ardour/audio_region_view.h index 11be83dc44..9c2c9f7c12 100644 --- a/gtk2_ardour/audio_region_view.h +++ b/gtk2_ardour/audio_region_view.h @@ -51,13 +51,13 @@ class RouteTimeAxisView; class AudioRegionView : public RegionView { public: - AudioRegionView (ArdourCanvas::Layout *, + AudioRegionView (ArdourCanvas::Container *, RouteTimeAxisView&, boost::shared_ptr, double initial_samples_per_pixel, uint32_t base_color); - AudioRegionView (ArdourCanvas::Layout *, + AudioRegionView (ArdourCanvas::Container *, RouteTimeAxisView&, boost::shared_ptr, double samples_per_pixel, diff --git a/gtk2_ardour/automation_line.cc b/gtk2_ardour/automation_line.cc index 4040f8d3bd..7840712581 100644 --- a/gtk2_ardour/automation_line.cc +++ b/gtk2_ardour/automation_line.cc @@ -99,7 +99,7 @@ AutomationLine::AutomationLine (const string& name, TimeAxisView& tv, ArdourCanv terminal_points_can_slide = true; _height = 0; - group = new ArdourCanvas::Layout (&parent); + group = new ArdourCanvas::Container (&parent); CANVAS_DEBUG_NAME (group, "region gain envelope group"); line = new ArdourCanvas::PolyLine (group); diff --git a/gtk2_ardour/automation_line.h b/gtk2_ardour/automation_line.h index 5695527002..663310dc46 100644 --- a/gtk2_ardour/automation_line.h +++ b/gtk2_ardour/automation_line.h @@ -37,7 +37,7 @@ #include "ardour/types.h" #include "canvas/types.h" -#include "canvas/layout.h" +#include "canvas/container.h" #include "canvas/poly_line.h" class AutomationLine; @@ -105,7 +105,7 @@ public: TimeAxisView& trackview; - ArdourCanvas::Layout& canvas_group() const { return *group; } + ArdourCanvas::Container& canvas_group() const { return *group; } ArdourCanvas::Item& parent_group() const { return _parent_group; } ArdourCanvas::Item& grab_item() const { return *line; } @@ -174,7 +174,7 @@ protected: bool did_push; ArdourCanvas::Item& _parent_group; - ArdourCanvas::Layout* group; + ArdourCanvas::Container* group; ArdourCanvas::PolyLine* line; /* line */ ArdourCanvas::Points line_points; /* coordinates for canvas line */ std::vector control_points; /* visible control points */ diff --git a/gtk2_ardour/automation_region_view.cc b/gtk2_ardour/automation_region_view.cc index 44744fa39b..2da15c17c5 100644 --- a/gtk2_ardour/automation_region_view.cc +++ b/gtk2_ardour/automation_region_view.cc @@ -39,7 +39,7 @@ #include "i18n.h" -AutomationRegionView::AutomationRegionView (ArdourCanvas::Layout* parent, +AutomationRegionView::AutomationRegionView (ArdourCanvas::Container* parent, AutomationTimeAxisView& time_axis, boost::shared_ptr region, const Evoral::Parameter& param, diff --git a/gtk2_ardour/automation_region_view.h b/gtk2_ardour/automation_region_view.h index dd9d6a7f82..1dec06f0c6 100644 --- a/gtk2_ardour/automation_region_view.h +++ b/gtk2_ardour/automation_region_view.h @@ -37,7 +37,7 @@ class TimeAxisView; class AutomationRegionView : public RegionView { public: - AutomationRegionView(ArdourCanvas::Layout*, + AutomationRegionView(ArdourCanvas::Container*, AutomationTimeAxisView&, boost::shared_ptr, const Evoral::Parameter& parameter, diff --git a/gtk2_ardour/crossfade_view.h b/gtk2_ardour/crossfade_view.h index 9e6e943904..a042611cc9 100644 --- a/gtk2_ardour/crossfade_view.h +++ b/gtk2_ardour/crossfade_view.h @@ -36,7 +36,7 @@ namespace ArdourCanvas { class CrossfadeView : public TimeAxisViewItem { public: - CrossfadeView (ArdourCanvas::Layout*, + CrossfadeView (ArdourCanvas::Container*, RouteTimeAxisView&, boost::shared_ptr, double initial_samples_per_pixel, diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 6eb4be81f8..e405f3be41 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -451,7 +451,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD _stepping_axis_view = v; } - ArdourCanvas::Layout* get_trackview_group () const { return _trackview_group; } + ArdourCanvas::Container* get_trackview_group () const { return _trackview_group; } ArdourCanvas::ScrollGroup* get_hscroll_group () const { return h_scroll_group; } ArdourCanvas::ScrollGroup* get_vscroll_group () const { return v_scroll_group; } ArdourCanvas::ScrollGroup* get_hvscroll_group () const { return hv_scroll_group; } @@ -560,7 +560,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void refresh_location_display (); void refresh_location_display_internal (ARDOUR::Locations::LocationList&); void add_new_location (ARDOUR::Location *); - ArdourCanvas::Layout* add_new_location_internal (ARDOUR::Location *); + ArdourCanvas::Container* add_new_location_internal (ARDOUR::Location *); void location_gone (ARDOUR::Location *); void remove_marker (ArdourCanvas::Item&, GdkEvent*); gint really_remove_marker (ARDOUR::Location* loc); @@ -606,7 +606,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD LocationMarkerMap location_markers; void update_marker_labels (); - void update_marker_labels (ArdourCanvas::Layout *); + void update_marker_labels (ArdourCanvas::Container *); void check_marker_label (Marker *); /** A set of lists of Markers that are in each of the canvas groups @@ -615,7 +615,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD * a marker has moved we can decide whether we need to update the labels * for all markers or for just a few. */ - std::map > _sorted_marker_lists; + std::map > _sorted_marker_lists; void remove_sorted_marker (Marker *); void hide_marker (ArdourCanvas::Item*, GdkEvent*); @@ -729,21 +729,21 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD ArdourCanvas::Pixbuf *logo_item; #if 0 /* these will be needed when we have canvas rulers */ - ArdourCanvas::Layout *minsec_group; - ArdourCanvas::Layout *bbt_group; - ArdourCanvas::Layout *timecode_group; - ArdourCanvas::Layout *frame_group; + ArdourCanvas::Container *minsec_group; + ArdourCanvas::Container *bbt_group; + ArdourCanvas::Container *timecode_group; + ArdourCanvas::Container *frame_group; #endif - ArdourCanvas::Layout *tempo_group; - ArdourCanvas::Layout *meter_group; - ArdourCanvas::Layout *marker_group; - ArdourCanvas::Layout *range_marker_group; - ArdourCanvas::Layout *transport_marker_group; - ArdourCanvas::Layout* cd_marker_group; + ArdourCanvas::Container *tempo_group; + ArdourCanvas::Container *meter_group; + ArdourCanvas::Container *marker_group; + ArdourCanvas::Container *range_marker_group; + ArdourCanvas::Container *transport_marker_group; + ArdourCanvas::Container* cd_marker_group; /* parent for groups which themselves contain time markers */ - ArdourCanvas::Layout* _time_markers_group; + ArdourCanvas::Container* _time_markers_group; /* The group containing all other groups that are scrolled vertically and horizontally. @@ -759,12 +759,12 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD ArdourCanvas::ScrollGroup* h_scroll_group; /* The group containing all trackviews. */ - ArdourCanvas::Layout* _trackview_group; + ArdourCanvas::Container* _trackview_group; /* The group holding things (mostly regions) while dragging so they * are on top of everything else */ - ArdourCanvas::Layout* _drag_motion_group; + ArdourCanvas::Container* _drag_motion_group; /* a rect that sits at the bottom of all tracks to act as a drag-no-drop/clickable * target area. @@ -898,7 +898,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD /* videtimline related actions */ Gtk::Label videotl_label; - ArdourCanvas::Layout* videotl_group; + ArdourCanvas::Container* videotl_group; Glib::RefPtr ruler_video_action; Glib::RefPtr xjadeo_proc_action; Glib::RefPtr xjadeo_ontop_action; @@ -1478,8 +1478,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD TempoLines* tempo_lines; - ArdourCanvas::Layout* global_rect_group; - ArdourCanvas::Layout* time_line_group; + ArdourCanvas::Container* global_rect_group; + ArdourCanvas::Container* time_line_group; void hide_measures (); void draw_measures (ARDOUR::TempoMap::BBTPointList::const_iterator& begin, diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index ce20b841ad..90bec7db6c 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -101,7 +101,7 @@ Editor::initialize_canvas () } /*a group to hold global rects like punch/loop indicators */ - global_rect_group = new ArdourCanvas::Layout (hv_scroll_group); + global_rect_group = new ArdourCanvas::Container (hv_scroll_group); CANVAS_DEBUG_NAME (global_rect_group, "global rect group"); transport_loop_range_rect = new ArdourCanvas::Rectangle (global_rect_group, ArdourCanvas::Rect (0.0, 0.0, 0.0, ArdourCanvas::COORD_MAX)); @@ -113,10 +113,10 @@ Editor::initialize_canvas () transport_punch_range_rect->hide(); /*a group to hold time (measure) lines */ - time_line_group = new ArdourCanvas::Layout (hv_scroll_group); + time_line_group = new ArdourCanvas::Container (hv_scroll_group); CANVAS_DEBUG_NAME (time_line_group, "time line group"); - _trackview_group = new ArdourCanvas::Layout (hv_scroll_group); + _trackview_group = new ArdourCanvas::Container (hv_scroll_group); CANVAS_DEBUG_NAME (_trackview_group, "Canvas TrackViews"); // used to show zoom mode active zooming @@ -131,30 +131,30 @@ Editor::initialize_canvas () /* a group to hold stuff while it gets dragged around. Must be the * uppermost (last) group with hv_scroll_group as a parent */ - _drag_motion_group = new ArdourCanvas::Layout (hv_scroll_group); + _drag_motion_group = new ArdourCanvas::Container (hv_scroll_group); CANVAS_DEBUG_NAME (_drag_motion_group, "Canvas Drag Motion"); /* TIME BAR CANVAS */ - _time_markers_group = new ArdourCanvas::Layout (h_scroll_group); + _time_markers_group = new ArdourCanvas::Container (h_scroll_group); CANVAS_DEBUG_NAME (_time_markers_group, "time bars"); - cd_marker_group = new ArdourCanvas::Layout (_time_markers_group, ArdourCanvas::Duple (0.0, 0.0)); + cd_marker_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple (0.0, 0.0)); CANVAS_DEBUG_NAME (cd_marker_group, "cd marker group"); /* the vide is temporarily placed a the same location as the cd_marker_group, but is moved later. */ - videotl_group = new ArdourCanvas::Layout (_time_markers_group, ArdourCanvas::Duple(0.0, 0.0)); + videotl_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple(0.0, 0.0)); CANVAS_DEBUG_NAME (videotl_group, "videotl group"); - marker_group = new ArdourCanvas::Layout (_time_markers_group, ArdourCanvas::Duple (0.0, timebar_height + 1.0)); + marker_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple (0.0, timebar_height + 1.0)); CANVAS_DEBUG_NAME (marker_group, "marker group"); - transport_marker_group = new ArdourCanvas::Layout (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 2.0) + 1.0)); + transport_marker_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 2.0) + 1.0)); CANVAS_DEBUG_NAME (transport_marker_group, "transport marker group"); - range_marker_group = new ArdourCanvas::Layout (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 3.0) + 1.0)); + range_marker_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 3.0) + 1.0)); CANVAS_DEBUG_NAME (range_marker_group, "range marker group"); - tempo_group = new ArdourCanvas::Layout (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 4.0) + 1.0)); + tempo_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 4.0) + 1.0)); CANVAS_DEBUG_NAME (tempo_group, "tempo group"); - meter_group = new ArdourCanvas::Layout (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 5.0) + 1.0)); + meter_group = new ArdourCanvas::Container (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 5.0) + 1.0)); CANVAS_DEBUG_NAME (meter_group, "meter group"); meter_bar = new ArdourCanvas::Rectangle (meter_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height)); diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc index 66edefc211..4f6f1b91ce 100644 --- a/gtk2_ardour/editor_markers.cc +++ b/gtk2_ardour/editor_markers.cc @@ -64,7 +64,7 @@ Editor::add_new_location (Location *location) { ENSURE_GUI_THREAD (*this, &Editor::add_new_location, location); - ArdourCanvas::Layout* group = add_new_location_internal (location); + ArdourCanvas::Container* group = add_new_location_internal (location); /* Do a full update of the markers in this group */ update_marker_labels (group); @@ -82,14 +82,14 @@ Editor::add_new_location (Location *location) * the caller must call update_marker_labels () after calling this. * @return canvas group that the location's marker was added to. */ -ArdourCanvas::Layout* +ArdourCanvas::Container* Editor::add_new_location_internal (Location* location) { LocationMarkers *lam = new LocationMarkers; uint32_t color; /* make a note here of which group this marker ends up in */ - ArdourCanvas::Layout* group = 0; + ArdourCanvas::Container* group = 0; if (location->is_cd_marker()) { color = location_cd_marker_color; @@ -311,14 +311,14 @@ struct MarkerComparator { void Editor::update_marker_labels () { - for (std::map >::iterator i = _sorted_marker_lists.begin(); i != _sorted_marker_lists.end(); ++i) { + for (std::map >::iterator i = _sorted_marker_lists.begin(); i != _sorted_marker_lists.end(); ++i) { update_marker_labels (i->first); } } /** Look at all markers in a group and update label widths */ void -Editor::update_marker_labels (ArdourCanvas::Layout* group) +Editor::update_marker_labels (ArdourCanvas::Container* group) { list& sorted = _sorted_marker_lists[group]; @@ -1576,7 +1576,7 @@ Editor::toggle_marker_lines () void Editor::remove_sorted_marker (Marker* m) { - for (std::map >::iterator i = _sorted_marker_lists.begin(); i != _sorted_marker_lists.end(); ++i) { + for (std::map >::iterator i = _sorted_marker_lists.begin(); i != _sorted_marker_lists.end(); ++i) { i->second.remove (m); } } diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index 7b9a2a495b..bdc7421eb9 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -29,7 +29,7 @@ #include -#include "canvas/layout.h" +#include "canvas/container.h" #include "canvas/canvas.h" #include "canvas/ruler.h" #include "canvas/debug.h" diff --git a/gtk2_ardour/ghostregion.cc b/gtk2_ardour/ghostregion.cc index 4c3e904c72..759ffb94d2 100644 --- a/gtk2_ardour/ghostregion.cc +++ b/gtk2_ardour/ghostregion.cc @@ -18,7 +18,7 @@ */ #include "evoral/Note.hpp" -#include "canvas/layout.h" +#include "canvas/container.h" #include "canvas/rectangle.h" #include "canvas/wave_view.h" #include "canvas/debug.h" @@ -38,11 +38,11 @@ using namespace ARDOUR; PBD::Signal1 GhostRegion::CatchDeletion; -GhostRegion::GhostRegion (ArdourCanvas::Layout* parent, TimeAxisView& tv, TimeAxisView& source_tv, double initial_pos) +GhostRegion::GhostRegion (ArdourCanvas::Container* parent, TimeAxisView& tv, TimeAxisView& source_tv, double initial_pos) : trackview (tv) , source_trackview (source_tv) { - group = new ArdourCanvas::Layout (parent); + group = new ArdourCanvas::Container (parent); CANVAS_DEBUG_NAME (group, "ghost region"); group->set_position (ArdourCanvas::Duple (initial_pos, 0)); @@ -191,7 +191,7 @@ MidiGhostRegion::~MidiGhostRegion() clear_events (); } -MidiGhostRegion::GhostEvent::GhostEvent (NoteBase* e, ArdourCanvas::Layout* g) +MidiGhostRegion::GhostEvent::GhostEvent (NoteBase* e, ArdourCanvas::Container* g) : event (e) { rect = new ArdourCanvas::Rectangle (g, ArdourCanvas::Rect (e->x0(), e->y0(), e->x1(), e->y1())); diff --git a/gtk2_ardour/ghostregion.h b/gtk2_ardour/ghostregion.h index 851c5502f8..85b6d96ed1 100644 --- a/gtk2_ardour/ghostregion.h +++ b/gtk2_ardour/ghostregion.h @@ -36,7 +36,7 @@ class TimeAxisView; class GhostRegion : public sigc::trackable { public: - GhostRegion(ArdourCanvas::Layout* parent, TimeAxisView& tv, TimeAxisView& source_tv, double initial_unit_pos); + GhostRegion(ArdourCanvas::Container* parent, TimeAxisView& tv, TimeAxisView& source_tv, double initial_unit_pos); virtual ~GhostRegion(); virtual void set_samples_per_pixel (double) = 0; @@ -52,7 +52,7 @@ public: TimeAxisView& trackview; /** TimeAxisView that we are a ghost for */ TimeAxisView& source_trackview; - ArdourCanvas::Layout* group; + ArdourCanvas::Container* group; ArdourCanvas::Rectangle* base_rect; static PBD::Signal1 CatchDeletion; @@ -73,7 +73,7 @@ class MidiGhostRegion : public GhostRegion { public: class GhostEvent : public sigc::trackable { public: - GhostEvent(::NoteBase *, ArdourCanvas::Layout *); + GhostEvent(::NoteBase *, ArdourCanvas::Container *); virtual ~GhostEvent (); NoteBase* event; diff --git a/gtk2_ardour/marker.cc b/gtk2_ardour/marker.cc index ea47929db7..1374d96127 100644 --- a/gtk2_ardour/marker.cc +++ b/gtk2_ardour/marker.cc @@ -21,7 +21,7 @@ #include "ardour/tempo.h" #include "canvas/rectangle.h" -#include "canvas/layout.h" +#include "canvas/container.h" #include "canvas/line.h" #include "canvas/polygon.h" #include "canvas/text.h" @@ -53,7 +53,7 @@ PBD::Signal1 Marker::CatchDeletion; static const double marker_height = 13.0; -Marker::Marker (PublicEditor& ed, ArdourCanvas::Layout& parent, guint32 rgba, const string& annotation, +Marker::Marker (PublicEditor& ed, ArdourCanvas::Container& parent, guint32 rgba, const string& annotation, Type type, framepos_t frame, bool handle_events) : editor (ed) @@ -242,7 +242,7 @@ Marker::Marker (PublicEditor& ed, ArdourCanvas::Layout& parent, guint32 rgba, co unit_position = editor.sample_to_pixel (frame); unit_position -= _shift; - group = new ArdourCanvas::Layout (&parent, ArdourCanvas::Duple (unit_position, 0)); + group = new ArdourCanvas::Container (&parent, ArdourCanvas::Duple (unit_position, 0)); #ifdef CANVAS_DEBUG group->name = string_compose ("Marker::group for %1", annotation); #endif @@ -302,7 +302,7 @@ Marker::~Marker () delete _track_canvas_line; } -void Marker::reparent(ArdourCanvas::Layout & parent) +void Marker::reparent(ArdourCanvas::Container & parent) { group->reparent (&parent); _parent = &parent; @@ -501,7 +501,7 @@ Marker::set_right_label_limit (double p) /***********************************************************************/ -TempoMarker::TempoMarker (PublicEditor& editor, ArdourCanvas::Layout& parent, guint32 rgba, const string& text, +TempoMarker::TempoMarker (PublicEditor& editor, ArdourCanvas::Container& parent, guint32 rgba, const string& text, ARDOUR::TempoSection& temp) : Marker (editor, parent, rgba, text, Tempo, 0, false), _tempo (temp) @@ -516,7 +516,7 @@ TempoMarker::~TempoMarker () /***********************************************************************/ -MeterMarker::MeterMarker (PublicEditor& editor, ArdourCanvas::Layout& parent, guint32 rgba, const string& text, +MeterMarker::MeterMarker (PublicEditor& editor, ArdourCanvas::Container& parent, guint32 rgba, const string& text, ARDOUR::MeterSection& m) : Marker (editor, parent, rgba, text, Meter, 0, false), _meter (m) diff --git a/gtk2_ardour/marker.h b/gtk2_ardour/marker.h index facaaffb09..3a3339d318 100644 --- a/gtk2_ardour/marker.h +++ b/gtk2_ardour/marker.h @@ -56,7 +56,7 @@ class Marker : public sigc::trackable }; - Marker (PublicEditor& editor, ArdourCanvas::Layout &, guint32 rgba, const std::string& text, Type, + Marker (PublicEditor& editor, ArdourCanvas::Container &, guint32 rgba, const std::string& text, Type, framepos_t frame = 0, bool handle_events = true); virtual ~Marker (); @@ -76,8 +76,8 @@ class Marker : public sigc::trackable framepos_t position() const { return frame_position; } - ArdourCanvas::Layout * get_parent() { return _parent; } - void reparent (ArdourCanvas::Layout & parent); + ArdourCanvas::Container * get_parent() { return _parent; } + void reparent (ArdourCanvas::Container & parent); void hide (); void show (); @@ -98,8 +98,8 @@ class Marker : public sigc::trackable Pango::FontDescription name_font; - ArdourCanvas::Layout* _parent; - ArdourCanvas::Layout *group; + ArdourCanvas::Container* _parent; + ArdourCanvas::Container *group; ArdourCanvas::Polygon *mark; ArdourCanvas::Text *_name_item; ArdourCanvas::Points *points; @@ -134,7 +134,7 @@ private: class TempoMarker : public Marker { public: - TempoMarker (PublicEditor& editor, ArdourCanvas::Layout &, guint32 rgba, const std::string& text, ARDOUR::TempoSection&); + TempoMarker (PublicEditor& editor, ArdourCanvas::Container &, guint32 rgba, const std::string& text, ARDOUR::TempoSection&); ~TempoMarker (); ARDOUR::TempoSection& tempo() const { return _tempo; } @@ -146,7 +146,7 @@ class TempoMarker : public Marker class MeterMarker : public Marker { public: - MeterMarker (PublicEditor& editor, ArdourCanvas::Layout &, guint32 rgba, const std::string& text, ARDOUR::MeterSection&); + MeterMarker (PublicEditor& editor, ArdourCanvas::Container &, guint32 rgba, const std::string& text, ARDOUR::MeterSection&); ~MeterMarker (); ARDOUR::MeterSection& meter() const { return _meter; } diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index b20727889a..503c1756e9 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -88,13 +88,13 @@ PBD::Signal1 MidiRegionView::SelectionCleared; #define MIDI_BP_ZERO ((Config->get_first_midi_bank_is_zero())?0:1) -MidiRegionView::MidiRegionView (ArdourCanvas::Layout *parent, RouteTimeAxisView &tv, +MidiRegionView::MidiRegionView (ArdourCanvas::Container *parent, RouteTimeAxisView &tv, boost::shared_ptr r, double spu, uint32_t basic_color) : RegionView (parent, tv, r, spu, basic_color) , _current_range_min(0) , _current_range_max(0) , _active_notes(0) - , _note_group (new ArdourCanvas::Layout (group)) + , _note_group (new ArdourCanvas::Container (group)) , _note_diff_command (0) , _ghost_note(0) , _step_edit_cursor (0) @@ -124,14 +124,14 @@ MidiRegionView::MidiRegionView (ArdourCanvas::Layout *parent, RouteTimeAxisView SelectionCleared.connect (_selection_cleared_connection, invalidator (*this), boost::bind (&MidiRegionView::selection_cleared, this, _1), gui_context ()); } -MidiRegionView::MidiRegionView (ArdourCanvas::Layout *parent, RouteTimeAxisView &tv, +MidiRegionView::MidiRegionView (ArdourCanvas::Container *parent, RouteTimeAxisView &tv, boost::shared_ptr r, double spu, uint32_t basic_color, TimeAxisViewItem::Visibility visibility) : RegionView (parent, tv, r, spu, basic_color, false, visibility) , _current_range_min(0) , _current_range_max(0) , _active_notes(0) - , _note_group (new ArdourCanvas::Layout (parent)) + , _note_group (new ArdourCanvas::Container (parent)) , _note_diff_command (0) , _ghost_note(0) , _step_edit_cursor (0) @@ -177,7 +177,7 @@ MidiRegionView::MidiRegionView (const MidiRegionView& other) , _current_range_min(0) , _current_range_max(0) , _active_notes(0) - , _note_group (new ArdourCanvas::Layout (get_canvas_group())) + , _note_group (new ArdourCanvas::Container (get_canvas_group())) , _note_diff_command (0) , _ghost_note(0) , _step_edit_cursor (0) @@ -205,7 +205,7 @@ MidiRegionView::MidiRegionView (const MidiRegionView& other, boost::shared_ptrset_y0 (0); @@ -3725,7 +3725,7 @@ MidiRegionView::trim_front_starting () /* Reparent the note group to the region view's parent, so that it doesn't change when the region view is trimmed. */ - _temporary_note_group = new ArdourCanvas::Layout (group->parent ()); + _temporary_note_group = new ArdourCanvas::Container (group->parent ()); _temporary_note_group->move (group->position ()); _note_group->reparent (_temporary_note_group); } diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h index 213d97795e..3fd6625ce9 100644 --- a/gtk2_ardour/midi_region_view.h +++ b/gtk2_ardour/midi_region_view.h @@ -67,7 +67,7 @@ public: typedef Evoral::Note NoteType; typedef Evoral::Sequence::Notes Notes; - MidiRegionView (ArdourCanvas::Layout *, + MidiRegionView (ArdourCanvas::Container *, RouteTimeAxisView&, boost::shared_ptr, double initial_samples_per_pixel, @@ -309,7 +309,7 @@ protected: /** Allows derived types to specify their visibility requirements * to the TimeAxisViewItem parent class. */ - MidiRegionView (ArdourCanvas::Layout *, + MidiRegionView (ArdourCanvas::Container *, RouteTimeAxisView&, boost::shared_ptr, double samples_per_pixel, @@ -387,7 +387,7 @@ private: PatchChanges _patch_changes; SysExes _sys_exes; Note** _active_notes; - ArdourCanvas::Layout* _note_group; + ArdourCanvas::Container* _note_group; ARDOUR::MidiModel::NoteDiffCommand* _note_diff_command; Note* _ghost_note; double _last_ghost_x; @@ -401,7 +401,7 @@ private: /** A group used to temporarily reparent _note_group to during start trims, so * that the notes don't move with the parent region view. */ - ArdourCanvas::Layout* _temporary_note_group; + ArdourCanvas::Container* _temporary_note_group; MouseState _mouse_state; int _pressed_button; diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc index b687020e3d..3dd39a5177 100644 --- a/gtk2_ardour/midi_streamview.cc +++ b/gtk2_ardour/midi_streamview.cc @@ -68,7 +68,7 @@ MidiStreamView::MidiStreamView (MidiTimeAxisView& tv) , _updates_suspended (false) { /* use a group dedicated to MIDI underlays. Audio underlays are not in this group. */ - midi_underlay_group = new ArdourCanvas::Layout (_canvas_group); + midi_underlay_group = new ArdourCanvas::Container (_canvas_group); midi_underlay_group->lower_to_bottom(); /* put the note lines in the timeaxisview's group, so it diff --git a/gtk2_ardour/midi_streamview.h b/gtk2_ardour/midi_streamview.h index 6cd9d10e21..9dbfbae5ea 100644 --- a/gtk2_ardour/midi_streamview.h +++ b/gtk2_ardour/midi_streamview.h @@ -68,7 +68,7 @@ class MidiStreamView : public StreamView }; Gtk::Adjustment note_range_adjustment; - ArdourCanvas::Layout* midi_underlay_group; + ArdourCanvas::Container* midi_underlay_group; void set_note_range(VisibleNoteRange r); diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index dc0ca4b198..3ceb44bde7 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -91,9 +91,9 @@ Mixer_UI::Mixer_UI () , _monitor_section (0) , _strip_width (Config->get_default_narrow_ms() ? Narrow : Wide) , ignore_reorder (false) - , _following_editor_selection (false) , _in_group_rebuild_or_clear (false) , _route_deletion_in_progress (false) + , _following_editor_selection (false) , _maximised (false) { /* allow this window to become the key focus window */ diff --git a/gtk2_ardour/note.h b/gtk2_ardour/note.h index 944dbf1b2e..71faeb53fb 100644 --- a/gtk2_ardour/note.h +++ b/gtk2_ardour/note.h @@ -26,7 +26,7 @@ #include "midi_util.h" namespace ArdourCanvas { - class Layout; + class Container; } class Note : public NoteBase diff --git a/gtk2_ardour/panner2d.h b/gtk2_ardour/panner2d.h index 0897eddab0..99377bdd50 100644 --- a/gtk2_ardour/panner2d.h +++ b/gtk2_ardour/panner2d.h @@ -46,7 +46,7 @@ namespace Gtk { } namespace Pango { - class Layout; + class Container; } class Panner2dWindow; diff --git a/gtk2_ardour/patch_change.cc b/gtk2_ardour/patch_change.cc index a029563f0f..b2882f27af 100644 --- a/gtk2_ardour/patch_change.cc +++ b/gtk2_ardour/patch_change.cc @@ -43,7 +43,7 @@ using namespace std; */ PatchChange::PatchChange( MidiRegionView& region, - ArdourCanvas::Layout* parent, + ArdourCanvas::Container* parent, const string& text, double height, double x, diff --git a/gtk2_ardour/patch_change.h b/gtk2_ardour/patch_change.h index ed1f4aadf4..44f10074d5 100644 --- a/gtk2_ardour/patch_change.h +++ b/gtk2_ardour/patch_change.h @@ -35,7 +35,7 @@ class PatchChange public: PatchChange( MidiRegionView& region, - ArdourCanvas::Layout* parent, + ArdourCanvas::Container* parent, const string& text, double height, double x, diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index 86e9e16cdd..35c75e469e 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -365,7 +365,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi virtual Gtk::HBox& get_status_bar_packer() = 0; #endif - virtual ArdourCanvas::Layout* get_trackview_group () const = 0; + virtual ArdourCanvas::Container* get_trackview_group () const = 0; virtual ArdourCanvas::ScrollGroup* get_hscroll_group () const = 0; virtual ArdourCanvas::ScrollGroup* get_vscroll_group () const = 0; virtual ArdourCanvas::ScrollGroup* get_hvscroll_group () const = 0; diff --git a/gtk2_ardour/region_gain_line.cc b/gtk2_ardour/region_gain_line.cc index d0fd762e24..dda81dd059 100644 --- a/gtk2_ardour/region_gain_line.cc +++ b/gtk2_ardour/region_gain_line.cc @@ -38,7 +38,7 @@ using namespace std; using namespace ARDOUR; using namespace PBD; -AudioRegionGainLine::AudioRegionGainLine (const string & name, AudioRegionView& r, ArdourCanvas::Layout& parent, boost::shared_ptr l) +AudioRegionGainLine::AudioRegionGainLine (const string & name, AudioRegionView& r, ArdourCanvas::Container& parent, boost::shared_ptr l) : AutomationLine (name, r.get_time_axis_view(), parent, l) , rv (r) { diff --git a/gtk2_ardour/region_gain_line.h b/gtk2_ardour/region_gain_line.h index 998f3b3cf2..1395bc3f6f 100644 --- a/gtk2_ardour/region_gain_line.h +++ b/gtk2_ardour/region_gain_line.h @@ -35,7 +35,7 @@ class AudioRegionView; class AudioRegionGainLine : public AutomationLine { public: - AudioRegionGainLine (const std::string & name, AudioRegionView&, ArdourCanvas::Layout& parent, boost::shared_ptr); + AudioRegionGainLine (const std::string & name, AudioRegionView&, ArdourCanvas::Container& parent, boost::shared_ptr); void start_drag_single (ControlPoint*, double, float); void end_drag (bool with_push, uint32_t final_index); diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index 4a732b6360..1c08682591 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -63,7 +63,7 @@ static const int32_t sync_mark_width = 9; PBD::Signal1 RegionView::RegionViewGoingAway; -RegionView::RegionView (ArdourCanvas::Layout* parent, +RegionView::RegionView (ArdourCanvas::Container* parent, TimeAxisView& tv, boost::shared_ptr r, double spu, @@ -128,7 +128,7 @@ RegionView::RegionView (const RegionView& other, boost::shared_ptr other GhostRegion::CatchDeletion.connect (*this, invalidator (*this), boost::bind (&RegionView::remove_ghost, this, _1), gui_context()); } -RegionView::RegionView (ArdourCanvas::Layout* parent, +RegionView::RegionView (ArdourCanvas::Container* parent, TimeAxisView& tv, boost::shared_ptr r, double spu, diff --git a/gtk2_ardour/region_view.h b/gtk2_ardour/region_view.h index 1c34d29360..0837c075f0 100644 --- a/gtk2_ardour/region_view.h +++ b/gtk2_ardour/region_view.h @@ -49,7 +49,7 @@ namespace ArdourCanvas { class RegionView : public TimeAxisViewItem { public: - RegionView (ArdourCanvas::Layout* parent, + RegionView (ArdourCanvas::Container* parent, TimeAxisView& time_view, boost::shared_ptr region, double samples_per_pixel, @@ -128,7 +128,7 @@ class RegionView : public TimeAxisViewItem /** Allows derived types to specify their visibility requirements * to the TimeAxisViewItem parent class */ - RegionView (ArdourCanvas::Layout *, + RegionView (ArdourCanvas::Container *, TimeAxisView&, boost::shared_ptr, double samples_per_pixel, diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc index 15facc3adf..970c1616c1 100644 --- a/gtk2_ardour/streamview.cc +++ b/gtk2_ardour/streamview.cc @@ -52,9 +52,9 @@ using namespace ARDOUR; using namespace PBD; using namespace Editing; -StreamView::StreamView (RouteTimeAxisView& tv, ArdourCanvas::Layout* canvas_group) +StreamView::StreamView (RouteTimeAxisView& tv, ArdourCanvas::Container* canvas_group) : _trackview (tv) - , _canvas_group (canvas_group ? canvas_group : new ArdourCanvas::Layout (_trackview.canvas_display())) + , _canvas_group (canvas_group ? canvas_group : new ArdourCanvas::Container (_trackview.canvas_display())) , _samples_per_pixel (_trackview.editor().get_current_zoom ()) , rec_updating(false) , rec_active(false) diff --git a/gtk2_ardour/streamview.h b/gtk2_ardour/streamview.h index 7c7bbad924..b3ae34e4d4 100644 --- a/gtk2_ardour/streamview.h +++ b/gtk2_ardour/streamview.h @@ -42,7 +42,7 @@ namespace ARDOUR { namespace ArdourCanvas { class Rectangle; - class Layout; + class Container; } struct RecBoxInfo { @@ -82,7 +82,7 @@ public: void set_layer_display (LayerDisplay); LayerDisplay layer_display () const { return _layer_display; } - ArdourCanvas::Layout* canvas_item() { return _canvas_group; } + ArdourCanvas::Container* canvas_item() { return _canvas_group; } enum ColorTarget { RegionColor, @@ -128,7 +128,7 @@ public: sigc::signal ContentsHeightChanged; protected: - StreamView (RouteTimeAxisView&, ArdourCanvas::Layout* canvas_group = 0); + StreamView (RouteTimeAxisView&, ArdourCanvas::Container* canvas_group = 0); void transport_changed(); void transport_looped(); @@ -151,7 +151,7 @@ protected: virtual void color_handler () = 0; RouteTimeAxisView& _trackview; - ArdourCanvas::Layout* _canvas_group; + ArdourCanvas::Container* _canvas_group; ArdourCanvas::Rectangle* canvas_rect; /* frame around the whole thing */ typedef std::list RegionViewList; diff --git a/gtk2_ardour/sys_ex.cc b/gtk2_ardour/sys_ex.cc index 103df599ec..ffa06aa8ae 100644 --- a/gtk2_ardour/sys_ex.cc +++ b/gtk2_ardour/sys_ex.cc @@ -26,7 +26,7 @@ using namespace std; SysEx::SysEx ( MidiRegionView& region, - ArdourCanvas::Layout* parent, + ArdourCanvas::Container* parent, string& text, double height, double x, diff --git a/gtk2_ardour/sys_ex.h b/gtk2_ardour/sys_ex.h index 281731e863..a0bb1df347 100644 --- a/gtk2_ardour/sys_ex.h +++ b/gtk2_ardour/sys_ex.h @@ -31,7 +31,7 @@ class SysEx public: SysEx ( MidiRegionView& region, - ArdourCanvas::Layout* parent, + ArdourCanvas::Container* parent, std::string& text, double height, double x, diff --git a/gtk2_ardour/tape_region_view.cc b/gtk2_ardour/tape_region_view.cc index 6de7b65327..f40ccb6014 100644 --- a/gtk2_ardour/tape_region_view.cc +++ b/gtk2_ardour/tape_region_view.cc @@ -46,7 +46,7 @@ const TimeAxisViewItem::Visibility TapeAudioRegionView::default_tape_visibility TimeAxisViewItem::HideFrameRight | TimeAxisViewItem::FullWidthNameHighlight); -TapeAudioRegionView::TapeAudioRegionView (ArdourCanvas::Layout *parent, RouteTimeAxisView &tv, +TapeAudioRegionView::TapeAudioRegionView (ArdourCanvas::Container *parent, RouteTimeAxisView &tv, boost::shared_ptr r, double spu, uint32_t basic_color) diff --git a/gtk2_ardour/tape_region_view.h b/gtk2_ardour/tape_region_view.h index 4729328625..6361683362 100644 --- a/gtk2_ardour/tape_region_view.h +++ b/gtk2_ardour/tape_region_view.h @@ -27,7 +27,7 @@ class TapeAudioRegionView : public AudioRegionView { public: - TapeAudioRegionView (ArdourCanvas::Layout *, + TapeAudioRegionView (ArdourCanvas::Container *, RouteTimeAxisView&, boost::shared_ptr, double initial_samples_per_pixel, diff --git a/gtk2_ardour/tempo_lines.cc b/gtk2_ardour/tempo_lines.cc index b9686821f8..1a3fdaed2e 100644 --- a/gtk2_ardour/tempo_lines.cc +++ b/gtk2_ardour/tempo_lines.cc @@ -28,7 +28,7 @@ using namespace std; -TempoLines::TempoLines (ArdourCanvas::Layout* group, double) +TempoLines::TempoLines (ArdourCanvas::Container* group, double) : lines (group, ArdourCanvas::LineSet::Vertical) { lines.set_extent (ArdourCanvas::COORD_MAX); diff --git a/gtk2_ardour/tempo_lines.h b/gtk2_ardour/tempo_lines.h index 8b64885667..99a6a6b93f 100644 --- a/gtk2_ardour/tempo_lines.h +++ b/gtk2_ardour/tempo_lines.h @@ -25,7 +25,7 @@ class TempoLines { public: - TempoLines (ArdourCanvas::Layout* group, double screen_height); + TempoLines (ArdourCanvas::Container* group, double screen_height); void tempo_map_changed(); diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index 3478297e58..044094375b 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -97,16 +97,16 @@ TimeAxisView::TimeAxisView (ARDOUR::Session* sess, PublicEditor& ed, TimeAxisVie compute_heights (); } - _canvas_display = new ArdourCanvas::Layout (ed.get_trackview_group (), ArdourCanvas::Duple (0.0, 0.0)); + _canvas_display = new ArdourCanvas::Container (ed.get_trackview_group (), ArdourCanvas::Duple (0.0, 0.0)); CANVAS_DEBUG_NAME (_canvas_display, "main for TAV"); _canvas_display->hide(); // reveal as needed - selection_group = new ArdourCanvas::Layout (_canvas_display); + selection_group = new ArdourCanvas::Container (_canvas_display); CANVAS_DEBUG_NAME (selection_group, "selection for TAV"); selection_group->set_data (X_("timeselection"), (void *) 1); selection_group->hide(); - _ghost_group = new ArdourCanvas::Layout (_canvas_display); + _ghost_group = new ArdourCanvas::Container (_canvas_display); CANVAS_DEBUG_NAME (_ghost_group, "ghost for TAV"); _ghost_group->lower_to_bottom(); _ghost_group->show(); diff --git a/gtk2_ardour/time_axis_view.h b/gtk2_ardour/time_axis_view.h index cddf9f9e29..4c183ddc6a 100644 --- a/gtk2_ardour/time_axis_view.h +++ b/gtk2_ardour/time_axis_view.h @@ -59,7 +59,7 @@ namespace Gtk { namespace ArdourCanvas { class Canvas; - class Layout; + class Container; class Item; } @@ -104,8 +104,8 @@ class TimeAxisView : public virtual AxisView virtual void enter_internal_edit_mode () {} virtual void leave_internal_edit_mode () {} - ArdourCanvas::Layout* canvas_display () { return _canvas_display; } - ArdourCanvas::Layout* ghost_group () { return _ghost_group; } + ArdourCanvas::Container* canvas_display () { return _canvas_display; } + ArdourCanvas::Container* ghost_group () { return _ghost_group; } /** @return effective height (taking children into account) in canvas units, or 0 if this TimeAxisView has not yet been shown */ @@ -212,15 +212,15 @@ class TimeAxisView : public virtual AxisView std::string controls_base_selected_name; Gtk::Menu* display_menu; /* The standard LHS Track control popup-menus */ TimeAxisView* parent; - ArdourCanvas::Layout* selection_group; - ArdourCanvas::Layout* _ghost_group; + ArdourCanvas::Container* selection_group; + ArdourCanvas::Container* _ghost_group; std::list ghosts; std::list free_selection_rects; std::list used_selection_rects; bool _hidden; bool in_destructor; Gtk::Menu* _size_menu; - ArdourCanvas::Layout* _canvas_display; + ArdourCanvas::Container* _canvas_display; double _y_position; PublicEditor& _editor; diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc index 4494b9b265..c1e62e67d0 100644 --- a/gtk2_ardour/time_axis_view_item.cc +++ b/gtk2_ardour/time_axis_view_item.cc @@ -28,7 +28,7 @@ #include "gtkmm2ext/utils.h" #include "gtkmm2ext/gui_thread.h" -#include "canvas/layout.h" +#include "canvas/container.h" #include "canvas/rectangle.h" #include "canvas/debug.h" #include "canvas/text.h" @@ -162,7 +162,7 @@ TimeAxisViewItem::init (ArdourCanvas::Item* parent, double fpp, uint32_t base_co framepos_t start, framepos_t duration, Visibility vis, bool wide, bool high) { - group = new ArdourCanvas::Layout (parent); + group = new ArdourCanvas::Container (parent); CANVAS_DEBUG_NAME (group, string_compose ("TAVI group for %1", get_item_name())); group->Event.connect (sigc::mem_fun (*this, &TimeAxisViewItem::canvas_group_event)); diff --git a/gtk2_ardour/time_axis_view_item.h b/gtk2_ardour/time_axis_view_item.h index 388aa43b7a..e78b9c9488 100644 --- a/gtk2_ardour/time_axis_view_item.h +++ b/gtk2_ardour/time_axis_view_item.h @@ -33,7 +33,7 @@ namespace ArdourCanvas { class Pixbuf; class Rectangle; class Item; - class Layout; + class Container; class Text; } @@ -240,7 +240,7 @@ class TimeAxisViewItem : public Selectable, public PBD::ScopedConnectionList bool high_enough_for_name; bool rect_visible; - ArdourCanvas::Layout* group; + ArdourCanvas::Container* group; ArdourCanvas::Rectangle* vestigial_frame; ArdourCanvas::Rectangle* frame; ArdourCanvas::Text* name_text; diff --git a/gtk2_ardour/video_image_frame.cc b/gtk2_ardour/video_image_frame.cc index 861c763665..de2480e8f0 100644 --- a/gtk2_ardour/video_image_frame.cc +++ b/gtk2_ardour/video_image_frame.cc @@ -24,7 +24,7 @@ #include "video_image_frame.h" #include "public_editor.h" #include "utils.h" -#include "canvas/layout.h" +#include "canvas/container.h" #include "utils_videotl.h" #include @@ -43,7 +43,7 @@ static void freedata_cb (uint8_t *d, void* /*arg*/) { free (d); } -VideoImageFrame::VideoImageFrame (PublicEditor& ed, ArdourCanvas::Layout& parent, int w, int h, std::string vsurl, std::string vfn) +VideoImageFrame::VideoImageFrame (PublicEditor& ed, ArdourCanvas::Container& parent, int w, int h, std::string vsurl, std::string vfn) : editor (ed) , _parent(&parent) , clip_width(w) diff --git a/gtk2_ardour/video_image_frame.h b/gtk2_ardour/video_image_frame.h index cbe3a8da91..8f9e004c67 100644 --- a/gtk2_ardour/video_image_frame.h +++ b/gtk2_ardour/video_image_frame.h @@ -32,7 +32,7 @@ #include "ardour/ardour.h" #include "pbd/signals.h" -#include "canvas/layout.h" +#include "canvas/container.h" #include "canvas/pixbuf.h" #include "canvas/image.h" @@ -49,7 +49,7 @@ class PublicEditor; class VideoImageFrame : public sigc::trackable { public: - VideoImageFrame (PublicEditor&, ArdourCanvas::Layout&, int, int, std::string, std::string); + VideoImageFrame (PublicEditor&, ArdourCanvas::Container&, int, int, std::string, std::string); virtual ~VideoImageFrame (); void set_position (framepos_t); @@ -69,7 +69,7 @@ class VideoImageFrame : public sigc::trackable protected: PublicEditor& editor; - ArdourCanvas::Layout *_parent; + ArdourCanvas::Container *_parent; ArdourCanvas::Image *image; boost::shared_ptr img; diff --git a/gtk2_ardour/video_timeline.cc b/gtk2_ardour/video_timeline.cc index 180876b0ed..c77480ffc3 100644 --- a/gtk2_ardour/video_timeline.cc +++ b/gtk2_ardour/video_timeline.cc @@ -51,7 +51,7 @@ using namespace PBD; using namespace Timecode; using namespace VideoUtils; -VideoTimeLine::VideoTimeLine (PublicEditor *ed, ArdourCanvas::Layout *vbg, int initial_height) +VideoTimeLine::VideoTimeLine (PublicEditor *ed, ArdourCanvas::Container *vbg, int initial_height) : editor (ed) , videotl_group(vbg) , bar_height(initial_height) diff --git a/gtk2_ardour/video_timeline.h b/gtk2_ardour/video_timeline.h index 55384f4836..5a1bceb258 100644 --- a/gtk2_ardour/video_timeline.h +++ b/gtk2_ardour/video_timeline.h @@ -29,7 +29,7 @@ #include "video_image_frame.h" #include "video_monitor.h" #include "pbd/signals.h" -#include "canvas/layout.h" +#include "canvas/container.h" namespace ARDOUR { class Session; @@ -55,7 +55,7 @@ class PublicEditor; class VideoTimeLine : public sigc::trackable, public ARDOUR::SessionHandlePtr, public PBD::ScopedConnectionList, public PBD::StatefulDestructible { public: - VideoTimeLine (PublicEditor*, ArdourCanvas::Layout*, int); + VideoTimeLine (PublicEditor*, ArdourCanvas::Container*, int); virtual ~VideoTimeLine (); void set_session (ARDOUR::Session *s); @@ -102,7 +102,7 @@ class VideoTimeLine : public sigc::trackable, public ARDOUR::SessionHandlePtr, p protected: PublicEditor *editor; - ArdourCanvas::Layout *videotl_group; + ArdourCanvas::Container *videotl_group; int bar_height; std::string _xjadeo_bin; diff --git a/libs/canvas/arrow.cc b/libs/canvas/arrow.cc index 5cac31300e..70dbc0b498 100644 --- a/libs/canvas/arrow.cc +++ b/libs/canvas/arrow.cc @@ -35,13 +35,13 @@ using namespace ArdourCanvas; * @param parent Parent canvas group. */ Arrow::Arrow (Canvas* c) - : Layout (c) + : Container (c) { setup (); } Arrow::Arrow (Item* parent) - : Layout (parent) + : Container (parent) { setup (); } diff --git a/libs/canvas/canvas/arrow.h b/libs/canvas/canvas/arrow.h index 7db225553e..45c6eb110e 100644 --- a/libs/canvas/canvas/arrow.h +++ b/libs/canvas/canvas/arrow.h @@ -26,7 +26,7 @@ #define __CANVAS_ARROW_H__ #include "canvas/visibility.h" -#include "canvas/layout.h" +#include "canvas/container.h" namespace ArdourCanvas { @@ -45,7 +45,7 @@ class Polygon; * to draw lines at any angle. */ -class LIBCANVAS_API Arrow : public Layout +class LIBCANVAS_API Arrow : public Container { public: Arrow (Canvas*); diff --git a/libs/canvas/canvas/container.h b/libs/canvas/canvas/container.h index be80b37376..59d93458e6 100644 --- a/libs/canvas/canvas/container.h +++ b/libs/canvas/canvas/container.h @@ -30,7 +30,7 @@ namespace ArdourCanvas * * Imagined examples of containers: * - * Layout: renders each child at the child's self-determined position + * Container: renders each child at the child's self-determined position * Box: renders each child along an axis (vertical or horizontal) * Table/Grid: renders each child within a two-dimensional grid * @@ -47,8 +47,12 @@ public: * in all containers (the union of the children's bounding boxes). * It can be overriden as necessary. */ - void compute_bounding_box () const; + + /** The render() method is likely to be identical in all containers + * (just call Item::render_children()). It can be overridden as necessary. + */ + void render (Rect const & area, Cairo::RefPtr context) const; }; } diff --git a/libs/canvas/canvas/flag.h b/libs/canvas/canvas/flag.h index 05c0e2777d..3aff9ed241 100644 --- a/libs/canvas/canvas/flag.h +++ b/libs/canvas/canvas/flag.h @@ -19,7 +19,7 @@ #include "canvas/visibility.h" #include "canvas/types.h" -#include "canvas/layout.h" +#include "canvas/container.h" namespace ArdourCanvas { @@ -27,7 +27,7 @@ class Text; class Line; class Rectangle; -class LIBCANVAS_API Flag : public Layout +class LIBCANVAS_API Flag : public Container { public: Flag (Canvas *, Distance, Color, Color, Duple); diff --git a/libs/canvas/canvas/item.h b/libs/canvas/canvas/item.h index ced94e1e3b..85beedc6b3 100644 --- a/libs/canvas/canvas/item.h +++ b/libs/canvas/canvas/item.h @@ -283,6 +283,7 @@ protected: std::list _items; void add_child_bounding_boxes() const; + void render_children (Rect const & area, Cairo::RefPtr context) const; private: void init (); diff --git a/libs/canvas/canvas/layout.h b/libs/canvas/canvas/layout.h deleted file mode 100644 index 8b82b0f635..0000000000 --- a/libs/canvas/canvas/layout.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - Copyright (C) 2011-2014 Paul Davis - Original Author: Carl Hetherington - - 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_LAYOUT_H__ -#define __CANVAS_LAYOUT_H__ - -#include "canvas/container.h" - -namespace ArdourCanvas -{ - -/** a Layout is a container item that renders all of its children at fixed - * positions which they control. - */ -class LIBCANVAS_API Layout : public Container -{ -public: - Layout (Canvas *); - Layout (Item *); - Layout (Item*, Duple const & position); - - void render (Rect const & area, Cairo::RefPtr context) const; -}; - -} - -#endif diff --git a/libs/canvas/canvas/root_group.h b/libs/canvas/canvas/root_group.h index 5db8024f51..1763fc11df 100644 --- a/libs/canvas/canvas/root_group.h +++ b/libs/canvas/canvas/root_group.h @@ -21,11 +21,11 @@ #define __CANVAS_ROOT_GROUP_H__ #include "canvas/visibility.h" -#include "canvas/layout.h" +#include "canvas/container.h" namespace ArdourCanvas { -class LIBCANVAS_API Root : public Layout +class LIBCANVAS_API Root : public Container { private: friend class Canvas; diff --git a/libs/canvas/canvas/scroll_group.h b/libs/canvas/canvas/scroll_group.h index 013d769c2f..463abc0bbc 100644 --- a/libs/canvas/canvas/scroll_group.h +++ b/libs/canvas/canvas/scroll_group.h @@ -19,7 +19,7 @@ #ifndef __CANVAS_SCROLL_GROUP_H__ #define __CANVAS_SCROLL_GROUP_H__ -#include "canvas/layout.h" +#include "canvas/container.h" namespace ArdourCanvas { @@ -27,7 +27,7 @@ namespace ArdourCanvas { * its children in a way that reflects the most recent * call to its scroll_to() method. */ -class LIBCANVAS_API ScrollGroup : public Layout +class LIBCANVAS_API ScrollGroup : public Container { public: enum ScrollSensitivity { diff --git a/libs/canvas/container.cc b/libs/canvas/container.cc index 4190437e6b..6aa265fd81 100644 --- a/libs/canvas/container.cc +++ b/libs/canvas/container.cc @@ -37,6 +37,12 @@ Container::Container (Item* parent, Duple const & p) { } +void +Container::render (Rect const & area, Cairo::RefPtr context) const +{ + Item::render_children (area, context); +} + void Container::compute_bounding_box () const { diff --git a/libs/canvas/flag.cc b/libs/canvas/flag.cc index b6532d7fd2..243e71cd17 100644 --- a/libs/canvas/flag.cc +++ b/libs/canvas/flag.cc @@ -26,7 +26,7 @@ using namespace std; using namespace ArdourCanvas; Flag::Flag (Canvas* canvas, Distance height, Color outline_color, Color fill_color, Duple position) - : Layout (canvas) + : Container (canvas) , _outline_color (outline_color) , _fill_color (fill_color) { @@ -34,7 +34,7 @@ Flag::Flag (Canvas* canvas, Distance height, Color outline_color, Color fill_col } Flag::Flag (Item* parent, Distance height, Color outline_color, Color fill_color, Duple position) - : Layout (parent) + : Container (parent) , _outline_color (outline_color) , _fill_color (fill_color) { diff --git a/libs/canvas/item.cc b/libs/canvas/item.cc index e58411f17f..2d4f03a41f 100644 --- a/libs/canvas/item.cc +++ b/libs/canvas/item.cc @@ -673,6 +673,96 @@ Item::covers (Duple const & point) const /* nesting/grouping API */ +void +Item::render_children (Rect const & area, Cairo::RefPtr context) const +{ + if (_items.empty()) { + return; + } + + ensure_lut (); + std::vector items = _lut->get (area); + +#ifdef CANVAS_DEBUG + if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { + cerr << string_compose ("%1%7 %2 @ %7 render %5 @ %6 %3 items out of %4\n", + _canvas->render_indent(), (name.empty() ? string ("[unnamed]") : name), items.size(), _items.size(), area, _position, this, + whatami()); + } +#endif + + ++render_depth; + + for (std::vector::const_iterator i = items.begin(); i != items.end(); ++i) { + + if (!(*i)->visible ()) { +#ifdef CANVAS_DEBUG + if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { + cerr << _canvas->render_indent() << "Item " << (*i)->whatami() << " [" << (*i)->name << "] invisible - skipped\n"; + } +#endif + continue; + } + + boost::optional item_bbox = (*i)->bounding_box (); + + if (!item_bbox) { +#ifdef CANVAS_DEBUG + if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { + cerr << _canvas->render_indent() << "Item " << (*i)->whatami() << " [" << (*i)->name << "] empty - skipped\n"; + } +#endif + continue; + } + + Rect item = (*i)->item_to_window (item_bbox.get()); + boost::optional d = item.intersection (area); + + if (d) { + Rect draw = d.get(); + if (draw.width() && draw.height()) { +#ifdef CANVAS_DEBUG + if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { + if (dynamic_cast(*i) == 0) { + cerr << _canvas->render_indent() << "render " + << ' ' + << (*i) + << ' ' + << (*i)->whatami() + << ' ' + << (*i)->name + << " item " + << item_bbox.get() + << " window = " + << item + << " intersect = " + << draw + << " @ " + << _position + << endl; + } + } +#endif + + (*i)->render (area, context); + ++render_count; + } + + } else { + +#ifdef CANVAS_DEBUG + if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { + cerr << string_compose ("%1skip render of %2 %3, no intersection between %4 and %5\n", _canvas->render_indent(), (*i)->whatami(), + (*i)->name, item, area); + } +#endif + + } + } + + --render_depth; +} + void Item::add_child_bounding_boxes() const { diff --git a/libs/canvas/layout.cc b/libs/canvas/layout.cc deleted file mode 100644 index ca9f50d05e..0000000000 --- a/libs/canvas/layout.cc +++ /dev/null @@ -1,132 +0,0 @@ -/* - Copyright (C) 2011-2014 Paul Davis - Author: Carl Hetherington - - 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. -*/ - -#include "pbd/compose.h" - -#include "canvas/canvas.h" -#include "canvas/debug.h" -#include "canvas/layout.h" - -using namespace std; -using namespace PBD; -using namespace ArdourCanvas; - -Layout::Layout (Canvas* canvas) - : Container (canvas) -{ -} - -Layout::Layout (Item* parent) - : Container (parent) -{ -} - -Layout::Layout (Item* parent, Duple const & p) - : Container (parent, p) -{ -} - -/** @param area Area to draw in window coordinates. - * @param context Context, set up with its origin at this layout's position. - */ -void -Layout::render (Rect const & area, Cairo::RefPtr context) const -{ - ensure_lut (); - std::vector items = _lut->get (area); - -#ifdef CANVAS_DEBUG - if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { - cerr << string_compose ("%1GROUP %2 @ %7 render %5 @ %6 %3 items out of %4\n", - _canvas->render_indent(), (name.empty() ? string ("[unnamed]") : name), items.size(), _items.size(), area, _position, this); - } -#endif - - ++render_depth; - - for (std::vector::const_iterator i = items.begin(); i != items.end(); ++i) { - - if (!(*i)->visible ()) { -#ifdef CANVAS_DEBUG - if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { - cerr << _canvas->render_indent() << "Item " << (*i)->whatami() << " [" << (*i)->name << "] invisible - skipped\n"; - } -#endif - continue; - } - - boost::optional item_bbox = (*i)->bounding_box (); - - if (!item_bbox) { -#ifdef CANVAS_DEBUG - if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { - cerr << _canvas->render_indent() << "Item " << (*i)->whatami() << " [" << (*i)->name << "] empty - skipped\n"; - } -#endif - continue; - } - - Rect item = (*i)->item_to_window (item_bbox.get()); - boost::optional d = item.intersection (area); - - if (d) { - Rect draw = d.get(); - if (draw.width() && draw.height()) { -#ifdef CANVAS_DEBUG - if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { - if (dynamic_cast(*i) == 0) { - cerr << _canvas->render_indent() << "render " - << ' ' - << (*i) - << ' ' - << (*i)->whatami() - << ' ' - << (*i)->name - << " item " - << item_bbox.get() - << " window = " - << item - << " intersect = " - << draw - << " @ " - << _position - << endl; - } - } -#endif - - (*i)->render (area, context); - ++render_count; - } - - } else { - -#ifdef CANVAS_DEBUG - if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { - cerr << string_compose ("%1skip render of %2 %3, no intersection between %4 and %5\n", _canvas->render_indent(), (*i)->whatami(), - (*i)->name, item, area); - } -#endif - - } - } - - --render_depth; -} - diff --git a/libs/canvas/root_group.cc b/libs/canvas/root_group.cc index 015f52bb54..accbcb9b30 100644 --- a/libs/canvas/root_group.cc +++ b/libs/canvas/root_group.cc @@ -24,7 +24,7 @@ using namespace std; using namespace ArdourCanvas; Root::Root (Canvas* canvas) - : Layout (canvas) + : Container (canvas) { #ifdef CANVAS_DEBUG name = "ROOT"; @@ -34,7 +34,7 @@ Root::Root (Canvas* canvas) void Root::compute_bounding_box () const { - Layout::compute_bounding_box (); + Container::compute_bounding_box (); if (_bounding_box) { Rect r (_bounding_box.get()); diff --git a/libs/canvas/scroll_group.cc b/libs/canvas/scroll_group.cc index 15b607a564..df51df9ebb 100644 --- a/libs/canvas/scroll_group.cc +++ b/libs/canvas/scroll_group.cc @@ -28,13 +28,13 @@ using namespace std; using namespace ArdourCanvas; ScrollGroup::ScrollGroup (Canvas* c, ScrollSensitivity s) - : Layout (c) + : Container (c) , _scroll_sensitivity (s) { } ScrollGroup::ScrollGroup (Item* parent, ScrollSensitivity s) - : Layout (parent) + : Container (parent) , _scroll_sensitivity (s) { } @@ -61,7 +61,7 @@ ScrollGroup::render (Rect const & area, Cairo::RefPtr context) c context->rectangle (self.x0, self.y0, self.width(), self.height()); context->clip (); - Layout::render (area, context); + Container::render (area, context); context->restore (); } diff --git a/libs/canvas/wscript b/libs/canvas/wscript index c6e31cafd6..88ffc93dca 100644 --- a/libs/canvas/wscript +++ b/libs/canvas/wscript @@ -39,7 +39,6 @@ canvas_sources = [ 'fill.cc', 'flag.cc', 'image.cc', - 'layout.cc', 'line.cc', 'line_set.cc', 'lookup_table.cc', -- cgit v1.2.3