Fix stacked regions display mode.
git-svn-id: svn://localhost/ardour2/branches/3.0@4337 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
d724837a44
commit
e6c2f03ca1
@ -194,7 +194,7 @@ CrossfadeView::redraw_curves ()
|
||||
for (int i = 0, pci = 0; i < npoints; ++i) {
|
||||
Art::Point &p = (*points)[pci++];
|
||||
p.set_x(i);
|
||||
p.set_y(_y_position + 2.0 + h - (h * vec[i]));
|
||||
p.set_y(2.0 + h - (h * vec[i]));
|
||||
}
|
||||
fade_in->property_points() = *points;
|
||||
|
||||
@ -202,7 +202,7 @@ CrossfadeView::redraw_curves ()
|
||||
for (int i = 0, pci = 0; i < npoints; ++i) {
|
||||
Art::Point &p = (*points)[pci++];
|
||||
p.set_x(i);
|
||||
p.set_y(_y_position + 2.0 + h - (h * vec[i]));
|
||||
p.set_y(2.0 + h - (h * vec[i]));
|
||||
}
|
||||
fade_out->property_points() = *points;
|
||||
|
||||
|
@ -68,7 +68,6 @@ struct CrossfadeView : public TimeAxisViewItem
|
||||
bool _visible;
|
||||
|
||||
double spu;
|
||||
double _y_position;
|
||||
double _height;
|
||||
|
||||
ArdourCanvas::Item *overlap_rect;
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
/*
|
||||
Copyright (C) 2000-2001 Paul Davis
|
||||
|
||||
@ -3902,7 +3901,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
|
||||
double ix1, ix2, iy1, iy2;
|
||||
rv2->get_canvas_frame()->get_bounds (ix1, iy1, ix2, iy2);
|
||||
rv2->get_canvas_frame()->i2w (ix1, iy1);
|
||||
|
||||
|
||||
if (-x_delta > ix1 + horizontal_adjustment.get_value()) {
|
||||
// do_move = false;
|
||||
x_delta = 0;
|
||||
@ -3954,27 +3953,33 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
|
||||
for (list<RegionView*>::const_iterator i = layered_regions.begin(); i != layered_regions.end(); ++i) {
|
||||
|
||||
RegionView* rv = (*i);
|
||||
double ix1, ix2, iy1, iy2;
|
||||
int32_t temp_pointer_y_span = pointer_y_span;
|
||||
|
||||
if (rv->region()->locked()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/* get item BBox, which will be relative to parent. so we have
|
||||
to query on a child, then convert to world coordinates using
|
||||
the parent.
|
||||
*/
|
||||
/* here we are calculating the y distance from the
|
||||
top of the first track view to the top of the region
|
||||
area of the track view that we're working on */
|
||||
|
||||
rv->get_canvas_frame()->get_bounds (ix1, iy1, ix2, iy2);
|
||||
rv->get_canvas_frame()->i2w (ix1, iy1);
|
||||
/* this x value is just a dummy value so that we have something
|
||||
to pass to i2w () */
|
||||
|
||||
double ix1 = 0;
|
||||
|
||||
/* distance from the top of this track view to the region area
|
||||
of our track view is always 1 */
|
||||
|
||||
cerr << "adjust y from " << iy1 << " using "
|
||||
<< vertical_adjustment.get_value() << " - "
|
||||
<< canvas_timebars_vsize
|
||||
<< endl;
|
||||
double iy1 = 1;
|
||||
|
||||
iy1 += get_trackview_group_vertical_offset ();;
|
||||
/* convert to world coordinates, ie distance from the top of
|
||||
the ruler section */
|
||||
|
||||
rv->get_canvas_frame()->i2w (ix1, iy1);
|
||||
|
||||
/* compensate for the ruler section and the vertical scrollbar position */
|
||||
iy1 += get_trackview_group_vertical_offset ();
|
||||
|
||||
if (drag_info.first_move) {
|
||||
|
||||
@ -3989,7 +3994,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
|
||||
parent groups have different coordinates.
|
||||
*/
|
||||
|
||||
rv->get_canvas_group()->property_y() = iy1 - 1;
|
||||
rv->get_canvas_group()->property_y() = iy1 - 1;
|
||||
rv->get_canvas_group()->reparent(*_region_motion_group);
|
||||
|
||||
rv->fake_set_opaque (true);
|
||||
@ -4040,7 +4045,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
|
||||
temp_pointer_y_span++;
|
||||
}
|
||||
/* find out where we'll be when we move and set height accordingly */
|
||||
|
||||
|
||||
tvp2 = trackview_by_y_position (iy1 + y_delta);
|
||||
temp_rtv = dynamic_cast<RouteTimeAxisView*>(tvp2);
|
||||
rv->set_height (temp_rtv->current_height());
|
||||
|
@ -167,6 +167,7 @@ StreamView::add_region_view (boost::shared_ptr<Region> r)
|
||||
// ENSURE_GUI_THREAD (bind (mem_fun (*this, &AudioStreamView::add_region_view), r));
|
||||
|
||||
add_region_view_internal (r, true);
|
||||
update_contents_height ();
|
||||
}
|
||||
|
||||
void
|
||||
@ -433,8 +434,7 @@ StreamView::update_contents_height ()
|
||||
(*i)->set_height (height);
|
||||
break;
|
||||
case Stacked:
|
||||
cout << "FIXME: Stacked regions: set y position" << endl;
|
||||
//double const y = (*i)->region()->layer() * lh;
|
||||
(*i)->set_y ((*i)->region()->layer() * lh);
|
||||
(*i)->set_height (lh);
|
||||
break;
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ public:
|
||||
virtual int set_samples_per_unit (gdouble spp);
|
||||
gdouble get_samples_per_unit () { return _samples_per_unit; }
|
||||
|
||||
void set_layer_display (LayerDisplay);
|
||||
void set_layer_display (LayerDisplay);
|
||||
|
||||
ArdourCanvas::Group* background_group() { return _background_group; }
|
||||
ArdourCanvas::Group* canvas_item() { return canvas_group; }
|
||||
|
@ -1048,3 +1048,14 @@ TimeAxisViewItem::idle_remove_this_item(TimeAxisViewItem* item, void* src)
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
TimeAxisViewItem::set_y (double y)
|
||||
{
|
||||
double const old = group->property_y ();
|
||||
if (y != old) {
|
||||
group->move (0, y - old);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -208,6 +208,8 @@ class TimeAxisViewItem : public Selectable
|
||||
*/
|
||||
virtual void set_height(double h) ;
|
||||
|
||||
void set_y (double);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user