#include "waveview.h"
#include "simplerect.h"
#include "simpleline.h"
-#include "imageframe.h"
#include "waveview_p.h"
#include "simplerect_p.h"
#include "simpleline_p.h"
-#include "imageframe_p.h"
#include "canvas_impl.h"
#include "editing.h"
#include "rgb_macros.h"
#include "time_axis_view.h"
#include "audio_time_axis.h"
+#ifdef WITH_CMT
+#include "imageframe.h"
+#include "imageframe_p.h"
+#endif
+
#include "i18n.h"
using namespace std;
GType gnome_canvas_simpleline_get_type(void);
GType gnome_canvas_simplerect_get_type(void);
GType gnome_canvas_waveview_get_type(void);
+
+#ifdef WITH_CMT
GType gnome_canvas_imageframe_get_type(void);
+#endif
}
Glib::wrap_register(gnome_canvas_simpleline_get_type(), &Gnome::Canvas::SimpleLine_Class::wrap_new);
Glib::wrap_register(gnome_canvas_simplerect_get_type(), &Gnome::Canvas::SimpleRect_Class::wrap_new);
Glib::wrap_register(gnome_canvas_waveview_get_type(), &Gnome::Canvas::WaveView_Class::wrap_new);
+
+#ifdef WITH_CMT
Glib::wrap_register(gnome_canvas_imageframe_get_type(), &Gnome::Canvas::ImageFrame_Class::wrap_new);
+#endif
// Register the gtkmm gtypes:
(void) Gnome::Canvas::WaveView::get_type();
(void) Gnome::Canvas::SimpleLine::get_type();
(void) Gnome::Canvas::SimpleRect::get_type();
+
+#ifdef WITH_CMT
(void) Gnome::Canvas::ImageFrame::get_type();
+#endif
}
void
track_canvas.set_center_scroll_region (false);
track_canvas.set_dither (Gdk::RGB_DITHER_NONE);
- track_canvas.signal_event().connect (bind (mem_fun (*this, &Editor::track_canvas_event), (ArdourCanvas::Item*) 0));
+ /* need to handle 4 specific types of events as catch-alls */
+
+ track_canvas.signal_scroll_event().connect (mem_fun (*this, &Editor::track_canvas_scroll_event));
+ track_canvas.signal_motion_notify_event().connect (mem_fun (*this, &Editor::track_canvas_motion_notify_event));
+ track_canvas.signal_button_press_event().connect (mem_fun (*this, &Editor::track_canvas_button_press_event));
+ track_canvas.signal_button_release_event().connect (mem_fun (*this, &Editor::track_canvas_button_release_event));
+
track_canvas.set_name ("EditorMainCanvas");
track_canvas.add_events (Gdk::POINTER_MOTION_HINT_MASK|Gdk::SCROLL_MASK);
track_canvas.signal_leave_notify_event().connect (mem_fun(*this, &Editor::left_track_canvas));
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 = 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_pixels() = 0;
+ 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);
+ 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_pixels() = 0;
+ 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);
+ 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_pixels() = 0;
+ 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);
+ 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_pixels() = 0;
+ 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);
+ 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_pixels() = 0;
-
- range_bar_drag_rect = new ArdourCanvas::SimpleRect (*range_marker_group, 0.0, 0.0, max_canvas_coordinate, timebar_height);
+ 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);
+ 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;
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 = new ArdourCanvas::SimpleLine (*tempo_group, 0, timebar_height, max_canvas_coordinate, timebar_height);
- tempo_line->property_color_rgba() = RGBA_TO_UINT (0,0,0,255);
-
- meter_line = new ArdourCanvas::SimpleLine (*meter_group, 0, timebar_height, max_canvas_coordinate, timebar_height);
- meter_line->property_color_rgba() = RGBA_TO_UINT (0,0,0,255);
-
- marker_line = new ArdourCanvas::SimpleLine (*marker_group, 0, timebar_height, max_canvas_coordinate, timebar_height);
- marker_line->property_color_rgba() = RGBA_TO_UINT (0,0,0,255);
-
- range_marker_line = new ArdourCanvas::SimpleLine (*range_marker_group, 0, timebar_height, max_canvas_coordinate, timebar_height);
- range_marker_line->property_color_rgba() = RGBA_TO_UINT (0,0,0,255);
-
- transport_marker_line = new ArdourCanvas::SimpleLine (*transport_marker_group, 0, timebar_height, max_canvas_coordinate, timebar_height);
- transport_marker_line->property_color_rgba() = RGBA_TO_UINT (0,0,0,255);
-
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_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);
+ 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));
for (i = track_views.begin(); i != track_views.end(); ++i) {
if ((*i)->control_parent) {
height += (*i)->effective_height;
- height += track_spacing;
}
}
- if (height) {
- height -= track_spacing;
- }
-
full_canvas_height = height;
}
}
update_fixed_rulers();
- tempo_map_changed (Change (0), true);
+ redisplay_tempo (true);
Resized (); /* EMIT_SIGNAL */
TimeAxisView *tv = (*i)[route_display_columns.tv];
if (tv != 0 && !tv->hidden()) {
pos += tv->effective_height;
- pos += track_spacing;
}
}
TimeAxisView *tv = (*i)[route_display_columns.tv];
if (tv != 0) {
pos += tv->effective_height;
- pos += track_spacing;
}
}
guint info, guint time)
{
TimeAxisView* tvp;
- AudioTimeAxisView* tv;
+ RouteTimeAxisView* tv;
double cy;
vector<ustring> paths;
string spath;
nframes_t pos = 0;
do_embed (paths, false, ImportAsTrack, 0, pos, false);
- } else if ((tv = dynamic_cast<AudioTimeAxisView*>(tvp)) != 0) {
+ } else if ((tv = dynamic_cast<RouteTimeAxisView*>(tvp)) != 0) {
/* check that its an audio track, not a bus */
for (uint32_t i = 0; i < sr->cnt; ++i) {
boost::shared_ptr<Region> r = sr->data[i];
- boost::shared_ptr<AudioRegion> ar;
-
- if ((ar = boost::dynamic_pointer_cast<AudioRegion>(r)) != 0) {
- insert_region_list_drag (ar, x, y);
- }
+
+ insert_region_list_drag (r, x, y);
}
context->drag_finish (true, false, time);
update_fixed_rulers ();
- tempo_map_changed (Change (0), !_dragging_hscrollbar);
+ redisplay_tempo (!_dragging_hscrollbar);
}