-void
-Editor::initialize_canvas ()
-{
- ArdourCanvas::init ();
-
- /* adjust sensitivity for "picking" items */
-
- // GNOME_CANVAS(track_canvas)->close_enough = 2;
-
- track_canvas.signal_event().connect (bind (mem_fun (*this, &Editor::track_canvas_event), (ArdourCanvas::Item*) 0));
- track_canvas.set_name ("EditorMainCanvas");
- track_canvas.add_events (Gdk::POINTER_MOTION_HINT_MASK);
- track_canvas.signal_leave_notify_event().connect (mem_fun(*this, &Editor::left_track_canvas));
-
- /* set up drag-n-drop */
- vector<Gtk::TargetEntry> target_table;
-
- target_table.push_back (TargetEntry ("STRING"));
- target_table.push_back (TargetEntry ("text/plain"));
- target_table.push_back (TargetEntry ("text/uri-list"));
- target_table.push_back (TargetEntry ("application/x-rootwin-drop"));
-
- // GTK2FIX
- // track_canvas.drag_dest_set (target_table, DEST_DEFAULT_ALL, GdkDragAction (Gdk::ACTION_COPY|Gdk::ACTION_MOVE));
- // track_canvas.signal_drag_data_received().connect (mem_fun(*this, &Editor::track_canvas_drag_data_received));
-
- /* stuff for the verbose canvas cursor */
-
- Pango::FontDescription font = get_font_for_style (N_("VerboseCanvasCursor"));
-
- verbose_canvas_cursor = new ArdourCanvas::Text (*track_canvas.root());
- verbose_canvas_cursor->set_property ("font_desc", font);
- // GTK2FIX
- // verbose_canvas_cursor->set_property ("anchor", GTK_ANCHOR_NW);
- verbose_canvas_cursor->set_property ("fill_color_rgba", color_map[cVerboseCanvasCursor]);
-
- verbose_cursor_visible = false;
-
- /* a group to hold time (measure) lines */
-
- time_line_group = new ArdourCanvas::Group (*track_canvas.root(), 0.0, 0.0);
- cursor_group = new ArdourCanvas::Group (*track_canvas.root(), 0.0, 0.0);
-
- time_canvas.set_name ("EditorTimeCanvas");
- time_canvas.add_events (Gdk::POINTER_MOTION_HINT_MASK);
-
- meter_group = new ArdourCanvas::Group (*time_canvas.root(), 0.0, 0.0);
- tempo_group = new ArdourCanvas::Group (*time_canvas.root(), 0.0, 0.0);
- marker_group = new ArdourCanvas::Group (*time_canvas.root(), 0.0, timebar_height * 2.0);
- range_marker_group = new ArdourCanvas::Group (*time_canvas.root(), 0.0, timebar_height * 3.0);
- transport_marker_group = new ArdourCanvas::Group (*time_canvas.root(), 0.0, timebar_height * 4.0);
-
- tempo_bar = new ArdourCanvas::SimpleRect (*tempo_group, 0.0, 0.0, max_canvas_coordinate, timebar_height);
- tempo_bar->set_property ("fill_color_rgba", color_map[cTempoBar]);
- tempo_bar->set_property ("outline_pixels", 0);
-
- meter_bar = new ArdourCanvas::SimpleRect (*meter_group, 0.0, 0.0, max_canvas_coordinate, timebar_height);
- meter_bar->set_property ("fill_color_rgba", color_map[cMeterBar]);
- meter_bar->set_property ("outline_pixels",0);
-
- marker_bar = new ArdourCanvas::SimpleRect (*marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height);
- marker_bar->set_property ("fill_color_rgba", color_map[cMarkerBar]);
- marker_bar->set_property ("outline_pixels", 0);
-
- range_marker_bar = new ArdourCanvas::SimpleRect (*range_marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height);
- range_marker_bar->set_property ("fill_color_rgba", color_map[cRangeMarkerBar]);
- range_marker_bar->set_property ("outline_pixels", 0);
-
- transport_marker_bar = new ArdourCanvas::SimpleRect (*transport_marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height);
- transport_marker_bar->set_property ("fill_color_rgba", color_map[cTransportMarkerBar]);
- transport_marker_bar->set_property ("outline_pixels", 0);
-
- range_bar_drag_rect = new ArdourCanvas::SimpleRect (*range_marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height);
- range_bar_drag_rect->set_property ("fill_color_rgba", color_map[cRangeDragBarRectFill]);
- range_bar_drag_rect->set_property ("outline_color_rgba", color_map[cRangeDragBarRect]);
- range_bar_drag_rect->set_property ("outline_pixels", 0);
- range_bar_drag_rect->hide ();
-
- transport_bar_drag_rect = new ArdourCanvas::SimpleRect (*transport_marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height);
- transport_bar_drag_rect ->set_property ("fill_color_rgba", color_map[cTransportDragRectFill]);
- transport_bar_drag_rect->set_property ("outline_color_rgba", color_map[cTransportDragRect]);
- transport_bar_drag_rect->set_property ("outline_pixels", 0);
- transport_bar_drag_rect->hide ();
-
- marker_drag_line_points.push_back(Gnome::Art::Point(0.0, 0.0));
- marker_drag_line_points.push_back(Gnome::Art::Point(0.0, 0.0));
-
- marker_drag_line = new ArdourCanvas::Line (*track_canvas.root());
- marker_drag_line->set_property ("width_pixels", 1);
- marker_drag_line->set_property("fill_color_rgba", color_map[cMarkerDragLine]);
- marker_drag_line->set_property("points", marker_drag_line_points);
- marker_drag_line->hide();
-
- range_marker_drag_rect = new ArdourCanvas::SimpleRect (*track_canvas.root(), 0.0, 0.0, 0.0, 0.0);
- range_marker_drag_rect->set_property ("fill_color_rgba", color_map[cRangeDragRectFill]);
- range_marker_drag_rect->set_property ("outline_color_rgba", color_map[cRangeDragRect]);
- range_marker_drag_rect->hide ();
-
- transport_loop_range_rect = new ArdourCanvas::SimpleRect (*time_line_group, 0.0, 0.0, 0.0, 0.0);
- transport_loop_range_rect->set_property ("fill_color_rgba", color_map[cTransportLoopRectFill]);
- transport_loop_range_rect->set_property ("outline_color_rgba", color_map[cTransportLoopRect]);
- transport_loop_range_rect->set_property ("outline_pixels", 1);
- transport_loop_range_rect->hide();
-
- transport_punch_range_rect = new ArdourCanvas::SimpleRect (*time_line_group, 0.0, 0.0, 0.0, 0.0);
- transport_punch_range_rect->set_property ("fill_color_rgba", color_map[cTransportPunchRectFill]);
- transport_punch_range_rect->set_property ("outline_color_rgba", color_map[cTransportPunchRect]);
- transport_punch_range_rect->set_property ("outline_pixels", 0);
- transport_punch_range_rect->hide();
-
- transport_loop_range_rect->lower_to_bottom (); // loop on the bottom
-
- transport_punchin_line = new ArdourCanvas::SimpleLine (*time_line_group);
- transport_punchin_line->set_property ("x1", 0.0);
- transport_punchin_line->set_property ("y1", 0.0);
- transport_punchin_line->set_property ("x2", 0.0);
- transport_punchin_line->set_property ("y2", 0.0);
- transport_punchin_line->property_color_rgba().set_value (color_map[cPunchInLine]);
- transport_punchin_line->hide ();
-
- transport_punchout_line = new ArdourCanvas::SimpleLine (*time_line_group);
- transport_punchout_line->set_property ("x1", 0.0);
- transport_punchout_line->set_property ("y1", 0.0);
- transport_punchout_line->set_property ("x2", 0.0);
- transport_punchout_line->set_property ("y2", 0.0);
- transport_punchout_line->property_color_rgba().set_value (color_map[cPunchOutLine]);
- transport_punchout_line->hide();
-
- // used to show zoom mode active zooming
- zoom_rect = new ArdourCanvas::SimpleRect (*track_canvas.root(), 0.0, 0.0, 0.0, 0.0);
- zoom_rect->set_property ("fill_color_rgba", color_map[cZoomRectFill]);
- zoom_rect->set_property ("outline_color_rgba", color_map[cZoomRect]);
- zoom_rect->set_property ("outline_pixels", 1);
- zoom_rect->hide();
-
- zoom_rect->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_zoom_rect_event), (ArdourCanvas::Item*) 0));
-
- // used as rubberband rect
- rubberband_rect = new ArdourCanvas::SimpleRect (*track_canvas.root(), 0.0, 0.0, 0.0, 0.0);
- rubberband_rect->set_property ("outline_color_rgba", color_map[cRubberBandRect]);
- rubberband_rect->set_property ("fill_color_rgba", (guint32) color_map[cRubberBandRectFill]);
- rubberband_rect->set_property ("outline_pixels", 1);
- rubberband_rect->hide();
-
- tempo_bar->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_tempo_bar_event), tempo_bar));
- meter_bar->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_meter_bar_event), meter_bar));
- marker_bar->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_marker_bar_event), marker_bar));
- range_marker_bar->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_range_marker_bar_event), range_marker_bar));
- transport_marker_bar->signal_event().connect (bind (mem_fun (*this, &Editor::canvas_transport_marker_bar_event), transport_marker_bar));
-
- /* separator lines */
-
- tempo_line_points.push_back(Gnome::Art::Point(0, timebar_height));
- tempo_line_points.push_back(Gnome::Art::Point(max_canvas_coordinate, timebar_height));
-
- tempo_line = new ArdourCanvas::Line (*tempo_group, tempo_line_points);
- tempo_line->set_property ("width_pixels", 0);
- tempo_line->set_property ("fill_color", Gdk::Color ("#000000"));
-
- meter_line_points.push_back(Gnome::Art::Point (0, timebar_height));
- meter_line_points.push_back(Gnome::Art::Point(max_canvas_coordinate, timebar_height));
-
- meter_line = new ArdourCanvas::Line (*meter_group, meter_line_points);
- meter_line->set_property ("width_pixels", 0);
- meter_line->set_property ("fill_color", Gdk::Color ("#000000"));
-
- marker_line_points.push_back(Gnome::Art::Point (0, timebar_height));
- marker_line_points.push_back(Gnome::Art::Point(max_canvas_coordinate, timebar_height));
-
- marker_line = new ArdourCanvas::Line (*marker_group, marker_line_points);
- marker_line->set_property ("width_pixels", 0);
- marker_line->set_property ("fill_color", Gdk::Color ("#000000"));
-
- range_marker_line = new ArdourCanvas::Line (*range_marker_group, marker_line_points);
- range_marker_line->set_property ("width_pixels", 0);
- range_marker_line->set_property ("fill_color", Gdk::Color ("#000000"));
-
- transport_marker_line = new ArdourCanvas::Line (*transport_marker_group, marker_line_points);
- transport_marker_line->set_property ("width_pixels", 0);
- transport_marker_line->set_property ("fill_color", Gdk::Color ("#000000"));
-
- ZoomChanged.connect (bind (mem_fun(*this, &Editor::update_loop_range_view), false));
- ZoomChanged.connect (bind (mem_fun(*this, &Editor::update_punch_range_view), false));
-
- double time_height = timebar_height * 5;
- double time_width = FLT_MAX/frames_per_unit;
- time_canvas.set_scroll_region(0.0, 0.0, time_width, time_height);
-
- edit_cursor = new Cursor (*this, "blue", &Editor::canvas_edit_cursor_event);
- playhead_cursor = new Cursor (*this, "red", &Editor::canvas_playhead_cursor_event);
-
- track_canvas.signal_size_allocate().connect (mem_fun(*this, &Editor::track_canvas_allocate));
-}
-