-void
-Editor::initialize_canvas ()
-{
- gnome_canvas_init ();
-
- track_gnome_canvas = gnome_canvas_new_aa ();
-
- /* adjust sensitivity for "picking" items */
-
- // GNOME_CANVAS(track_gnome_canvas)->close_enough = 2;
-
- gtk_signal_connect (GTK_OBJECT(gnome_canvas_root (GNOME_CANVAS(track_gnome_canvas))), "event",
- (GtkSignalFunc) Editor::_track_canvas_event, this);
- track_canvas = wrap (track_gnome_canvas);
- track_canvas->set_name ("EditorMainCanvas");
-
- track_canvas->add_events (Gdk::POINTER_MOTION_HINT_MASK);
-
- track_canvas->leave_notify_event.connect (mem_fun(*this, &Editor::left_track_canvas));
-
- /* set up drag-n-drop */
-
- track_canvas->drag_dest_set (GTK_DEST_DEFAULT_ALL,
- target_table, n_targets - 1,
- GdkDragAction (Gdk::ACTION_COPY|Gdk::ACTION_MOVE));
- track_canvas->drag_data_received.connect (mem_fun(*this, &Editor::track_canvas_drag_data_received));
-
- /* stuff for the verbose canvas cursor */
-
- string fontname = get_font_for_style (N_("VerboseCanvasCursor"));
-
- verbose_canvas_cursor = gnome_canvas_item_new (gnome_canvas_root(GNOME_CANVAS(track_gnome_canvas)),
- gnome_canvas_text_get_type(),
- "font", fontname.c_str(),
- "anchor", GTK_ANCHOR_NW,
- "fill_color_rgba", color_map[cVerboseCanvasCursor],
- NULL);
- verbose_cursor_visible = false;
-
- /* a group to hold time (measure) lines */
-
- time_line_group = gnome_canvas_item_new (gnome_canvas_root(GNOME_CANVAS(track_gnome_canvas)),
- gnome_canvas_group_get_type(),
- "x", 0.0,
- "y", 0.0,
- NULL);
-
- cursor_group = gnome_canvas_item_new (gnome_canvas_root(GNOME_CANVAS(track_gnome_canvas)),
- gnome_canvas_group_get_type(),
- "x", 0.0,
- "y", 0.0,
- NULL);
-
- time_gnome_canvas = gnome_canvas_new_aa ();
- time_canvas = wrap (time_gnome_canvas);
- time_canvas->set_name ("EditorTimeCanvas");
-
- time_canvas->add_events (Gdk::POINTER_MOTION_HINT_MASK);
-
- meter_group = gnome_canvas_item_new (gnome_canvas_root(GNOME_CANVAS(time_gnome_canvas)),
- gnome_canvas_group_get_type(),
- "x", 0.0,
- "y", 0.0,
- NULL);
- tempo_group = gnome_canvas_item_new (gnome_canvas_root(GNOME_CANVAS(time_gnome_canvas)),
- gnome_canvas_group_get_type(),
- "x", 0.0,
- "y", timebar_height,
- NULL);
- marker_group = gnome_canvas_item_new (gnome_canvas_root(GNOME_CANVAS(time_gnome_canvas)),
- gnome_canvas_group_get_type(),
- "x", 0.0,
- "y", timebar_height * 2.0,
- NULL);
- range_marker_group = gnome_canvas_item_new (gnome_canvas_root(GNOME_CANVAS(time_gnome_canvas)),
- gnome_canvas_group_get_type(),
- "x", 0.0,
- "y", timebar_height * 3.0,
- NULL);
- transport_marker_group = gnome_canvas_item_new (gnome_canvas_root(GNOME_CANVAS(time_gnome_canvas)),
- gnome_canvas_group_get_type(),
- "x", 0.0,
- "y", timebar_height * 4.0,
- NULL);
-
- tempo_bar = gnome_canvas_item_new (GNOME_CANVAS_GROUP(tempo_group),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", max_canvas_coordinate,
- "y2", timebar_height,
- "fill_color_rgba", color_map[cTempoBar],
- "outline_pixels", 0,
- NULL);
- meter_bar = gnome_canvas_item_new (GNOME_CANVAS_GROUP(meter_group),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", max_canvas_coordinate,
- "y2", timebar_height,
- "fill_color_rgba", color_map[cMeterBar],
- "outline_pixels", 0,
- NULL);
- marker_bar = gnome_canvas_item_new (GNOME_CANVAS_GROUP(marker_group),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", max_canvas_coordinate,
- "y2", timebar_height,
- "fill_color_rgba", color_map[cMarkerBar],
- "outline_pixels", 0,
- NULL);
- range_marker_bar = gnome_canvas_item_new (GNOME_CANVAS_GROUP(range_marker_group),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", max_canvas_coordinate,
- "y2", timebar_height,
- "fill_color_rgba", color_map[cRangeMarkerBar],
- "outline_pixels", 0,
- NULL);
- transport_marker_bar = gnome_canvas_item_new (GNOME_CANVAS_GROUP(transport_marker_group),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", max_canvas_coordinate,
- "y2", timebar_height,
- "fill_color_rgba", color_map[cTransportMarkerBar],
- "outline_pixels", 0,
- NULL);
-
- range_bar_drag_rect = gnome_canvas_item_new (GNOME_CANVAS_GROUP(range_marker_group),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", 0.0,
- "y2", timebar_height,
- "fill_color_rgba", color_map[cRangeDragBarRectFill],
- "outline_color_rgba", color_map[cRangeDragBarRect],
- NULL);
- gnome_canvas_item_hide (range_bar_drag_rect);
-
- transport_bar_drag_rect = gnome_canvas_item_new (GNOME_CANVAS_GROUP(transport_marker_group),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", 0.0,
- "y2", timebar_height,
- "fill_color_rgba", color_map[cTransportDragRectFill],
- "outline_color_rgba", color_map[cTransportDragRect],
- NULL);
- gnome_canvas_item_hide (transport_bar_drag_rect);
-
-
- marker_drag_line_points = gnome_canvas_points_new (2);
- marker_drag_line_points->coords[0] = 0.0;
- marker_drag_line_points->coords[1] = 0.0;
- marker_drag_line_points->coords[2] = 0.0;
- marker_drag_line_points->coords[3] = 0.0;
-
-
- //cerr << "set mdl points, nc = " << marker_drag_line_points->num_points << endl;
- marker_drag_line = gnome_canvas_item_new (gnome_canvas_root(GNOME_CANVAS(track_gnome_canvas)),
- gnome_canvas_line_get_type(),
- "width_pixels", 1,
- "fill_color_rgba", color_map[cMarkerDragLine],
- "points", marker_drag_line_points,
- NULL);
- gnome_canvas_item_hide (marker_drag_line);
-
- range_marker_drag_rect = gnome_canvas_item_new (gnome_canvas_root(GNOME_CANVAS(track_gnome_canvas)),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", 0.0,
- "y2", 0.0,
- "fill_color_rgba", color_map[cRangeDragRectFill],
- "outline_color_rgba", color_map[cRangeDragRect],
- NULL);
- gnome_canvas_item_hide (range_marker_drag_rect);
-
-
- transport_loop_range_rect = gnome_canvas_item_new ((GNOME_CANVAS_GROUP(time_line_group)),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", 0.0,
- "y2", 0.0,
- "fill_color_rgba", color_map[cTransportLoopRectFill],
- "outline_color_rgba", color_map[cTransportLoopRect],
- "outline_pixels", 1,
- NULL);
- gnome_canvas_item_hide (transport_loop_range_rect);
-
- transport_punch_range_rect = gnome_canvas_item_new ((GNOME_CANVAS_GROUP(time_line_group)),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", 0.0,
- "y2", 0.0,
- "fill_color_rgba", color_map[cTransportPunchRectFill],
- "outline_color_rgba", color_map[cTransportPunchRect],
- "outline_pixels", 0,
- NULL);
- gnome_canvas_item_lower_to_bottom (transport_punch_range_rect);
- gnome_canvas_item_lower_to_bottom (transport_loop_range_rect); // loop on the bottom
- gnome_canvas_item_hide (transport_punch_range_rect);
-
- transport_punchin_line = gnome_canvas_item_new ((GNOME_CANVAS_GROUP(time_line_group)),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", 0.0,
- "y2", 0.0,
- "outline_color_rgba", color_map[cPunchInLine],
- "outline_pixels", 1,
- NULL);
- gnome_canvas_item_hide (transport_punchin_line);
-
- transport_punchout_line = gnome_canvas_item_new ((GNOME_CANVAS_GROUP(time_line_group)),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", 0.0,
- "y2", 0.0,
- "outline_color_rgba", color_map[cPunchOutLine],
- "outline_pixels", 1,
- NULL);
- gnome_canvas_item_hide (transport_punchout_line);
-
-
-
-
- // used to show zoom mode active zooming
- zoom_rect = gnome_canvas_item_new (gnome_canvas_root(GNOME_CANVAS(track_gnome_canvas)),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", 0.0,
- "y2", 0.0,
- "fill_color_rgba", color_map[cZoomRectFill],
- "outline_color_rgba", color_map[cZoomRect],
- "outline_pixels", 1,
- NULL);
- gnome_canvas_item_hide (zoom_rect);
- gtk_signal_connect (GTK_OBJECT(zoom_rect), "event",
- (GtkSignalFunc) PublicEditor::canvas_zoom_rect_event,
- this);
-
- // used as rubberband rect
- rubberband_rect = gnome_canvas_item_new (gnome_canvas_root(GNOME_CANVAS(track_gnome_canvas)),
- gnome_canvas_simplerect_get_type(),
- "x1", 0.0,
- "y1", 0.0,
- "x2", 0.0,
- "y2", 0.0,
- "outline_color_rgba", color_map[cRubberBandRect],
- "fill_color_rgba", (guint32) color_map[cRubberBandRectFill],
- "outline_pixels", 1,
- NULL);
- gnome_canvas_item_hide (rubberband_rect);
-
-
-
- gtk_signal_connect (GTK_OBJECT(tempo_bar), "event",
- (GtkSignalFunc) PublicEditor::canvas_tempo_bar_event,
- this);
-
- gtk_signal_connect (GTK_OBJECT(meter_bar), "event",
- (GtkSignalFunc) PublicEditor::canvas_meter_bar_event,
- this);
-
- gtk_signal_connect (GTK_OBJECT(marker_bar), "event",
- (GtkSignalFunc) PublicEditor::canvas_marker_bar_event,
- this);
-
- gtk_signal_connect (GTK_OBJECT(range_marker_bar), "event",
- (GtkSignalFunc) PublicEditor::canvas_range_marker_bar_event,
- this);
-
- gtk_signal_connect (GTK_OBJECT(transport_marker_bar), "event",
- (GtkSignalFunc) PublicEditor::canvas_transport_marker_bar_event,
- this);
-
- /* separator lines */
-
- tempo_line_points = gnome_canvas_points_new (2);
- tempo_line_points->coords[0] = 0;
- tempo_line_points->coords[1] = timebar_height;
- tempo_line_points->coords[2] = max_canvas_coordinate;
- tempo_line_points->coords[3] = timebar_height;
- //cerr << "set tl points, nc = " << tempo_line_points->num_points << endl;
- tempo_line = gnome_canvas_item_new (GNOME_CANVAS_GROUP(tempo_group),
- gnome_canvas_line_get_type(),
- "width_pixels", 0,
- "fill_color", "black",
- "points", tempo_line_points,
- NULL);
-
- // cerr << "tempo line @ " << tempo_line << endl;
-
- meter_line_points = gnome_canvas_points_new (2);
- meter_line_points->coords[0] = 0;
- meter_line_points->coords[1] = timebar_height;
- meter_line_points->coords[2] = max_canvas_coordinate;
- meter_line_points->coords[3] = timebar_height;
- // cerr << "set ml points, nc = " << tempo_line_points->num_points << endl;
- meter_line = gnome_canvas_item_new (GNOME_CANVAS_GROUP(meter_group),
- gnome_canvas_line_get_type(),
- "width_pixels", 0,
- "fill_color", "black",
- "points", meter_line_points,
- NULL);
-
- // cerr << "meter line @ " << tempo_line << endl;
-
- marker_line_points = gnome_canvas_points_new (2);
- marker_line_points->coords[0] = 0;
- marker_line_points->coords[1] = timebar_height;
- marker_line_points->coords[2] = max_canvas_coordinate;
- marker_line_points->coords[3] = timebar_height;
- // cerr << "set ml2 points, nc = " << marker_line_points->num_points << endl;
- marker_line = gnome_canvas_item_new (GNOME_CANVAS_GROUP(marker_group),
- gnome_canvas_line_get_type(),
- "width_pixels", 0,
- "fill_color", "black",
- "points", marker_line_points,
- NULL);
- // cerr << "set rml points, nc = " << marker_line_points->num_points << endl;
- range_marker_line = gnome_canvas_item_new (GNOME_CANVAS_GROUP(range_marker_group),
- gnome_canvas_line_get_type(),
- "width_pixels", 0,
- "fill_color", "black",
- "points", marker_line_points,
- NULL);
- // cerr << "set tml2 points, nc = " << marker_line_points->num_points << endl;
- transport_marker_line = gnome_canvas_item_new (GNOME_CANVAS_GROUP(transport_marker_group),
- gnome_canvas_line_get_type(),
- "width_pixels", 0,
- "fill_color", "black",
- "points", marker_line_points,
- NULL);
-
- // cerr << "marker line @ " << marker_line << endl;
-
- 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;
- gnome_canvas_set_scroll_region (GNOME_CANVAS(time_gnome_canvas), 0.0, 0.0, time_width, time_height);
-
- edit_cursor = new Cursor (*this, "blue", (GtkSignalFunc) _canvas_edit_cursor_event);
- playhead_cursor = new Cursor (*this, "red", (GtkSignalFunc) _canvas_playhead_cursor_event);
-
- track_canvas->size_allocate.connect (mem_fun(*this, &Editor::track_canvas_allocate));
-}
-