_stepping_axis_view = v;
}
- ArdourCanvas::Group* get_trackview_group () const { return _trackview_group; }
- ArdourCanvas::Group* get_time_bars_group () const;
- ArdourCanvas::Group* get_track_canvas_group () const;
+ ArdourCanvas::Group* get_trackview_group () const { return _trackview_group; }
+ ArdourCanvas::Group* get_hscroll_group () const { return h_scroll_group; }
+ ArdourCanvas::Group* get_vscroll_group () const { return v_scroll_group; }
+ ArdourCanvas::Group* get_hvscroll_group () const { return hv_scroll_group; }
+
ArdourCanvas::GtkCanvasViewport* get_track_canvas () const;
void override_visible_track_count ();
Gtk::EventBox time_bars_event_box;
Gtk::EventBox ruler_label_event_box;
- ArdourCanvas::Group *minsec_group;
ArdourCanvas::Pixbuf *logo_item;
+#if 0
+ /* these will be needed when we have canvas rulers */
+ ArdourCanvas::Group *minsec_group;
ArdourCanvas::Group *bbt_group;
ArdourCanvas::Group *timecode_group;
ArdourCanvas::Group *frame_group;
+#endif
+
ArdourCanvas::Group *tempo_group;
ArdourCanvas::Group *meter_group;
ArdourCanvas::Group *marker_group;
/* parent for groups which themselves contain time markers */
ArdourCanvas::Group* _time_markers_group;
- ArdourCanvas::Group* meter_bar_group;
- ArdourCanvas::Group* tempo_bar_group;
- ArdourCanvas::Group* marker_bar_group;
- ArdourCanvas::Group* range_marker_bar_group;
- ArdourCanvas::Group* transport_marker_bar_group;
- ArdourCanvas::Group* cd_marker_bar_group;
-
/* The group containing all other groups that are scrolled vertically
and horizontally.
*/
_track_canvas = _track_canvas_viewport->canvas ();
ArdourCanvas::ScrollGroup* hsg;
+ ArdourCanvas::ScrollGroup* hg;
+ ArdourCanvas::ScrollGroup* vg;
hv_scroll_group = hsg = new ArdourCanvas::ScrollGroup (_track_canvas->root(),
ArdourCanvas::ScrollGroup::ScrollSensitivity (ArdourCanvas::ScrollGroup::ScrollsVertically|
CANVAS_DEBUG_NAME (hv_scroll_group, "canvas hv scroll");
_track_canvas->add_scroller (*hsg);
+ v_scroll_group = vg = new ArdourCanvas::ScrollGroup (_track_canvas->root(), ArdourCanvas::ScrollGroup::ScrollsVertically);
+ CANVAS_DEBUG_NAME (v_scroll_group, "canvas v scroll");
+ _track_canvas->add_scroller (*vg);
+
+ h_scroll_group = hg = new ArdourCanvas::ScrollGroup (_track_canvas->root(), ArdourCanvas::ScrollGroup::ScrollsHorizontally);
+ CANVAS_DEBUG_NAME (h_scroll_group, "canvas h scroll");
+ _track_canvas->add_scroller (*hg);
+
_verbose_cursor = new VerboseCursor (this);
/* on the bottom, an image */
/* TIME BAR CANVAS */
- ArdourCanvas::ScrollGroup* hg;
-
- h_scroll_group = hg = new ArdourCanvas::ScrollGroup (_track_canvas->root(), ArdourCanvas::ScrollGroup::ScrollsHorizontally);
- CANVAS_DEBUG_NAME (h_scroll_group, "canvas h scroll");
- _track_canvas->add_scroller (*hg);
-
- meter_bar_group = new ArdourCanvas::Group (h_scroll_group);
- meter_bar = new ArdourCanvas::Rectangle (meter_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
- CANVAS_DEBUG_NAME (meter_bar, "meter Bar");
- meter_bar->set_outline_what (ArdourCanvas::Rectangle::BOTTOM);
-
- tempo_bar_group = new ArdourCanvas::Group (h_scroll_group);
- tempo_bar = new ArdourCanvas::Rectangle (tempo_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
- CANVAS_DEBUG_NAME (tempo_bar, "Tempo Bar");
- tempo_bar->set_outline_what (ArdourCanvas::Rectangle::BOTTOM);
-
- range_marker_bar_group = new ArdourCanvas::Group (h_scroll_group);
- range_marker_bar = new ArdourCanvas::Rectangle (range_marker_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
- CANVAS_DEBUG_NAME (range_marker_bar, "Range Marker Bar");
- range_marker_bar->set_outline_what (ArdourCanvas::Rectangle::BOTTOM);
-
- transport_marker_bar_group = new ArdourCanvas::Group (h_scroll_group);
- transport_marker_bar = new ArdourCanvas::Rectangle (transport_marker_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
- CANVAS_DEBUG_NAME (transport_marker_bar, "transport Marker Bar");
- transport_marker_bar->set_outline_what (ArdourCanvas::Rectangle::BOTTOM);
-
- marker_bar_group = new ArdourCanvas::Group (h_scroll_group);
- marker_bar = new ArdourCanvas::Rectangle (marker_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
- CANVAS_DEBUG_NAME (marker_bar, "Marker Bar");
- marker_bar->set_outline_what (ArdourCanvas::Rectangle::BOTTOM);
-
- cd_marker_bar_group = new ArdourCanvas::Group (h_scroll_group);
- cd_marker_bar = new ArdourCanvas::Rectangle (cd_marker_bar_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
- CANVAS_DEBUG_NAME (cd_marker_bar, "CD Marker Bar");
- cd_marker_bar->set_outline_what (ArdourCanvas::Rectangle::BOTTOM);
-
_time_markers_group = new ArdourCanvas::Group (h_scroll_group);
+ CANVAS_DEBUG_NAME (_time_markers_group, "time bars");
cd_marker_group = new ArdourCanvas::Group (_time_markers_group, ArdourCanvas::Duple (0.0, 0.0));
CANVAS_DEBUG_NAME (cd_marker_group, "cd marker group");
meter_group = new ArdourCanvas::Group (_time_markers_group, ArdourCanvas::Duple (0.0, (timebar_height * 5.0) + 1.0));
CANVAS_DEBUG_NAME (meter_group, "meter group");
- ARDOUR_UI::instance()->video_timeline = new VideoTimeLine(this, videotl_group, (timebar_height * videotl_bar_height));
+ meter_bar = new ArdourCanvas::Rectangle (meter_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
+ CANVAS_DEBUG_NAME (meter_bar, "meter Bar");
+ meter_bar->set_outline_what (ArdourCanvas::Rectangle::BOTTOM);
+
+ tempo_bar = new ArdourCanvas::Rectangle (tempo_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
+ CANVAS_DEBUG_NAME (tempo_bar, "Tempo Bar");
+ tempo_bar->set_outline_what (ArdourCanvas::Rectangle::BOTTOM);
+ range_marker_bar = new ArdourCanvas::Rectangle (range_marker_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
+ CANVAS_DEBUG_NAME (range_marker_bar, "Range Marker Bar");
+ range_marker_bar->set_outline_what (ArdourCanvas::Rectangle::BOTTOM);
+
+ transport_marker_bar = new ArdourCanvas::Rectangle (transport_marker_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
+ CANVAS_DEBUG_NAME (transport_marker_bar, "transport Marker Bar");
+ transport_marker_bar->set_outline_what (ArdourCanvas::Rectangle::BOTTOM);
+
+ marker_bar = new ArdourCanvas::Rectangle (marker_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
+ CANVAS_DEBUG_NAME (marker_bar, "Marker Bar");
+ marker_bar->set_outline_what (ArdourCanvas::Rectangle::BOTTOM);
+
+ cd_marker_bar = new ArdourCanvas::Rectangle (cd_marker_group, ArdourCanvas::Rect (0.0, 0.0, ArdourCanvas::COORD_MAX, timebar_height));
+ CANVAS_DEBUG_NAME (cd_marker_bar, "CD Marker Bar");
+ cd_marker_bar->set_outline_what (ArdourCanvas::Rectangle::BOTTOM);
+
+ ARDOUR_UI::instance()->video_timeline = new VideoTimeLine(this, videotl_group, (timebar_height * videotl_bar_height));
+
cd_marker_bar_drag_rect = new ArdourCanvas::Rectangle (cd_marker_group, ArdourCanvas::Rect (0.0, 0.0, 100, timebar_height));
CANVAS_DEBUG_NAME (cd_marker_bar_drag_rect, "cd marker drag");
cd_marker_bar_drag_rect->set_outline (false);
if (autoscroll_vertical_allowed) {
const double vertical_pos = vertical_adjustment.get_value();
- double new_pixel = vertical_pos;
const int speed_factor = 20;
/* vertical */
return y;
}
-ArdourCanvas::Group*
-Editor::get_time_bars_group () const
-{
- return h_scroll_group;
-}
-
-ArdourCanvas::Group*
-Editor::get_track_canvas_group() const
-{
- return hv_scroll_group;
-}
-
ArdourCanvas::GtkCanvasViewport*
Editor::get_track_canvas() const
{
EditorCursor::EditorCursor (Editor& ed, bool (Editor::*callbck)(GdkEvent*,ArdourCanvas::Item*))
: _editor (ed)
- , _track_canvas_item (new ArdourCanvas::Arrow (_editor.get_track_canvas_group()))
+ , _track_canvas_item (new ArdourCanvas::Arrow (_editor.get_hscroll_group()))
, _length (1.0)
{
CANVAS_DEBUG_NAME (_track_canvas_item, "track canvas editor cursor");
if (x >= 0 && y >= 0) {
vector<ArdourCanvas::Item const *> items;
+
+ /* Note how we choose a specific scroll group to get
+ * items from. This could be problematic.
+ */
- get_track_canvas_group()->add_items_at_point (ArdourCanvas::Duple (x,y), items);
+ hv_scroll_group->add_items_at_point (ArdourCanvas::Duple (x,y), items);
// first item will be the upper most
if (tbpos != old_unit_pos) {
meter_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
}
- old_unit_pos = meter_bar_group->position().y;
- if (tbgpos != old_unit_pos) {
- meter_bar_group->move (ArdourCanvas::Duple (0.0, tbgpos - old_unit_pos));
- }
- meter_bar_group->show();
meter_group->show();
meter_label.show();
tbpos += timebar_height;
tbgpos += timebar_height;
visible_timebars++;
} else {
- meter_bar_group->hide();
meter_group->hide();
meter_label.hide();
}
if (tbpos != old_unit_pos) {
tempo_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
}
- old_unit_pos = tempo_bar_group->position().y;
- if (tbgpos != old_unit_pos) {
- tempo_bar_group->move (ArdourCanvas::Duple (0.0, tbgpos - old_unit_pos));
- }
- tempo_bar_group->show();
tempo_group->show();
tempo_label.show();
tbpos += timebar_height;
tbgpos += timebar_height;
visible_timebars++;
} else {
- tempo_bar_group->hide();
tempo_group->hide();
tempo_label.hide();
}
if (tbpos != old_unit_pos) {
range_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
}
- old_unit_pos = range_marker_bar_group->position().y;
- if (tbgpos != old_unit_pos) {
- range_marker_bar_group->move (ArdourCanvas::Duple (0.0, tbgpos - old_unit_pos));
- }
- range_marker_bar_group->show();
range_marker_group->show();
range_mark_label.show();
tbgpos += timebar_height;
visible_timebars++;
} else {
- range_marker_bar_group->hide();
range_marker_group->hide();
range_mark_label.hide();
}
if (tbpos != old_unit_pos) {
transport_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
}
- old_unit_pos = transport_marker_bar_group->position().y;
- if (tbgpos != old_unit_pos) {
- transport_marker_bar_group->move (ArdourCanvas::Duple (0.0, tbgpos - old_unit_pos));
- }
- transport_marker_bar_group->show();
transport_marker_group->show();
transport_mark_label.show();
tbpos += timebar_height;
tbgpos += timebar_height;
visible_timebars++;
} else {
- transport_marker_bar_group->hide();
transport_marker_group->hide();
transport_mark_label.hide();
}
if (tbpos != old_unit_pos) {
cd_marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
}
- old_unit_pos = cd_marker_bar_group->position().y;
- if (tbgpos != old_unit_pos) {
- cd_marker_bar_group->move (ArdourCanvas::Duple (0.0, tbgpos - old_unit_pos));
- }
- cd_marker_bar_group->show();
cd_marker_group->show();
cd_mark_label.show();
tbpos += timebar_height;
// make sure all cd markers show up in their respective places
update_cd_marker_display();
} else {
- cd_marker_bar_group->hide();
cd_marker_group->hide();
cd_mark_label.hide();
// make sure all cd markers show up in their respective places
if (tbpos != old_unit_pos) {
marker_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
}
- old_unit_pos = marker_bar_group->position().y;
- if (tbgpos != old_unit_pos) {
- marker_bar_group->move (ArdourCanvas::Duple (0.0, tbgpos - old_unit_pos));
- }
- marker_bar_group->show();
marker_group->show();
mark_label.show();
tbpos += timebar_height;
tbgpos += timebar_height;
visible_timebars++;
} else {
- marker_bar_group->hide();
marker_group->hide();
mark_label.hide();
}
if (tbpos != old_unit_pos) {
videotl_group->move (ArdourCanvas::Duple (0.0, tbpos - old_unit_pos));
}
- old_unit_pos = videotl_group->position().y;
- if (tbgpos != old_unit_pos) {
- videotl_group->move (ArdourCanvas::Duple (0.0, tbgpos - old_unit_pos));
- }
- videotl_group->show();
videotl_group->show();
videotl_label.show();
tbpos += timebar_height * videotl_bar_height;
visible_timebars+=videotl_bar_height;
queue_visual_videotimeline_update();
} else {
- videotl_group->hide();
videotl_group->hide();
videotl_label.hide();
update_video_timeline(true);
ruler_label_vbox.set_size_request (-1, (int)(timebar_height * visible_rulers));
time_canvas_vbox.set_size_request (-1,-1);
+ std::cerr << "place HV group at " << timebar_height * visible_timebars << std::endl;
+
+ hv_scroll_group->set_y_position (timebar_height * visible_timebars);
+
compute_fixed_ruler_scale ();
update_fixed_rulers();
redisplay_tempo (false);
#endif
virtual ArdourCanvas::Group* get_trackview_group () const = 0;
- virtual ArdourCanvas::Group* get_time_bars_group () const = 0;
- virtual ArdourCanvas::Group* get_track_canvas_group () const = 0;
+ virtual ArdourCanvas::Group* get_hscroll_group () const = 0;
+ virtual ArdourCanvas::Group* get_vscroll_group () const = 0;
+ virtual ArdourCanvas::Group* get_hvscroll_group () const = 0;
virtual ArdourCanvas::GtkCanvasViewport* get_track_canvas() const = 0;
, _xoffset (0)
, _yoffset (0)
{
- _canvas_item = new ArdourCanvas::Text (_editor->get_track_canvas_group());
+ _canvas_item = new ArdourCanvas::Text (_editor->get_hscroll_group());
CANVAS_DEBUG_NAME (_canvas_item, "verbose canvas cursor");
_canvas_item->set_ignore_events (true);
_canvas_item->set_font_description (get_font_for_style (N_("VerboseCanvasCursor")));