#include "ardour/session.h"
#include "ardour/value_as_string.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace std;
using namespace ARDOUR;
, _parent_group (parent)
, _offset (0)
, _maximum_time (max_framepos)
+ , _fill (false)
, _desc (desc)
{
if (converter) {
}
} else if (_visible & SelectedControlPoints) {
for (vector<ControlPoint*>::iterator i = control_points.begin(); i != control_points.end(); ++i) {
- if ((*i)->get_selected()) {
+ if ((*i)->selected()) {
(*i)->show ();
} else {
(*i)->hide ();
(*i)->set_size (bsz);
}
+ if (_fill) {
+ line->set_fill_y1 (_height);
+ } else {
+ line->set_fill_y1 (0);
+ }
reset ();
}
}
{
_line_color = color;
line->set_outline_color (color);
+ line->set_fill_color ((color & 0xffff00) + 80); // XXX TODO configurable transparency
}
void
_drag_points.clear ();
_drag_points.push_back (cp);
- if (cp->get_selected ()) {
+ if (cp->selected ()) {
for (vector<ControlPoint*>::iterator i = control_points.begin(); i != control_points.end(); ++i) {
- if (*i != cp && (*i)->get_selected()) {
+ if (*i != cp && (*i)->selected()) {
_drag_points.push_back (*i);
}
}
before_x = line.nth (front()->view_index() - 1)->get_x();
const framepos_t pos = e.pixel_to_sample(before_x);
- const Meter& meter = map.meter_at (pos);
- const framecnt_t len = ceil (meter.frames_per_bar (map.tempo_at (pos), e.session()->frame_rate())
+ const Meter& meter = map.meter_at_frame (pos);
+ const framecnt_t len = ceil (meter.frames_per_bar (map.tempo_at_frame (pos), e.session()->frame_rate())
/ (Timecode::BBT_Time::ticks_per_beat * meter.divisions_per_bar()) );
const double one_tick_in_pixels = e.sample_to_pixel_unrounded (len);
after_x = line.nth (back()->view_index() + 1)->get_x();
const framepos_t pos = e.pixel_to_sample(after_x);
- const Meter& meter = map.meter_at (pos);
- const framecnt_t len = ceil (meter.frames_per_bar (map.tempo_at (pos), e.session()->frame_rate())
+ const Meter& meter = map.meter_at_frame (pos);
+ const framecnt_t len = ceil (meter.frames_per_bar (map.tempo_at_frame (pos), e.session()->frame_rate())
/ (Timecode::BBT_Time::ticks_per_beat * meter.divisions_per_bar()));
const double one_tick_in_pixels = e.sample_to_pixel_unrounded (len);
}
/* clamp y */
-
for (list<ControlPoint*>::iterator i = _drag_points.begin(); i != _drag_points.end(); ++i) {
double const y = ((_height - (*i)->get_y()) / _height) + dy;
if (y < 0) {
line->set_steps (line_points, is_stepped());
}
}
-
+ double const result_frac = _last_drag_fraction + dy;
_drag_distance += dx;
_drag_x += dx;
- _last_drag_fraction = fraction;
+ _last_drag_fraction = result_frac;
did_push = with_push;
- return pair<double, float> (_drag_x + dx, _last_drag_fraction + dy);
+ return pair<double, float> (_drag_x + dx, result_frac);
}
/** Should be called to indicate the end of a drag */
if ( alist->parameter().type() == GainAutomation
|| alist->parameter().type() == EnvelopeAutomation
|| (_desc.logarithmic && _desc.lower == 0. && _desc.upper > _desc.lower)) {
- y = gain_to_slider_position_with_max (y, Config->get_max_gain());
+ y = gain_to_slider_position_with_max (y, _desc.upper);
} else if (alist->parameter().type() == TrimAutomation
|| (_desc.logarithmic && _desc.lower * _desc.upper > 0 && _desc.upper > _desc.lower)) {
const double lower_db = accurate_coefficient_to_dB (_desc.lower);