// nsm requires these actions disabled
vector<string> action_names;
- action_names.push_back("Snapshot");
action_names.push_back("SaveAs");
action_names.push_back("Rename");
action_names.push_back("New");
}
save_ardour_state (); /* XXX cannot fail? yeah, right ... */
+ editor->save_canvas_state ();
return 0;
}
#include "ardour/tempo.h"
#include "ardour/utils.h"
+#include "canvas/debug.h"
+#include "canvas/text.h"
+
#include "control_protocol/control_protocol.h"
#include "actions.h"
#include "audio_time_axis.h"
#include "automation_time_axis.h"
#include "bundle_manager.h"
-#include "canvas-noevent-text.h"
-#include "canvas_impl.h"
#include "crossfade_edit.h"
#include "debug.h"
#include "editing.h"
#include "rhythm_ferret.h"
#include "selection.h"
#include "sfdb_ui.h"
-#include "simpleline.h"
#include "tempo_lines.h"
#include "time_axis_view.h"
#include "utils.h"
snap_threshold = 5.0;
bbt_beat_subdivision = 4;
- _canvas_width = 0;
- _canvas_height = 0;
+ _visible_canvas_width = 0;
+ _visible_canvas_height = 0;
last_autoscroll_x = 0;
last_autoscroll_y = 0;
autoscroll_active = false;
_internal_editing = false;
current_canvas_cursor = 0;
- frames_per_unit = 2048; /* too early to use reset_zoom () */
+ frames_per_pixel = 2048; /* too early to use reset_zoom () */
_scroll_callbacks = 0;
edit_controls_vbox.set_spacing (0);
vertical_adjustment.signal_value_changed().connect (sigc::mem_fun(*this, &Editor::tie_vertical_scrolling), true);
- track_canvas->signal_map_event().connect (sigc::mem_fun (*this, &Editor::track_canvas_map_handler));
+ _track_canvas->signal_map_event().connect (sigc::mem_fun (*this, &Editor::track_canvas_map_handler));
HBox* h = manage (new HBox);
_group_tabs = new EditorGroupTabs (this);
_cursors = new MouseCursors;
- ArdourCanvas::Canvas* time_pad = manage(new ArdourCanvas::Canvas());
- ArdourCanvas::SimpleLine* pad_line_1 = manage(new ArdourCanvas::SimpleLine(*time_pad->root(),
- 0.0, 1.0, 100.0, 1.0));
+ ArdourCanvas::GtkCanvas* time_pad = manage (new ArdourCanvas::GtkCanvas ());
- pad_line_1->property_color_rgba() = 0xFF0000FF;
+ ArdourCanvas::Line* pad_line_1 = new ArdourCanvas::Line (time_pad->root());
+ pad_line_1->set (ArdourCanvas::Duple (0.0, 1.0), ArdourCanvas::Duple (100.0, 1.0));
+ pad_line_1->set_outline_color (0xFF0000FF);
pad_line_1->show();
+ // CAIROCANVAS
time_pad->show();
time_canvas_vbox.set_size_request (-1, (int)(timebar_height * visible_timebars) + 2);
ruler_label_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
ruler_label_event_box.signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::ruler_label_button_release));
- time_button_event_box.add (time_button_vbox);
- time_button_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
- time_button_event_box.signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::ruler_label_button_release));
+ time_bars_event_box.add (time_bars_vbox);
+ time_bars_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
+ time_bars_event_box.signal_button_release_event().connect (sigc::mem_fun(*this, &Editor::ruler_label_button_release));
/* these enable us to have a dedicated window (for cursor setting, etc.)
for the canvas areas.
*/
- track_canvas_event_box.add (*track_canvas);
+ track_canvas_event_box.add (*_track_canvas_viewport);
time_canvas_event_box.add (time_canvas_vbox);
time_canvas_event_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::POINTER_MOTION_MASK);
/* labels for the rulers */
edit_packer.attach (ruler_label_event_box, 1, 2, 0, 1, FILL, SHRINK, 0, 0);
- /* labels for the marker "tracks" */
- edit_packer.attach (time_button_event_box, 1, 2, 1, 2, FILL, SHRINK, 0, 0);
+ /* labels for the marker "tracks" (time bars) */
+ edit_packer.attach (time_bars_event_box, 1, 2, 1, 2, FILL, SHRINK, 0, 0);
/* the rulers */
edit_packer.attach (time_canvas_event_box, 2, 3, 0, 1, FILL|EXPAND, FILL, 0, 0);
/* track controls */
edit_packer.attach (controls_layout, 0, 2, 2, 3, FILL, FILL|EXPAND, 0, 0);
- /* main canvas */
- edit_packer.attach (track_canvas_event_box, 2, 3, 1, 3, FILL|EXPAND, FILL|EXPAND, 0, 0);
+ /* time bars canvas */
+ edit_packer.attach (*_time_bars_canvas_viewport, 2, 3, 1, 2, FILL, FILL, 0, 0);
+ /* track canvas */
+ edit_packer.attach (track_canvas_event_box, 2, 3, 2, 3, FILL|EXPAND, FILL|EXPAND, 0, 0);
bottom_hbox.set_border_width (2);
bottom_hbox.set_spacing (3);
delete button_bindings;
delete _routes;
delete _route_groups;
- delete track_canvas;
+ delete _track_canvas_viewport;
delete _drags;
}
return;
}
- double fpu = zoom_range_clock->current_duration() / _canvas_width;
- bool clamped = clamp_frames_per_unit (fpu);
+ double fpu = zoom_range_clock->current_duration() / _visible_canvas_width;
+ bool clamped = clamp_frames_per_pixel (fpu);
if (clamped) {
- zoom_range_clock->set ((framepos_t) floor (fpu * _canvas_width));
+ zoom_range_clock->set ((framepos_t) floor (fpu * _visible_canvas_width));
}
temporal_zoom (fpu);
void
Editor::center_screen (framepos_t frame)
{
- double page = _canvas_width * frames_per_unit;
+ double const page = _visible_canvas_width * frames_per_pixel;
/* if we're off the page, then scroll.
*/
/* catch up with the playhead */
- _session->request_locate (playhead_cursor->current_frame);
+ _session->request_locate (playhead_cursor->current_frame ());
_pending_initial_locate = true;
update_title ();
_session->locations()->StateChanged.connect (_session_connections, invalidator (*this), boost::bind (&Editor::refresh_location_display, this), gui_context());
_session->history().Changed.connect (_session_connections, invalidator (*this), boost::bind (&Editor::history_changed, this), gui_context());
- playhead_cursor->canvas_item.show ();
+ playhead_cursor->show ();
boost::function<void (string)> pc (boost::bind (&Editor::parameter_changed, this, _1));
Config->map_parameters (pc);
_session->tempo_map().apply_with_metrics (*this, &Editor::draw_metric_marks);
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
- (static_cast<TimeAxisView*>(*i))->set_samples_per_unit (frames_per_unit);
+ (static_cast<TimeAxisView*>(*i))->set_frames_per_pixel (frames_per_pixel);
}
super_rapid_screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect (
if ((prop = node.property ("zoom"))) {
reset_zoom (PBD::atof (prop->value()));
} else {
- reset_zoom (frames_per_unit);
+ reset_zoom (frames_per_pixel);
}
if ((prop = node.property ("snap-to"))) {
maybe_add_mixer_strip_width (*node);
node->add_property ("zoom-focus", enum_2_string (zoom_focus));
- snprintf (buf, sizeof(buf), "%f", frames_per_unit);
+ snprintf (buf, sizeof(buf), "%f", frames_per_pixel);
node->add_property ("zoom", buf);
node->add_property ("snap-to", enum_2_string (_snap_type));
node->add_property ("snap-mode", enum_2_string (_snap_mode));
node->add_property ("pre-internal-snap-mode", enum_2_string (pre_internal_snap_mode));
node->add_property ("edit-point", enum_2_string (_edit_point));
- snprintf (buf, sizeof (buf), "%" PRIi64, playhead_cursor->current_frame);
+ snprintf (buf, sizeof (buf), "%" PRIi64, playhead_cursor->current_frame ());
node->add_property ("playhead", buf);
snprintf (buf, sizeof (buf), "%" PRIi64, leftmost_frame);
node->add_property ("left-frame", buf);
}
void
-Editor::reset_zoom (double fpu)
+Editor::reset_zoom (double fpp)
{
- clamp_frames_per_unit (fpu);
+ clamp_frames_per_pixel (fpp);
- if (fpu == frames_per_unit) {
+ if (fpp == frames_per_pixel) {
return;
}
pending_visual_change.add (VisualChange::ZoomLevel);
- pending_visual_change.frames_per_unit = fpu;
+ pending_visual_change.frames_per_pixel = fpp;
ensure_visual_change_idle_handler ();
}
{
VisualState* vs = new VisualState (with_tracks);
vs->y_position = vertical_adjustment.get_value();
- vs->frames_per_unit = frames_per_unit;
+ vs->frames_per_pixel = frames_per_pixel;
vs->leftmost_frame = leftmost_frame;
vs->zoom_focus = zoom_focus;
vertical_adjustment.set_value (vs.y_position);
set_zoom_focus (vs.zoom_focus);
- reposition_and_zoom (vs.leftmost_frame, vs.frames_per_unit);
+ reposition_and_zoom (vs.leftmost_frame, vs.frames_per_pixel);
if (vs.gui_state) {
*ARDOUR_UI::instance()->gui_object_state = *vs.gui_state;
* @param fpu New frames per unit; should already have been clamped so that it is sensible.
*/
void
-Editor::set_frames_per_unit (double fpu)
+Editor::set_frames_per_pixel (double fpp)
{
if (tempo_lines) {
tempo_lines->tempo_map_changed();
}
- frames_per_unit = fpu;
+ frames_per_pixel = fpp;
/* convert fpu to frame count */
- framepos_t frames = (framepos_t) floor (frames_per_unit * _canvas_width);
+ framepos_t frames = (framepos_t) floor (frames_per_pixel * _visible_canvas_width);
- if (frames_per_unit != zoom_range_clock->current_duration()) {
+ if (frames_per_pixel != zoom_range_clock->current_duration()) {
zoom_range_clock->set (frames);
}
//reset_scrolling_region ();
if (playhead_cursor) {
- playhead_cursor->set_position (playhead_cursor->current_frame);
+ playhead_cursor->set_position (playhead_cursor->current_frame ());
}
refresh_location_display();
{
if (pending_visual_change.idle_handler_id < 0) {
pending_visual_change.idle_handler_id = g_idle_add (_idle_visual_changer, this);
+ pending_visual_change.being_handled = false;
}
}
double const last_time_origin = horizontal_position ();
if (p & VisualChange::ZoomLevel) {
- set_frames_per_unit (pending_visual_change.frames_per_unit);
+ set_frames_per_pixel (pending_visual_change.frames_per_pixel);
compute_fixed_ruler_scale ();
#endif
if (p & VisualChange::TimeOrigin) {
- set_horizontal_position (pending_visual_change.time_origin / frames_per_unit);
+ set_horizontal_position (pending_visual_change.time_origin / frames_per_pixel);
}
if (p & VisualChange::YOrigin) {
for (RouteList::iterator x = routes.begin(); x != routes.end(); ++x) {
boost::shared_ptr<Route> route = (*x);
- if (route->is_hidden() || route->is_monitor()) {
+ if (route->is_auditioner() || route->is_monitor()) {
continue;
}
DataType dt = route->input()->default_type();
if (dt == ARDOUR::DataType::AUDIO) {
- rtv = new AudioTimeAxisView (*this, _session, *track_canvas);
+ rtv = new AudioTimeAxisView (*this, _session, *_track_canvas);
rtv->set_route (route);
} else if (dt == ARDOUR::DataType::MIDI) {
- rtv = new MidiTimeAxisView (*this, _session, *track_canvas);
+ rtv = new MidiTimeAxisView (*this, _session, *_track_canvas);
rtv->set_route (route);
} else {
throw unknown_type();
void
Editor::reset_x_origin_to_follow_playhead ()
{
- framepos_t const frame = playhead_cursor->current_frame;
+ framepos_t const frame = playhead_cursor->current_frame ();
if (frame < leftmost_frame || frame > leftmost_frame + current_page_frames()) {
*/
#if 0
// FIXME DO SOMETHING THAT WORKS HERE - this is 2.X code
- double target = ((double)frame - (double)current_page_frames()/2.0) / frames_per_unit;
+ double target = ((double)frame - (double)current_page_frames()/2.0) / frames_per_pixel;
if (target <= 0.0) {
target = 0.0;
}
- if (fabs(target - current) < current_page_frames() / frames_per_unit) {
+ if (fabs(target - current) < current_page_frames() / frames_per_pixel) {
target = (target * 0.15) + (current * 0.85);
} else {
/* relax */
last_update_frame = 0;
_drags->abort ();
- playhead_cursor->canvas_item.hide ();
+ playhead_cursor->hide ();
/* rip everything out of the list displays */
{
_stepping_axis_view = 0;
}
+
+
+void
+Editor::save_canvas_state ()
+{
+ XMLTree* tree = static_cast<ArdourCanvas::Canvas*>(_track_canvas)->get_state ();
+ string path = string_compose ("%1/canvas-state.xml", _session->path());
+ tree->write (path);
+}
#include "global_signals.h"
#include "route_time_axis.h"
#include "automation_time_axis.h"
-#include "canvas_impl.h"
#include "enums.h"
#include "gui_thread.h"
#include "keyboard.h"
#include "region_view.h"
#include "rgb_macros.h"
#include "selection.h"
-#include "simplerect.h"
#include "streamview.h"
#include "utils.h"
#include "route_group_menu.h"
using namespace std;
using std::list;
-RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, Canvas& canvas)
+RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, ArdourCanvas::Canvas& canvas)
: AxisView(sess)
, RouteUI(sess)
, TimeAxisView(sess,ed,(TimeAxisView*) 0, canvas)
set_height (preset_height (HeightNormal));
}
- if (!_route->is_hidden()) {
+ if (!_route->is_auditioner()) {
if (gui_property ("visible").empty()) {
set_gui_property ("visible", true);
}
}
- _editor.ZoomChanged.connect (sigc::mem_fun(*this, &RouteTimeAxisView::reset_samples_per_unit));
+ _editor.ZoomChanged.connect (sigc::mem_fun(*this, &RouteTimeAxisView::reset_frames_per_pixel));
_editor.HorizontalPositionChanged.connect (sigc::mem_fun (*this, &RouteTimeAxisView::horizontal_position_changed));
ColorsChanged.connect (sigc::mem_fun (*this, &RouteTimeAxisView::color_handler));
#endif
if (timestretch_rect == 0) {
- timestretch_rect = new SimpleRect (*canvas_display ());
- timestretch_rect->property_x1() = 0.0;
- timestretch_rect->property_y1() = 0.0;
- timestretch_rect->property_x2() = 0.0;
- timestretch_rect->property_y2() = 0.0;
- timestretch_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeStretchFill.get();
- timestretch_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeStretchOutline.get();
+ timestretch_rect = new ArdourCanvas::Rectangle (canvas_display ());
+ timestretch_rect->set_fill_color (ARDOUR_UI::config()->canvasvar_TimeStretchFill.get());
+ timestretch_rect->set_outline_color (ARDOUR_UI::config()->canvasvar_TimeStretchOutline.get());
}
timestretch_rect->show ();
double const x1 = start / _editor.get_current_zoom();
double const x2 = (end - 1) / _editor.get_current_zoom();
- timestretch_rect->property_x1() = x1;
- timestretch_rect->property_y1() = current_height() * (layers - layer - 1) / layers;
- timestretch_rect->property_x2() = x2;
- timestretch_rect->property_y2() = current_height() * (layers - layer) / layers;
+ timestretch_rect->set (ArdourCanvas::Rect (x1, current_height() * (layers - layer - 1) / layers,
+ x2, current_height() * (layers - layer) / layers));
}
void
}
void
-RouteTimeAxisView::reset_samples_per_unit ()
+RouteTimeAxisView::reset_frames_per_pixel ()
{
- set_samples_per_unit (_editor.get_current_zoom());
+ set_frames_per_pixel (_editor.get_current_zoom());
}
void
}
void
-RouteTimeAxisView::set_samples_per_unit (double spu)
+RouteTimeAxisView::set_frames_per_pixel (double fpp)
{
double speed = 1.0;
}
if (_view) {
- _view->set_samples_per_unit (spu * speed);
+ _view->set_frames_per_pixel (fpp * speed);
}
- TimeAxisView::set_samples_per_unit (spu * speed);
+ TimeAxisView::set_frames_per_pixel (fpp * speed);
}
void
void
RouteTimeAxisView::speed_changed ()
{
- Gtkmm2ext::UI::instance()->call_slot (invalidator (*this), boost::bind (&RouteTimeAxisView::reset_samples_per_unit, this));
+ Gtkmm2ext::UI::instance()->call_slot (invalidator (*this), boost::bind (&RouteTimeAxisView::reset_frames_per_pixel, this));
}
void
{
//case cTimeStretchOutline:
if (timestretch_rect) {
- timestretch_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeStretchOutline.get();
+ timestretch_rect->set_outline_color (ARDOUR_UI::config()->canvasvar_TimeStretchOutline.get());
}
//case cTimeStretchFill:
if (timestretch_rect) {
- timestretch_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeStretchFill.get();
+ timestretch_rect->set_fill_color (ARDOUR_UI::config()->canvasvar_TimeStretchFill.get());
}
reset_meter();
*/
-#include <libgnomecanvasmm/canvas.h>
-#include <libgnomecanvasmm/group.h>
+#include "canvas/line.h"
+#include "canvas/canvas.h"
+#include "canvas/debug.h"
#include "tempo_lines.h"
#include "ardour_ui.h"
#define MAX_CACHED_LINES 128
-TempoLines::TempoLines(ArdourCanvas::Canvas& canvas, ArdourCanvas::Group* group, double screen_height)
- : _canvas(canvas)
+TempoLines::TempoLines (ArdourCanvas::GtkCanvasViewport& canvas_viewport, ArdourCanvas::Group* group, double screen_height)
+ : _canvas_viewport (canvas_viewport)
, _group(group)
, _clean_left(DBL_MAX)
, _clean_right(0.0)
for (Lines::iterator i = _lines.begin(); i != _lines.end(); d += 1.0) {
Lines::iterator next = i;
++next;
- i->second->property_x1() = - d;
- i->second->property_x2() = - d;
- ArdourCanvas::SimpleLine* f = i->second;
+ i->second->set_x0 (-d);
+ i->second->set_x1 (-d);
+ ArdourCanvas::Line* f = i->second;
_lines.erase(i);
_lines.insert(make_pair(- d, f));
i = next;
void
TempoLines::draw (const ARDOUR::TempoMap::BBTPointList::const_iterator& begin,
const ARDOUR::TempoMap::BBTPointList::const_iterator& end,
- double frames_per_unit)
+ double frames_per_pixel)
{
ARDOUR::TempoMap::BBTPointList::const_iterator i;
- ArdourCanvas::SimpleLine *line = NULL;
+ ArdourCanvas::Line *line = 0;
gdouble xpos;
- double who_cares;
- double x1, x2, y1, beat_density;
+ double beat_density;
uint32_t beats = 0;
uint32_t bars = 0;
const size_t needed = distance (begin, end);
- _canvas.get_scroll_region (x1, y1, x2, who_cares);
+ ArdourCanvas::Rect const visible = _canvas_viewport.visible_area ();
/* get the first bar spacing */
bars = (*i).bar - (*begin).bar;
beats = distance (begin, end) - bars;
- beat_density = (beats * 10.0f) / _canvas.get_width ();
+ beat_density = (beats * 10.0f) / visible.width ();
if (beat_density > 4.0f) {
/* if the lines are too close together, they become useless */
return;
}
- xpos = rint(((framepos_t)(*i).frame) / (double)frames_per_unit);
+ xpos = rint(((framepos_t)(*i).frame) / (double)frames_per_pixel);
const double needed_right = xpos;
i = begin;
- xpos = rint(((framepos_t)(*i).frame) / (double)frames_per_unit);
+ xpos = rint(((framepos_t)(*i).frame) / (double)frames_per_pixel);
const double needed_left = xpos;
Lines::iterator left = _lines.lower_bound(xpos); // first line >= xpos
//cout << endl << "*** LINE CACHE MISS" << endl;
- bool inserted_last_time = true;
bool invalidated = false;
for (i = begin; i != end; ++i) {
color = ARDOUR_UI::config()->canvasvar_MeasureLineBeat.get();
}
- xpos = rint(((framepos_t)(*i).frame) / (double)frames_per_unit);
+ xpos = rint(((framepos_t)(*i).frame) / (double)frames_per_pixel);
li = _lines.lower_bound(xpos); // first line >= xpos
- line = (li != _lines.end()) ? li->second : NULL;
- assert(!line || line->property_x1() == li->first);
+ line = (li != _lines.end()) ? li->second : 0;
+ assert(!line || line->x0() == li->first);
Lines::iterator next = li;
if (next != _lines.end())
exhausted = (next == _lines.end());
// Hooray, line is perfect
- if (line && line->property_x1() == xpos) {
+ if (line && line->x0() == xpos) {
if (li != _lines.end())
++li;
- line->property_color_rgba() = color;
+ line->set_outline_color (color);
- inserted_last_time = false; // don't search next time
++
// Use existing line, moving if necessary
} else if (!exhausted) {
Lines::iterator steal = _lines.end();
double const x = steal->first;
line = steal->second;
_lines.erase(steal);
- line->property_x1() = xpos;
- line->property_x2() = xpos;
- line->property_color_rgba() = color;
+ line->set_x0 (xpos);
+ line->set_x1 (xpos);
+ line->set_outline_color (color);
_lines.insert(make_pair(xpos, line));
- inserted_last_time = true; // search next time
invalidated = true;
// Shift clean range left
if (existing != _lines.end()) {
//cout << "*** EXISTING LINE" << endl;
li = existing;
- li->second->property_color_rgba() = color;
+ li->second->set_outline_color (color);
- inserted_last_time = false; // don't search next time
} else {
//cout << "*** MOVING LINE" << endl;
- const double x1 = line->property_x1();
+ const double x1 = line->x0();
const bool was_clean = x1 >= _clean_left && x1 <= _clean_right;
invalidated = invalidated || was_clean;
// Invalidate clean portion (XXX: too harsh?)
_clean_left = needed_left;
_clean_right = needed_right;
_lines.erase(li);
- line->property_color_rgba() = color;
- line->property_x1() = xpos;
- line->property_x2() = xpos;
+ line->set_outline_color (color);
+ line->set_x0 (xpos);
+ line->set_x1 (xpos);
_lines.insert(make_pair(xpos, line));
- inserted_last_time = true; // search next time
}
}
//cout << "*** CREATING LINE" << endl;
/* if we already have a line there ... don't sweat it */
if (_lines.find (xpos) == _lines.end()) {
- line = new ArdourCanvas::SimpleLine (*_group);
- line->property_x1() = xpos;
- line->property_x2() = xpos;
- line->property_y1() = 0.0;
- line->property_y2() = _height;
- line->property_color_rgba() = color;
+ line = new ArdourCanvas::Line (_group);
+ line->set_x0 (xpos);
+ line->set_x1 (xpos);
+ line->set_y0 (0.0);
+ line->set_y1 (_height);
+ line->set_outline_color (color);
_lines.insert(make_pair(xpos, line));
- inserted_last_time = true;
}
// Steal from the left
double const x = steal->first;
line = steal->second;
_lines.erase(steal);
- line->property_color_rgba() = color;
- line->property_x1() = xpos;
- line->property_x2() = xpos;
+ line->set_outline_color (color);
+ line->set_x0 (xpos);
+ line->set_x1 (xpos);
_lines.insert(make_pair(xpos, line));
- inserted_last_time = true; // search next time
invalidated = true;
// Shift clean range right
obj.export_includes = ['.']
obj.includes = ['.', '../surfaces/control_protocol', '..']
- obj.name = 'ardour'
+ obj.name = 'libardour'
obj.target = 'ardour'
obj.uselib = ['GLIBMM','GTHREAD','AUBIO','SIGCPP','XML','UUID',
'JACK','SNDFILE','SAMPLERATE','LRDF','AUDIOUNITS',
# Tests that don't work
# test/mantis_3356_test.cc
- testobj.includes = obj.includes + ['test', '../pbd']
+ testobj.includes = obj.includes + ['test', '../pbd', '../libltc', '../audiographer']
testobj.uselib = ['CPPUNIT','SIGCPP','JACK','GLIBMM','GTHREAD',
'SAMPLERATE','XML','LRDF','COREAUDIO']
- testobj.use = ['libpbd','libmidipp','libardour']
+ testobj.use = ['libpbd','libmidipp','ardour','libltc','libaudiographer']
testobj.name = 'libardour-tests'
testobj.target = 'run-tests'
testobj.install_path = ''
session_load_tester.includes.append ('test')
session_load_tester.uselib = ['CPPUNIT','SIGCPP','JACK','GLIBMM','GTHREAD',
'SAMPLERATE','XML','LRDF','COREAUDIO']
- session_load_tester.use = ['libpbd','libmidipp','libardour']
+ session_load_tester.use = ['libpbd','libmidipp','ardour']
session_load_tester.name = 'libardour-session-load-tester'
session_load_tester.target = 'load-session'
session_load_tester.install_path = ''
profilingobj.includes.append ('test')
profilingobj.uselib = ['CPPUNIT','SIGCPP','JACK','GLIBMM','GTHREAD',
'SAMPLERATE','XML','LRDF','COREAUDIO']
- profilingobj.use = ['libpbd','libmidipp','libardour']
+ profilingobj.use = ['libpbd','libmidipp','ardour']
profilingobj.name = 'libardour-profiling'
profilingobj.target = p
profilingobj.install_path = ''
'libs/gtkmm2ext',
'libs/clearlooks-newer',
'libs/audiographer',
+ 'libs/canvas',
'gtk2_ardour',
- 'templates',
'export',
'midi_maps',
'mcp',
conf.env.append_value('CXXFLAGS', '-D__STDC_LIMIT_MACROS')
conf.env.append_value('CXXFLAGS', '-D__STDC_FORMAT_MACROS')
+ conf.env.append_value('CXXFLAGS', '-DCANVAS_COMPATIBILITY')
+ conf.env.append_value('CXXFLAGS', '-DCANVAS_DEBUG')
if opt.nls:
conf.env.append_value('CXXFLAGS', '-DENABLE_NLS')
autowaf.check_pkg(conf, 'sndfile', uselib_store='SNDFILE', atleast_version='1.0.18')
autowaf.check_pkg(conf, 'giomm-2.4', uselib_store='GIOMM', atleast_version='2.2')
autowaf.check_pkg(conf, 'libcurl', uselib_store='CURL', atleast_version='7.0.0')
+ autowaf.check_pkg(conf, 'liblo', uselib_store='LO', atleast_version='0.26')
conf.check_cc(function_name='dlopen', header_name='dlfcn.h', lib='dl', uselib_store='DL')