summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/automation_line.cc24
-rw-r--r--gtk2_ardour/automation_line.h4
-rw-r--r--gtk2_ardour/automation_time_axis.cc3
-rw-r--r--gtk2_ardour/generic_pluginui.cc49
-rw-r--r--gtk2_ardour/midi_automation_line.cc2
-rw-r--r--gtk2_ardour/region_gain_line.cc2
6 files changed, 29 insertions, 55 deletions
diff --git a/gtk2_ardour/automation_line.cc b/gtk2_ardour/automation_line.cc
index c1549ecab3..2e9f988bfa 100644
--- a/gtk2_ardour/automation_line.cc
+++ b/gtk2_ardour/automation_line.cc
@@ -58,6 +58,7 @@
#include "ardour/event_type_map.h"
#include "ardour/session.h"
+#include "ardour/value_as_string.h"
#include "i18n.h"
@@ -73,6 +74,7 @@ AutomationLine::AutomationLine (const string& name,
TimeAxisView& tv,
ArdourCanvas::Item& parent,
boost::shared_ptr<AutomationList> al,
+ const ParameterDescriptor& desc,
Evoral::TimeConverter<double, framepos_t>* converter)
: trackview (tv)
, _name (name)
@@ -81,6 +83,7 @@ AutomationLine::AutomationLine (const string& name,
, _parent_group (parent)
, _offset (0)
, _maximum_time (max_framepos)
+ , _desc (desc)
{
if (converter) {
_our_time_converter = false;
@@ -112,7 +115,8 @@ AutomationLine::AutomationLine (const string& name,
trackview.session()->register_with_memento_command_factory(alist->id(), this);
if (alist->parameter().type() == GainAutomation ||
- alist->parameter().type() == EnvelopeAutomation) {
+ alist->parameter().type() == EnvelopeAutomation ||
+ desc.unit == ParameterDescriptor::DB) {
set_uses_gain_mapping (true);
}
@@ -356,24 +360,20 @@ AutomationLine::get_verbose_cursor_relative_string (double original, double frac
string
AutomationLine::fraction_to_string (double fraction) const
{
- char buf[32];
-
if (_uses_gain_mapping) {
+ char buf[32];
if (fraction == 0.0) {
snprintf (buf, sizeof (buf), "-inf");
} else {
snprintf (buf, sizeof (buf), "%.1f", accurate_coefficient_to_dB (slider_position_to_gain_with_max (fraction, Config->get_max_gain())));
}
+ return buf;
} else {
view_to_model_coord_y (fraction);
- if (EventTypeMap::instance().is_integer (alist->parameter())) {
- snprintf (buf, sizeof (buf), "%d", (int)fraction);
- } else {
- snprintf (buf, sizeof (buf), "%.2f", fraction);
- }
+ return ARDOUR::value_as_string (_desc, fraction);
}
- return buf;
+ return ""; /*NOTREACHED*/
}
/**
@@ -406,11 +406,7 @@ AutomationLine::fraction_to_relative_string (double original, double fraction) c
} else {
view_to_model_coord_y (original);
view_to_model_coord_y (fraction);
- if (EventTypeMap::instance().is_integer (alist->parameter())) {
- snprintf (buf, sizeof (buf), "%d", (int)fraction - (int)original);
- } else {
- snprintf (buf, sizeof (buf), "%.2f", fraction - original);
- }
+ return ARDOUR::value_as_string (_desc, fraction - original);
}
return buf;
diff --git a/gtk2_ardour/automation_line.h b/gtk2_ardour/automation_line.h
index 02c67d0dcf..a18f93d9ae 100644
--- a/gtk2_ardour/automation_line.h
+++ b/gtk2_ardour/automation_line.h
@@ -34,6 +34,7 @@
#include "pbd/memento_command.h"
#include "ardour/automation_list.h"
+#include "ardour/parameter_descriptor.h"
#include "ardour/types.h"
#include "canvas/types.h"
@@ -64,6 +65,7 @@ public:
TimeAxisView& tv,
ArdourCanvas::Item& parent,
boost::shared_ptr<ARDOUR::AutomationList> al,
+ const ARDOUR::ParameterDescriptor& desc,
Evoral::TimeConverter<double, ARDOUR::framepos_t>* converter = 0);
virtual ~AutomationLine ();
@@ -234,6 +236,8 @@ private:
/** maximum time that a point on this line can be at, relative to the position of its region or start of its track */
ARDOUR::framecnt_t _maximum_time;
+ const ARDOUR::ParameterDescriptor _desc;
+
friend class AudioRegionGainLine;
};
diff --git a/gtk2_ardour/automation_time_axis.cc b/gtk2_ardour/automation_time_axis.cc
index a49bcf0086..3d2773b879 100644
--- a/gtk2_ardour/automation_time_axis.cc
+++ b/gtk2_ardour/automation_time_axis.cc
@@ -250,7 +250,8 @@ AutomationTimeAxisView::AutomationTimeAxisView (
ARDOUR::EventTypeMap::instance().to_symbol(_parameter),
*this,
*_canvas_display,
- _control->alist()
+ _control->alist(),
+ _control->desc()
)
);
diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc
index fb35882b34..a4de4fd75e 100644
--- a/gtk2_ardour/generic_pluginui.cc
+++ b/gtk2_ardour/generic_pluginui.cc
@@ -41,6 +41,7 @@
#include "ardour/plugin.h"
#include "ardour/plugin_insert.h"
#include "ardour/session.h"
+#include "ardour/value_as_string.h"
#include "ardour_ui.h"
#include "prompter.h"
@@ -504,51 +505,23 @@ GenericPluginUI::automation_state_changed (ControlUI* cui)
}
}
-
bool
GenericPluginUI::integer_printer (char buf[32], Adjustment &adj, ControlUI* cui)
{
- float const v = adj.get_value ();
-
- if (cui->scale_points) {
- ScalePoints::const_iterator i = cui->scale_points->begin ();
- while (i != cui->scale_points->end() && i->second != v) {
- ++i;
- }
-
- if (i != cui->scale_points->end ()) {
- snprintf (buf, 32, "%s", i->first.c_str());
- return true;
- }
- }
-
- snprintf (buf, 32, "%.0f", v);
+ float const v = cui->control->interface_to_internal(adj.get_value ());
+ const std::string& str = ARDOUR::value_as_string(cui->control->desc(), Variant(v));
+ const size_t len = str.copy(buf, 31);
+ buf[len] = '\0';
return true;
}
bool
GenericPluginUI::midinote_printer (char buf[32], Adjustment &adj, ControlUI* cui)
{
- float const v = adj.get_value ();
-
- if (cui->scale_points) {
- ScalePoints::const_iterator i = cui->scale_points->begin ();
- while (i != cui->scale_points->end() && i->second != v) {
- ++i;
- }
-
- if (i != cui->scale_points->end ()) {
- snprintf (buf, 32, "%s", i->first.c_str());
- return true;
- }
- }
- if (v >= 0 && v <= 127) {
- int mn = rint(v);
- const char notename[12][3] = { "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" };
- snprintf (buf, 32, "%s %d", notename[mn%12], (mn/12)-2);
- } else {
- snprintf (buf, 32, "%.0f", v);
- }
+ float const v = cui->control->interface_to_internal(adj.get_value ());
+ const std::string& str = ARDOUR::value_as_string(cui->control->desc(), Variant(v));
+ const size_t len = str.copy(buf, 31);
+ buf[len] = '\0';
return true;
}
@@ -687,9 +660,9 @@ GenericPluginUI::build_control_ui (const ParameterDescriptor& desc,
Adjustment* adj = control_ui->controller->adjustment();
if (desc.integer_step) {
- control_ui->clickbox = new ClickBox (adj, "PluginUIClickBox");
+ control_ui->clickbox = new ClickBox (adj, "PluginUIClickBox", desc.enumeration);
Gtkmm2ext::set_size_request_to_display_given_text (*control_ui->clickbox, "g9999999", 2, 2);
- if (desc.midinote) {
+ if (desc.unit == ParameterDescriptor::MIDI_NOTE) {
control_ui->clickbox->set_printer (sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::midinote_printer), control_ui));
} else {
control_ui->clickbox->set_printer (sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::integer_printer), control_ui));
diff --git a/gtk2_ardour/midi_automation_line.cc b/gtk2_ardour/midi_automation_line.cc
index e5f30493d7..30bb37c5b0 100644
--- a/gtk2_ardour/midi_automation_line.cc
+++ b/gtk2_ardour/midi_automation_line.cc
@@ -34,7 +34,7 @@ MidiAutomationLine::MidiAutomationLine (
boost::shared_ptr<ARDOUR::MidiRegion> region,
Evoral::Parameter parameter,
Evoral::TimeConverter<double, ARDOUR::framepos_t>* converter)
- : AutomationLine (name, tav, parent, list, converter)
+ : AutomationLine (name, tav, parent, list, parameter, converter)
, _region (region)
, _parameter (parameter)
{
diff --git a/gtk2_ardour/region_gain_line.cc b/gtk2_ardour/region_gain_line.cc
index 43cd0e5140..b010efc04c 100644
--- a/gtk2_ardour/region_gain_line.cc
+++ b/gtk2_ardour/region_gain_line.cc
@@ -38,7 +38,7 @@ using namespace ARDOUR;
using namespace PBD;
AudioRegionGainLine::AudioRegionGainLine (const string & name, AudioRegionView& r, ArdourCanvas::Container& parent, boost::shared_ptr<AutomationList> l)
- : AutomationLine (name, r.get_time_axis_view(), parent, l)
+ : AutomationLine (name, r.get_time_axis_view(), parent, l, l->parameter())
, rv (r)
{
// If this isn't true something is horribly wrong, and we'll get catastrophic gain values