GUI: moving along with timeline type conversion
This commit is contained in:
parent
ff93c97296
commit
aa56f4a16e
|
@ -363,9 +363,9 @@ ARDOUR_UI::add_video (Gtk::Window* float_window)
|
|||
}
|
||||
}
|
||||
|
||||
_session->maybe_update_session_range(
|
||||
std::max(video_timeline->get_offset(), (ARDOUR::sampleoffset_t) 0),
|
||||
std::max(video_timeline->get_offset() + video_timeline->get_duration(), (ARDOUR::sampleoffset_t) 0));
|
||||
_session->maybe_update_session_range (
|
||||
timepos_t (std::max(video_timeline->get_offset(), (sampleoffset_t) 0)),
|
||||
timepos_t (std::max(video_timeline->get_offset() + video_timeline->get_duration(), (sampleoffset_t) 0)));
|
||||
|
||||
|
||||
if (add_video_dialog->launch_xjadeo() && local_file) {
|
||||
|
|
|
@ -170,7 +170,7 @@ Editor::time_fx (RegionList& regions, float val, bool pitching)
|
|||
|
||||
const timecnt_t oldlen = regions.front()->nt_length();
|
||||
const timecnt_t newlen = regions.front()->nt_length() * val;
|
||||
const timecnt_t pos = regions.front()->nt_position ();
|
||||
const timepos_t pos = regions.front()->nt_position ();
|
||||
|
||||
current_timefx = new TimeFXDialog (*this, pitching, oldlen, newlen, pos);
|
||||
current_timefx->regions = regions;
|
||||
|
@ -427,7 +427,7 @@ Editor::do_timefx ()
|
|||
boost::shared_ptr<Region> region = i->first;
|
||||
boost::shared_ptr<Region> new_region = i->second;
|
||||
boost::shared_ptr<Playlist> playlist = region->playlist();
|
||||
playlist->replace_region (region, new_region, region->position());
|
||||
playlist->replace_region (region, new_region, region->nt_position());
|
||||
|
||||
PBD::StatefulDiffCommand* cmd = new StatefulDiffCommand (playlist);
|
||||
_session->add_command (cmd);
|
||||
|
|
|
@ -352,7 +352,7 @@ PannerUI::start_touch (boost::weak_ptr<AutomationControl> wac)
|
|||
if (!ac) {
|
||||
return;
|
||||
}
|
||||
ac->start_touch (ac->session().transport_sample());
|
||||
ac->start_touch (timepos_t (ac->session().transport_sample()));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -362,7 +362,7 @@ PannerUI::stop_touch (boost::weak_ptr<AutomationControl> wac)
|
|||
if (!ac) {
|
||||
return;
|
||||
}
|
||||
ac->stop_touch (ac->session().transport_sample());
|
||||
ac->stop_touch (timepos_t (ac->session().transport_sample()));
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
@ -110,7 +110,7 @@ AudioRegionGainLine::region_changed (const PropertyChange& what_changed)
|
|||
interesting_stuff.add (ARDOUR::Properties::start);
|
||||
interesting_stuff.add (ARDOUR::Properties::position);
|
||||
|
||||
if (what_changed.containts (ARDOUR::Properties::position)) {
|
||||
if (what_changed.contains (ARDOUR::Properties::position)) {
|
||||
set_distance_measure_origin (rv.region()->nt_position());
|
||||
}
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ RegionView::RegionView (ArdourCanvas::Container* parent,
|
|||
double spu,
|
||||
uint32_t basic_color,
|
||||
bool automation)
|
||||
: TimeAxisViewItem (r->name(), *parent, tv, spu, basic_color, r->position(), r->length(), false, automation,
|
||||
: TimeAxisViewItem (r->name(), *parent, tv, spu, basic_color, r->nt_position(), r->nt_length(), false, automation,
|
||||
(automation ? TimeAxisViewItem::ShowFrame :
|
||||
TimeAxisViewItem::Visibility ((UIConfiguration::instance().get_show_region_name() ? TimeAxisViewItem::ShowNameText : 0) |
|
||||
TimeAxisViewItem::ShowNameHighlight| TimeAxisViewItem::ShowFrame)))
|
||||
|
@ -157,7 +157,7 @@ RegionView::RegionView (ArdourCanvas::Container* parent,
|
|||
uint32_t basic_color,
|
||||
bool recording,
|
||||
TimeAxisViewItem::Visibility visibility)
|
||||
: TimeAxisViewItem (r->name(), *parent, tv, spu, basic_color, r->position(), r->length(), recording, false, visibility)
|
||||
: TimeAxisViewItem (r->name(), *parent, tv, spu, basic_color, r->nt_position(), r->nt_length(), recording, false, visibility)
|
||||
, _region (r)
|
||||
, sync_mark(0)
|
||||
, sync_line(0)
|
||||
|
@ -308,8 +308,8 @@ RegionView::set_silent_frames (const AudioIntervalResult& silences, double /*thr
|
|||
|
||||
/* coordinates for the rect are relative to the regionview origin */
|
||||
|
||||
cr->set_x0 (trackview.editor().sample_to_pixel (i->first - _region->start()));
|
||||
cr->set_x1 (trackview.editor().sample_to_pixel (i->second - _region->start()));
|
||||
cr->set_x0 (trackview.editor().sample_to_pixel (i->first - _region->start_sample()));
|
||||
cr->set_x1 (trackview.editor().sample_to_pixel (i->second - _region->start_sample()));
|
||||
cr->set_y0 (1);
|
||||
cr->set_y1 (_height - 2);
|
||||
cr->set_outline (false);
|
||||
|
@ -321,7 +321,7 @@ RegionView::set_silent_frames (const AudioIntervalResult& silences, double /*thr
|
|||
/* Find shortest audible segment */
|
||||
samplecnt_t shortest_audible = max_samplecnt;
|
||||
|
||||
samplecnt_t s = _region->start();
|
||||
samplecnt_t s = _region->start_sample();
|
||||
for (AudioIntervalResult::const_iterator i = silences.begin(); i != silences.end(); ++i) {
|
||||
samplecnt_t const dur = i->first - s;
|
||||
if (dur > 0) {
|
||||
|
@ -331,7 +331,7 @@ RegionView::set_silent_frames (const AudioIntervalResult& silences, double /*thr
|
|||
s = i->second;
|
||||
}
|
||||
|
||||
samplecnt_t const dur = _region->start() + _region->length() - 1 - s;
|
||||
samplecnt_t const dur = _region->start_sample() + _region->length_samples() - 1 - s;
|
||||
if (dur > 0) {
|
||||
shortest_audible = min (shortest_audible, dur);
|
||||
}
|
||||
|
@ -343,7 +343,7 @@ RegionView::set_silent_frames (const AudioIntervalResult& silences, double /*thr
|
|||
|
||||
/* both positions are relative to the region start offset in source */
|
||||
|
||||
_silence_text->set_x_position (trackview.editor().sample_to_pixel (silences.front().first - _region->start()) + 10.0);
|
||||
_silence_text->set_x_position (trackview.editor().sample_to_pixel (silences.front().first - _region->start_sample()) + 10.0);
|
||||
_silence_text->set_y_position (20.0);
|
||||
|
||||
double ms = (float) shortest/_region->session().sample_rate();
|
||||
|
@ -447,7 +447,7 @@ RegionView::region_changed (const PropertyChange& what_changed)
|
|||
if (what_changed.contains (ARDOUR::Properties::name)) {
|
||||
region_renamed ();
|
||||
}
|
||||
if (what_changed.contains (ARDOUR::Properties::position_lock_style)) {
|
||||
if (what_changed.contains (ARDOUR::Properties::time_domain)) {
|
||||
region_renamed ();
|
||||
}
|
||||
if (what_changed.contains (ARDOUR::Properties::sync_position)) {
|
||||
|
@ -471,7 +471,7 @@ RegionView::region_resized (const PropertyChange& what_changed)
|
|||
double unit_length;
|
||||
|
||||
if (what_changed.contains (ARDOUR::Properties::position)) {
|
||||
set_position (_region->position(), 0);
|
||||
set_position (_region->nt_position(), 0);
|
||||
}
|
||||
|
||||
PropertyChange s_and_l;
|
||||
|
@ -480,9 +480,9 @@ RegionView::region_resized (const PropertyChange& what_changed)
|
|||
|
||||
if (what_changed.contains (s_and_l)) {
|
||||
|
||||
set_duration (_region->length(), 0);
|
||||
set_duration (_region->nt_length(), 0);
|
||||
|
||||
unit_length = _region->length() / samples_per_pixel;
|
||||
unit_length = _region->length_samples() / samples_per_pixel;
|
||||
|
||||
for (vector<GhostRegion*>::iterator i = ghosts.begin(); i != ghosts.end(); ++i) {
|
||||
(*i)->set_duration (unit_length);
|
||||
|
@ -662,7 +662,7 @@ RegionView::lower_to_bottom ()
|
|||
}
|
||||
|
||||
bool
|
||||
RegionView::set_position (samplepos_t pos, void* /*src*/, double* ignored)
|
||||
RegionView::set_position (timepos_t const & pos, void* /*src*/, double* ignored)
|
||||
{
|
||||
double delta;
|
||||
bool ret;
|
||||
|
@ -691,21 +691,22 @@ RegionView::set_samples_per_pixel (double fpp)
|
|||
|
||||
for (vector<GhostRegion*>::iterator i = ghosts.begin(); i != ghosts.end(); ++i) {
|
||||
(*i)->set_samples_per_pixel (fpp);
|
||||
(*i)->set_duration (_region->length() / fpp);
|
||||
#warning NUTEMPO should GhostRegion really be using samples for length/duration?
|
||||
(*i)->set_duration (_region->length_samples() / fpp);
|
||||
}
|
||||
|
||||
region_sync_changed ();
|
||||
}
|
||||
|
||||
bool
|
||||
RegionView::set_duration (samplecnt_t samples, void *src)
|
||||
RegionView::set_duration (timecnt_t const & dur, void *src)
|
||||
{
|
||||
if (!TimeAxisViewItem::set_duration (samples, src)) {
|
||||
if (!TimeAxisViewItem::set_duration (dur, src)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (vector<GhostRegion*>::iterator i = ghosts.begin(); i != ghosts.end(); ++i) {
|
||||
(*i)->set_duration (_region->length() / samples_per_pixel);
|
||||
(*i)->set_duration (_region->length_samples() / samples_per_pixel);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -786,7 +787,7 @@ RegionView::make_name () const
|
|||
std::string str;
|
||||
|
||||
// XXX nice to have some good icons for this
|
||||
if (_region->position_lock_style() == MusicTime) {
|
||||
if (_region->position_time_domain() == Temporal::BeatTime) {
|
||||
str += "\u266B"; // BEAMED EIGHTH NOTES
|
||||
}
|
||||
|
||||
|
@ -824,11 +825,11 @@ void
|
|||
RegionView::region_sync_changed ()
|
||||
{
|
||||
int sync_dir;
|
||||
samplecnt_t sync_offset;
|
||||
timecnt_t sync_offset;
|
||||
|
||||
sync_offset = _region->sync_offset (sync_dir);
|
||||
|
||||
if (sync_offset == 0) {
|
||||
if (sync_offset.zero()) {
|
||||
/* no need for a sync mark */
|
||||
if (sync_mark) {
|
||||
sync_mark->hide();
|
||||
|
@ -862,7 +863,7 @@ RegionView::region_sync_changed ()
|
|||
|
||||
} else {
|
||||
|
||||
if ((sync_dir < 0) || ((sync_dir > 0) && (sync_offset > _region->length()))) {
|
||||
if ((sync_dir < 0) || ((sync_dir > 0) && (sync_offset > _region->nt_length()))) {
|
||||
|
||||
/* no sync mark - its out of the bounds of the region */
|
||||
|
||||
|
@ -877,7 +878,7 @@ RegionView::region_sync_changed ()
|
|||
|
||||
//points = sync_mark->property_points().get_value();
|
||||
|
||||
double offset = sync_offset / samples_per_pixel;
|
||||
double offset = trackview.editor().duration_to_pixels (sync_offset);
|
||||
points.push_back (ArdourCanvas::Duple (offset - ((sync_mark_width-1)/2), 1));
|
||||
points.push_back (ArdourCanvas::Duple (offset + ((sync_mark_width-1)/2), 1));
|
||||
points.push_back (ArdourCanvas::Duple (offset, sync_mark_width - 1));
|
||||
|
@ -952,9 +953,9 @@ RegionView::set_height (double h)
|
|||
if (sync_line) {
|
||||
Points points;
|
||||
int sync_dir;
|
||||
samplecnt_t sync_offset;
|
||||
timecnt_t sync_offset;
|
||||
sync_offset = _region->sync_offset (sync_dir);
|
||||
double offset = sync_offset / samples_per_pixel;
|
||||
double offset = trackview.editor().duration_to_pixels (sync_offset);
|
||||
|
||||
sync_line->set (
|
||||
ArdourCanvas::Duple (offset, 0),
|
||||
|
@ -997,9 +998,9 @@ RegionView::update_coverage_frame (LayerDisplay d)
|
|||
return;
|
||||
}
|
||||
|
||||
samplepos_t const position = _region->first_sample ();
|
||||
samplepos_t t = position;
|
||||
samplepos_t const end = _region->last_sample ();
|
||||
timepos_t const position = _region->nt_position ();
|
||||
timepos_t t (position);
|
||||
timepos_t const end = _region->nt_last ();
|
||||
|
||||
ArdourCanvas::Rectangle* cr = 0;
|
||||
bool me = false;
|
||||
|
@ -1010,20 +1011,20 @@ RegionView::update_coverage_frame (LayerDisplay d)
|
|||
|
||||
while (t < end) {
|
||||
|
||||
t++;
|
||||
t.increment();
|
||||
|
||||
/* is this region is on top at time t? */
|
||||
bool const new_me = (pl->top_unmuted_region_at (t) == _region);
|
||||
/* finish off any old rect, if required */
|
||||
if (cr && me != new_me) {
|
||||
cr->set_x1 (trackview.editor().sample_to_pixel (t - position));
|
||||
cr->set_x1 (trackview.editor().duration_to_pixels (position.distance (t)));
|
||||
}
|
||||
|
||||
/* start off any new rect, if required */
|
||||
if (cr == 0 || me != new_me) {
|
||||
cr = new ArdourCanvas::Rectangle (group);
|
||||
_coverage_frame.push_back (cr);
|
||||
cr->set_x0 (trackview.editor().sample_to_pixel (t - position));
|
||||
cr->set_x0 (trackview.editor().duration_to_pixels (position.distance (t)));
|
||||
cr->set_y0 (1);
|
||||
cr->set_y1 (_height + 1);
|
||||
cr->set_outline (false);
|
||||
|
@ -1035,7 +1036,7 @@ RegionView::update_coverage_frame (LayerDisplay d)
|
|||
}
|
||||
}
|
||||
t = pl->find_next_region_boundary (t, 1);
|
||||
if (t < 0) {
|
||||
if (t.negative()) {
|
||||
break;
|
||||
}
|
||||
me = new_me;
|
||||
|
@ -1045,7 +1046,7 @@ RegionView::update_coverage_frame (LayerDisplay d)
|
|||
|
||||
if (cr) {
|
||||
/* finish off the last rectangle */
|
||||
cr->set_x1 (trackview.editor().sample_to_pixel (end - position));
|
||||
cr->set_x1 (trackview.editor().duration_to_pixels (position.distance (end)));
|
||||
}
|
||||
|
||||
if (frame_handle_start) {
|
||||
|
@ -1066,67 +1067,67 @@ RegionView::update_coverage_frame (LayerDisplay d)
|
|||
}
|
||||
|
||||
bool
|
||||
RegionView::trim_front (timepos_t const & new_bound, bool no_overlap, const int32_t sub_num)
|
||||
RegionView::trim_front (timepos_t const & new_bound, bool no_overlap)
|
||||
{
|
||||
if (_region->locked()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
samplepos_t const pre_trim_first_sample = _region->first_sample();
|
||||
|
||||
if (_region->position() == new_bound) {
|
||||
if (_region->nt_position() == new_bound) {
|
||||
return false;
|
||||
}
|
||||
|
||||
_region->trim_front (new_bound, sub_num);
|
||||
timepos_t const pos = _region->nt_position();
|
||||
|
||||
_region->trim_front (new_bound);
|
||||
|
||||
if (no_overlap) {
|
||||
/* Get the next region on the left of this region and shrink/expand it. */
|
||||
boost::shared_ptr<Playlist> playlist (_region->playlist());
|
||||
boost::shared_ptr<Region> region_left = playlist->find_next_region (pre_trim_first_sample, End, 0);
|
||||
boost::shared_ptr<Region> region_left = playlist->find_next_region (pos, End, 0);
|
||||
|
||||
bool regions_touching = false;
|
||||
|
||||
if (region_left != 0 && (pre_trim_first_sample == region_left->last_sample() + 1)) {
|
||||
if (region_left != 0 && (pos == region_left->nt_end())) {
|
||||
regions_touching = true;
|
||||
}
|
||||
|
||||
/* Only trim region on the left if the first sample has gone beyond the left region's last sample. */
|
||||
if (region_left != 0 && (region_left->last_sample() > _region->first_sample() || regions_touching)) {
|
||||
region_left->trim_end (_region->first_sample() - 1);
|
||||
if (region_left != 0 && (region_left->nt_last() > _region->nt_position() || regions_touching)) {
|
||||
region_left->trim_end (_region->nt_position().decrement());
|
||||
}
|
||||
}
|
||||
|
||||
region_changed (ARDOUR::bounds_change);
|
||||
|
||||
return (pre_trim_first_sample != _region->first_sample()); // return true if we actually changed something
|
||||
return (pos != _region->nt_position()); // return true if we actually changed something
|
||||
}
|
||||
|
||||
bool
|
||||
RegionView::trim_end (timepos_t const & new_bound, bool no_overlap, const int32_t sub_num)
|
||||
RegionView::trim_end (timepos_t const & new_bound, bool no_overlap)
|
||||
{
|
||||
if (_region->locked()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
samplepos_t const pre_trim_last_sample = _region->last_sample();
|
||||
timepos_t const last = _region->nt_last();
|
||||
|
||||
_region->trim_end (new_bound, sub_num);
|
||||
_region->trim_end (new_bound);
|
||||
|
||||
if (no_overlap) {
|
||||
/* Get the next region on the right of this region and shrink/expand it. */
|
||||
boost::shared_ptr<Playlist> playlist (_region->playlist());
|
||||
boost::shared_ptr<Region> region_right = playlist->find_next_region (pre_trim_last_sample, Start, 1);
|
||||
boost::shared_ptr<Region> region_right = playlist->find_next_region (last, Start, 1);
|
||||
|
||||
bool regions_touching = false;
|
||||
|
||||
if (region_right != 0 && (pre_trim_last_sample == region_right->first_sample() - 1)) {
|
||||
if (region_right != 0 && (last == region_right->nt_position().decrement())) {
|
||||
regions_touching = true;
|
||||
}
|
||||
|
||||
/* Only trim region on the right if the last sample has gone beyond the right region's first sample. */
|
||||
if (region_right != 0 && (region_right->first_sample() < _region->last_sample() || regions_touching)) {
|
||||
region_right->trim_front (_region->last_sample() + 1, sub_num);
|
||||
if (region_right != 0 && (region_right->nt_position() < _region->nt_last() || regions_touching)) {
|
||||
region_right->trim_front (_region->nt_end());
|
||||
}
|
||||
|
||||
region_changed (ARDOUR::bounds_change);
|
||||
|
@ -1135,7 +1136,7 @@ RegionView::trim_end (timepos_t const & new_bound, bool no_overlap, const int32_
|
|||
region_changed (PropertyChange (ARDOUR::Properties::length));
|
||||
}
|
||||
|
||||
return (pre_trim_last_sample != _region->last_sample()); // return true if we actually changed something
|
||||
return (last != _region->nt_last()); // return true if we actually changed something
|
||||
}
|
||||
|
||||
|
||||
|
@ -1172,16 +1173,16 @@ RegionView::snap_region_time_to_region_time (timepos_t const & x, bool ensure_sn
|
|||
{
|
||||
PublicEditor& editor = trackview.editor();
|
||||
/* x is region relative, convert it to global absolute time */
|
||||
timepos_t const session_sample = _region->position() + x;
|
||||
timepos_t const session_pos = _region->nt_position() + x;
|
||||
|
||||
/* try a snap in either direction */
|
||||
timepos_t snapped = session_sample;
|
||||
editor.snap_to (snapped, RoundNearest, false, ensure_snap);
|
||||
timepos_t snapped = session_pos;
|
||||
editor.snap_to (snapped, Temporal::RoundNearest, SnapToAny_Visual, ensure_snap);
|
||||
|
||||
/* if we went off the beginning of the region, snap forwards */
|
||||
if (snapped < _region->position ()) {
|
||||
snapped = session_sample;
|
||||
editor.snap_to (snapped, RoundUpAlways, false, ensure_snap);
|
||||
if (snapped < _region->nt_position ()) {
|
||||
snapped = session_pos;
|
||||
editor.snap_to (snapped, Temporal::RoundUpAlways, SnapToAny_Visual, ensure_snap);
|
||||
}
|
||||
|
||||
/* back to region relative */
|
||||
|
|
|
@ -881,17 +881,17 @@ TimeAxisView::show_selection (TimeSelection& ts)
|
|||
}
|
||||
|
||||
for (list<TimelineRange>::iterator i = ts.begin(); i != ts.end(); ++i) {
|
||||
samplepos_t start, end;
|
||||
samplecnt_t cnt;
|
||||
timepos_t start, end;
|
||||
timecnt_t cnt;
|
||||
|
||||
start = (*i).start;
|
||||
end = (*i).end;
|
||||
cnt = end - start + 1;
|
||||
start = (*i).start();
|
||||
end = (*i).end();
|
||||
cnt = start.distance (end); /* XXX NUTEMPO used to add 1 here */
|
||||
|
||||
rect = get_selection_rect ((*i).id);
|
||||
|
||||
x1 = _editor.sample_to_pixel (start);
|
||||
x2 = _editor.sample_to_pixel (start + cnt - 1);
|
||||
x1 = _editor.time_to_pixel (start);
|
||||
x2 = _editor.time_to_pixel (end.decrement());
|
||||
y2 = current_height() - 1;
|
||||
|
||||
if (dynamic_cast<AudioTimeAxisView*>(this)) {
|
||||
|
@ -1072,7 +1072,7 @@ TimeAxisView::remove_child (boost::shared_ptr<TimeAxisView> child)
|
|||
* @param result Filled in with selectable things.
|
||||
*/
|
||||
void
|
||||
TimeAxisView::get_selectables (samplepos_t start, samplepos_t end, double top, double bot, list<Selectable*>& results, bool within)
|
||||
TimeAxisView::get_selectables (timepos_t const & start, timepos_t const & end, double top, double bot, list<Selectable*>& results, bool within)
|
||||
{
|
||||
for (Children::iterator i = children.begin(); i != children.end(); ++i) {
|
||||
if (!(*i)->hidden()) {
|
||||
|
|
|
@ -121,10 +121,9 @@ TimeAxisViewItem::set_constant_heights ()
|
|||
*/
|
||||
TimeAxisViewItem::TimeAxisViewItem(
|
||||
const string & it_name, ArdourCanvas::Item& parent, TimeAxisView& tv, double spu, uint32_t base_color,
|
||||
samplepos_t start, samplecnt_t duration, bool recording, bool automation, Visibility vis
|
||||
timepos_t const & start, timecnt_t const & duration, bool recording, bool automation, Visibility vis
|
||||
)
|
||||
: trackview (tv)
|
||||
, sample_position (-1)
|
||||
, item_name (it_name)
|
||||
, selection_frame (0)
|
||||
, _height (1.0)
|
||||
|
@ -141,7 +140,6 @@ TimeAxisViewItem::TimeAxisViewItem (const TimeAxisViewItem& other)
|
|||
, Selectable (other)
|
||||
, PBD::ScopedConnectionList()
|
||||
, trackview (other.trackview)
|
||||
, sample_position (-1)
|
||||
, item_name (other.item_name)
|
||||
, selection_frame (0)
|
||||
, _height (1.0)
|
||||
|
@ -156,13 +154,13 @@ TimeAxisViewItem::TimeAxisViewItem (const TimeAxisViewItem& other)
|
|||
|
||||
_selected = other._selected;
|
||||
|
||||
init (parent, other.samples_per_pixel, other.fill_color, other.sample_position,
|
||||
init (parent, other.samples_per_pixel, other.fill_color, other.time_position,
|
||||
other.item_duration, other.visibility, other.wide_enough_for_name, other.high_enough_for_name);
|
||||
}
|
||||
|
||||
void
|
||||
TimeAxisViewItem::init (ArdourCanvas::Item* parent, double fpp, uint32_t base_color,
|
||||
samplepos_t start, samplepos_t duration, Visibility vis,
|
||||
timepos_t const & start, timecnt_t const & duration, Visibility vis,
|
||||
bool wide, bool high)
|
||||
{
|
||||
group = new ArdourCanvas::Container (parent);
|
||||
|
@ -171,12 +169,12 @@ TimeAxisViewItem::init (ArdourCanvas::Item* parent, double fpp, uint32_t base_co
|
|||
fill_color = base_color;
|
||||
fill_color_name = "time axis view item base";
|
||||
samples_per_pixel = fpp;
|
||||
sample_position = start;
|
||||
time_position = start;
|
||||
item_duration = duration;
|
||||
name_connected = false;
|
||||
position_locked = false;
|
||||
max_item_duration = Temporal::max_samplepos;
|
||||
min_item_duration = 0;
|
||||
max_item_duration = timecnt_t::max (item_duration.time_domain());
|
||||
min_item_duration = timecnt_t::zero (item_duration.time_domain());
|
||||
visibility = vis;
|
||||
_sensitive = true;
|
||||
name_text_width = 0;
|
||||
|
@ -289,9 +287,9 @@ TimeAxisViewItem::set_position(timepos_t const & pos, void* src, double* delta)
|
|||
return false;
|
||||
}
|
||||
|
||||
sample_position = pos.samples();
|
||||
position = pos;
|
||||
|
||||
double new_unit_pos = trackview.editor().sample_to_pixel (sample_position);
|
||||
double new_unit_pos = trackview.editor().time_to_pixel (time_position);
|
||||
|
||||
if (delta) {
|
||||
(*delta) = new_unit_pos - group->position().x;
|
||||
|
@ -305,16 +303,16 @@ TimeAxisViewItem::set_position(timepos_t const & pos, void* src, double* delta)
|
|||
}
|
||||
|
||||
group->set_x_position (new_unit_pos);
|
||||
PositionChanged (sample_position, src); /* EMIT_SIGNAL */
|
||||
PositionChanged (time_position, src); /* EMIT_SIGNAL */
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/** @return position of this item on the timeline */
|
||||
samplepos_t
|
||||
timepos_t
|
||||
TimeAxisViewItem::get_position() const
|
||||
{
|
||||
return sample_position;
|
||||
return time_position;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -326,7 +324,7 @@ TimeAxisViewItem::get_position() const
|
|||
*/
|
||||
|
||||
bool
|
||||
TimeAxisViewItem::set_duration (samplecnt_t dur, void* src)
|
||||
TimeAxisViewItem::set_duration (timecnt_t const & dur, void* src)
|
||||
{
|
||||
if ((dur > max_item_duration) || (dur < min_item_duration)) {
|
||||
warning << string_compose (
|
||||
|
@ -342,8 +340,8 @@ TimeAxisViewItem::set_duration (samplecnt_t dur, void* src)
|
|||
|
||||
item_duration = dur;
|
||||
|
||||
double end_pixel = trackview.editor().sample_to_pixel (sample_position + dur);
|
||||
double first_pixel = trackview.editor().sample_to_pixel (sample_position);
|
||||
double end_pixel = trackview.editor().time_to_pixel (time_position + dur);
|
||||
double first_pixel = trackview.editor().time_to_pixel (time_position);
|
||||
|
||||
reset_width_dependent_items (end_pixel - first_pixel);
|
||||
|
||||
|
@ -352,7 +350,7 @@ TimeAxisViewItem::set_duration (samplecnt_t dur, void* src)
|
|||
}
|
||||
|
||||
/** @return duration of this item */
|
||||
samplepos_t
|
||||
timecnt_t
|
||||
TimeAxisViewItem::get_duration() const
|
||||
{
|
||||
return item_duration;
|
||||
|
@ -372,7 +370,7 @@ TimeAxisViewItem::set_max_duration(samplecnt_t dur, void* src)
|
|||
}
|
||||
|
||||
/** @return the maximum duration that this item may have */
|
||||
samplecnt_t
|
||||
timecnt_t
|
||||
TimeAxisViewItem::get_max_duration() const
|
||||
{
|
||||
return max_item_duration;
|
||||
|
@ -392,7 +390,7 @@ TimeAxisViewItem::set_min_duration(samplecnt_t dur, void* src)
|
|||
}
|
||||
|
||||
/** @return the minimum duration that this item mey have */
|
||||
samplecnt_t
|
||||
timecnt_t
|
||||
TimeAxisViewItem::get_min_duration() const
|
||||
{
|
||||
return min_item_duration;
|
||||
|
@ -806,8 +804,8 @@ TimeAxisViewItem::set_samples_per_pixel (double fpp)
|
|||
samples_per_pixel = fpp;
|
||||
set_position (this->get_position(), this);
|
||||
|
||||
double end_pixel = trackview.editor().sample_to_pixel (sample_position + get_duration());
|
||||
double first_pixel = trackview.editor().sample_to_pixel (sample_position);
|
||||
double end_pixel = trackview.editor().time_to_pixel (timeposition + get_duration());
|
||||
double first_pixel = trackview.editor().time_to_pixel (time_position);
|
||||
|
||||
reset_width_dependent_items (end_pixel - first_pixel);
|
||||
}
|
||||
|
|
|
@ -132,19 +132,19 @@ public:
|
|||
sigc::signal<void,std::string,std::string,void*> NameChanged;
|
||||
|
||||
/** Emiited when the position of this item changes */
|
||||
sigc::signal<void,samplepos_t,void*> PositionChanged;
|
||||
sigc::signal<void,Temporal::timepos_t,void*> PositionChanged;
|
||||
|
||||
/** Emitted when the position lock of this item is changed */
|
||||
sigc::signal<void,bool,void*> PositionLockChanged;
|
||||
|
||||
/** Emitted when the duration of this item changes */
|
||||
sigc::signal<void,samplecnt_t,void*> DurationChanged;
|
||||
sigc::signal<void,Temporal::timecnt_t,void*> DurationChanged;
|
||||
|
||||
/** Emitted when the maximum item duration is changed */
|
||||
sigc::signal<void,samplecnt_t,void*> MaxDurationChanged;
|
||||
sigc::signal<void,Temporal::timecnt_t,void*> MaxDurationChanged;
|
||||
|
||||
/** Emitted when the mionimum item duration is changed */
|
||||
sigc::signal<void,samplecnt_t,void*> MinDurationChanged;
|
||||
sigc::signal<void,Temporal::timecnt_t,void*> MinDurationChanged;
|
||||
|
||||
enum Visibility {
|
||||
ShowFrame = 0x1,
|
||||
|
@ -161,11 +161,11 @@ public:
|
|||
|
||||
protected:
|
||||
TimeAxisViewItem (const std::string &, ArdourCanvas::Item&, TimeAxisView&, double, uint32_t fill_color,
|
||||
samplepos_t, samplecnt_t, bool recording = false, bool automation = false, Visibility v = Visibility (0));
|
||||
Temporal::timepos_t const &, Temporal::timecnt_t const &, bool recording = false, bool automation = false, Visibility v = Visibility (0));
|
||||
|
||||
TimeAxisViewItem (const TimeAxisViewItem&);
|
||||
|
||||
void init (ArdourCanvas::Item*, double, uint32_t, samplepos_t, samplepos_t, Visibility, bool, bool);
|
||||
void init (ArdourCanvas::Item*, double, uint32_t, Temporal::timepos_t const &, Temporal::timecnt_t const &, Visibility, bool, bool);
|
||||
|
||||
virtual bool canvas_group_event (GdkEvent*);
|
||||
|
||||
|
@ -186,16 +186,16 @@ protected:
|
|||
bool position_locked;
|
||||
|
||||
/** position of this item on the timeline */
|
||||
samplepos_t sample_position;
|
||||
Temporal::timepos_t time_position;
|
||||
|
||||
/** duration of this item upon the timeline */
|
||||
samplecnt_t item_duration;
|
||||
Temporal::timecnt_t item_duration;
|
||||
|
||||
/** maximum duration that this item can have */
|
||||
samplecnt_t max_item_duration;
|
||||
Temporal::timecnt_t max_item_duration;
|
||||
|
||||
/** minimum duration that this item can have */
|
||||
samplecnt_t min_item_duration;
|
||||
Temporal::timecnt_t min_item_duration;
|
||||
|
||||
/** indicates whether the max duration constraint is active */
|
||||
bool max_duration_active;
|
||||
|
|
|
@ -96,11 +96,11 @@ gtk2_ardour_sources = [
|
|||
'editor_markers.cc',
|
||||
'editor_mixer.cc',
|
||||
'editor_mouse.cc',
|
||||
'editor_ops.cc',
|
||||
# 'editor_ops.cc',
|
||||
'editor_regions.cc',
|
||||
'editor_routes.cc',
|
||||
'editor_rulers.cc',
|
||||
'editor_selection.cc',
|
||||
# 'editor_selection.cc',
|
||||
'editor_snapshots.cc',
|
||||
'editor_sources.cc',
|
||||
'editor_summary.cc',
|
||||
|
|
Loading…
Reference in New Issue