#include <gtkmm2ext/utils.h>
#include <ardour/audioregion.h>
+#include <ardour/profile.h>
#include "ardour_ui.h"
#include "editor.h"
/* stuff for the verbose canvas cursor */
- Pango::FontDescription font = get_font_for_style (N_("VerboseCanvasCursor"));
+ Pango::FontDescription* font = get_font_for_style (N_("VerboseCanvasCursor"));
verbose_canvas_cursor = new ArdourCanvas::Text (*track_canvas.root());
- verbose_canvas_cursor->property_font_desc() = font;
+ verbose_canvas_cursor->property_font_desc() = *font;
verbose_canvas_cursor->property_anchor() = ANCHOR_NW;
- verbose_canvas_cursor->property_fill_color_rgba() = color_map[cVerboseCanvasCursor];
+ delete font;
+
verbose_cursor_visible = false;
+ if (Profile->get_sae()) {
+ Image img (::get_icon (X_("saelogo")));
+ logo_item = new ArdourCanvas::Pixbuf (*track_canvas.root(), 0.0, 0.0, img.get_pixbuf());
+ // logo_item->property_height_in_pixels() = true;
+ // logo_item->property_width_in_pixels() = true;
+ // logo_item->property_height_set() = true;
+ // logo_item->property_width_set() = true;
+ logo_item->show ();
+ }
+
/* a group to hold time (measure) lines */
time_line_group = new ArdourCanvas::Group (*track_canvas.root(), 0.0, 0.0);
+ tempo_lines = new TempoLines(track_canvas, time_line_group);
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);
time_canvas.set_flags (CAN_FOCUS);
time_canvas.set_center_scroll_region (false);
time_canvas.set_dither (Gdk::RGB_DITHER_NONE);
+ marker_time_line_group = new ArdourCanvas::Group (*time_canvas.root(), 0.0, 0.0);
+ marker_tempo_lines = new TempoLines(time_canvas, marker_time_line_group);
+
meter_group = new ArdourCanvas::Group (*time_canvas.root(), 0.0, 0.0);
tempo_group = new ArdourCanvas::Group (*time_canvas.root(), 0.0, timebar_height);
- 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);
+ range_marker_group = new ArdourCanvas::Group (*time_canvas.root(), 0.0, timebar_height * 2.0);
+ transport_marker_group = new ArdourCanvas::Group (*time_canvas.root(), 0.0, timebar_height * 3.0);
+ 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-1.0);
- tempo_bar->property_fill_color_rgba() = color_map[cTempoBar];
tempo_bar->property_outline_what() = (0x1 | 0x8);
tempo_bar->property_outline_pixels() = 1;
- tempo_bar->property_outline_color_rgba() = color_map[cTempoSeparator];
meter_bar = new ArdourCanvas::SimpleRect (*meter_group, 0.0, 0.0, max_canvas_coordinate, timebar_height-1.0);
- meter_bar->property_fill_color_rgba() = color_map[cMeterBar];
meter_bar->property_outline_what() = (0x1 | 0x8);
meter_bar->property_outline_pixels() = 1;
- meter_bar->property_outline_color_rgba() = color_map[cMeterSeparator];
marker_bar = new ArdourCanvas::SimpleRect (*marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height-1.0);
- marker_bar->property_fill_color_rgba() = color_map[cMarkerBar];
marker_bar->property_outline_what() = (0x1 | 0x8);
marker_bar->property_outline_pixels() = 1;
- marker_bar->property_outline_color_rgba() = color_map[cMarkerSeparator];
range_marker_bar = new ArdourCanvas::SimpleRect (*range_marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height-1.0);
- range_marker_bar->property_fill_color_rgba() = color_map[cRangeMarkerBar];
range_marker_bar->property_outline_what() = (0x1 | 0x8);
range_marker_bar->property_outline_pixels() = 1;
- range_marker_bar->property_outline_color_rgba() = color_map[cRangeMarkerSeparator];
transport_marker_bar = new ArdourCanvas::SimpleRect (*transport_marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height-1.0);
- transport_marker_bar->property_fill_color_rgba() = color_map[cTransportMarkerBar];
transport_marker_bar->property_outline_what() = (0x1 | 0x8);
transport_marker_bar->property_outline_pixels() = 1;
- transport_marker_bar->property_outline_color_rgba() = color_map[cTransportMarkerSeparator];
range_bar_drag_rect = new ArdourCanvas::SimpleRect (*range_marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height-1.0);
- range_bar_drag_rect->property_fill_color_rgba() = color_map[cRangeDragBarRectFill];
- range_bar_drag_rect->property_outline_color_rgba() = color_map[cRangeDragBarRect];
range_bar_drag_rect->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-1.0);
- transport_bar_drag_rect ->property_fill_color_rgba() = color_map[cTransportDragRectFill];
- transport_bar_drag_rect->property_outline_color_rgba() = color_map[cTransportDragRect];
transport_bar_drag_rect->property_outline_pixels() = 0;
transport_bar_drag_rect->hide ();
marker_drag_line = new ArdourCanvas::Line (*track_canvas.root());
marker_drag_line->property_width_pixels() = 1;
- marker_drag_line->property_fill_color_rgba() = color_map[cMarkerDragLine];
marker_drag_line->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->property_fill_color_rgba() = color_map[cRangeDragRectFill];
- range_marker_drag_rect->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->property_fill_color_rgba() = color_map[cTransportLoopRectFill];
- transport_loop_range_rect->property_outline_color_rgba() = color_map[cTransportLoopRect];
transport_loop_range_rect->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->property_fill_color_rgba() = color_map[cTransportPunchRectFill];
- transport_punch_range_rect->property_outline_color_rgba() = color_map[cTransportPunchRect];
transport_punch_range_rect->property_outline_pixels() = 0;
transport_punch_range_rect->hide();
transport_punchin_line->property_y1() = 0.0;
transport_punchin_line->property_x2() = 0.0;
transport_punchin_line->property_y2() = 0.0;
- transport_punchin_line->property_color_rgba() = color_map[cPunchInLine];
transport_punchin_line->hide ();
transport_punchout_line = new ArdourCanvas::SimpleLine (*time_line_group);
transport_punchout_line->property_y1() = 0.0;
transport_punchout_line->property_x2() = 0.0;
transport_punchout_line->property_y2() = 0.0;
- transport_punchout_line->property_color_rgba() = 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->property_fill_color_rgba() = color_map[cZoomRectFill];
- zoom_rect->property_outline_color_rgba() = color_map[cZoomRect];
zoom_rect->property_outline_pixels() = 1;
zoom_rect->hide();
// used as rubberband rect
rubberband_rect = new ArdourCanvas::SimpleRect (*track_canvas.root(), 0.0, 0.0, 0.0, 0.0);
- rubberband_rect->property_outline_color_rgba() = color_map[cRubberBandRect];
- rubberband_rect->property_fill_color_rgba() = (guint32) color_map[cRubberBandRectFill];
rubberband_rect->property_outline_pixels() = 1;
rubberband_rect->hide();
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);
-
- if (!color_map[cEditCursor]) {
- warning << _("edit cursor color not defined, check your ardour.colors file!") << endmsg;
- color_map[cEditCursor] = RGBA_TO_UINT (30,30,30,255);
- }
-
- if (!color_map[cPlayHead]) {
- warning << _("playhead color not defined, check your ardour.colors file!") << endmsg;
- color_map[cPlayHead] = RGBA_TO_UINT (0,0,0,255);
- }
- edit_cursor = new Cursor (*this, &Editor::canvas_edit_cursor_event);
- edit_cursor->canvas_item.property_fill_color_rgba() = color_map[cEditCursor];
playhead_cursor = new Cursor (*this, &Editor::canvas_playhead_cursor_event);
- playhead_cursor->canvas_item.property_fill_color_rgba() = color_map[cPlayHead];
initial_ruler_update_required = true;
track_canvas.signal_size_allocate().connect (mem_fun(*this, &Editor::track_canvas_allocate));
+ if (logo_item) {
+ logo_item->lower_to_bottom ();
+ }
+
+ ColorsChanged.connect (mem_fun (*this, &Editor::color_handler));
+ color_handler();
+
}
void
}
zoom_range_clock.set ((nframes_t) floor ((canvas_width * frames_per_unit)));
- edit_cursor->set_position (edit_cursor->current_frame);
playhead_cursor->set_position (playhead_cursor->current_frame);
reset_hscrollbar_stepping ();
reset_scrolling_region ();
- if (edit_cursor) edit_cursor->set_length (canvas_height);
if (playhead_cursor) playhead_cursor->set_length (canvas_height);
- if (marker_drag_line) {
- marker_drag_line_points.back().set_y(canvas_height);
- marker_drag_line->property_points() = marker_drag_line_points;
- }
+ // EDIT CURSOR XXX set line height for selected markers here
if (range_marker_drag_rect) {
range_marker_drag_rect->property_y1() = 0.0;
transport_punchout_line->property_y1() = 0.0;
transport_punchout_line->property_y2() = canvas_height;
}
-
+ compute_fixed_ruler_scale ();
update_fixed_rulers();
redisplay_tempo (true);
+
+ if (logo_item) {
+ // logo_item->property_height() = canvas_height;
+ // logo_item->property_width() = canvas_width;
+ }
Resized (); /* EMIT_SIGNAL */
vector<ustring> paths;
string spath;
GdkEvent ev;
- nframes_t frame;
+ nframes64_t frame;
if (convert_drop_to_paths (paths, context, x, y, data, info, time)) {
goto out;
/* drop onto canvas background: create new tracks */
- nframes_t pos = 0;
- do_embed (paths, false, ImportAsTrack, 0, pos, false);
+ do_embed (paths, Editing::ImportDistinctFiles, ImportAsTrack, frame);
} else if ((tv = dynamic_cast<RouteTimeAxisView*>(tvp)) != 0) {
/* check that its an audio track, not a bus */
+ /* check that its an audio track, not a bus */
+
if (tv->get_diskstream()) {
- do_embed (paths, false, ImportToTrack, tv->audio_track().get(), frame, true);
+ /* select the track, then embed */
+ selection->set (tv);
+ do_embed (paths, Editing::ImportDistinctFiles, ImportToTrack, frame);
}
}
void
Editor::canvas_horizontally_scrolled ()
{
+ cerr << "chs\n";
+
/* this is the core function that controls horizontal scrolling of the canvas. it is called
whenever the horizontal_adjustment emits its "value_changed" signal. it typically executes in an
idle handler, which is important because tempo_map_changed() should issue redraws immediately
reset_scrolling_region ();
}
+ if (logo_item) {
+ logo_item->property_x() = horizontal_adjustment.get_value ();
+ }
+
update_fixed_rulers ();
redisplay_tempo (!_dragging_hscrollbar);
}
+void
+Editor::color_handler()
+{
+ playhead_cursor->canvas_item.property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_PlayHead.get();
+ verbose_canvas_cursor->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_VerboseCanvasCursor.get();
+
+ meter_bar->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MeterBar.get();
+ meter_bar->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get();
+
+ tempo_bar->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TempoBar.get();
+ tempo_bar->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get();
+
+ marker_bar->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBar.get();
+ marker_bar->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get();
+
+ range_marker_bar->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_RangeMarkerBar.get();
+ range_marker_bar->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get();
+
+ transport_marker_bar->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportMarkerBar.get();
+ transport_marker_bar->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get();
+
+ range_bar_drag_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_RangeDragBarRect.get();
+ range_bar_drag_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_RangeDragBarRect.get();
+
+ transport_bar_drag_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportDragRect.get();
+ transport_bar_drag_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportDragRect.get();
+
+ marker_drag_line->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerDragLine.get();
+
+ range_marker_drag_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_RangeDragRect.get();
+ range_marker_drag_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_RangeDragRect.get();
+
+ transport_loop_range_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportLoopRect.get();
+ transport_loop_range_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportLoopRect.get();
+
+ transport_punch_range_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportPunchRect.get();
+ transport_punch_range_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TransportPunchRect.get();
+
+ transport_punchin_line->property_color_rgba() = ARDOUR_UI::config()->canvasvar_PunchLine.get();
+ transport_punchout_line->property_color_rgba() = ARDOUR_UI::config()->canvasvar_PunchLine.get();
+
+ zoom_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_ZoomRect.get();
+ zoom_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_ZoomRect.get();
+
+ rubberband_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_RubberBandRect.get();
+ rubberband_rect->property_fill_color_rgba() = (guint32) ARDOUR_UI::config()->canvasvar_RubberBandRect.get();
+
+ location_marker_color = ARDOUR_UI::config()->canvasvar_LocationMarker.get();
+ location_range_color = ARDOUR_UI::config()->canvasvar_LocationRange.get();
+ location_cd_marker_color = ARDOUR_UI::config()->canvasvar_LocationCDMarker.get();
+ location_loop_color = ARDOUR_UI::config()->canvasvar_LocationLoop.get();
+ location_punch_color = ARDOUR_UI::config()->canvasvar_LocationPunch.get();
+
+ refresh_location_display ();
+ redisplay_tempo (true);
+
+ if (session)
+ session->tempo_map().apply_with_metrics (*this, &Editor::draw_metric_marks); // redraw metric markers
+}
+