46 : parent_invalidator(ir)
48 , _meter_orientation(o)
49 , regular_meter_width (6)
55 , visible_meter_count (0)
56 , color_changed (false)
70 for (vector<MeterInfo>::iterator i =
meters.begin(); i !=
meters.end(); i++) {
129 vector<MeterInfo>::iterator i;
138 for (n = 0, i =
meters.begin(); i !=
meters.end(); ++i, ++n) {
141 if (mpeak > (*i).max_peak) {
142 (*i).max_peak = mpeak;
185 if (p ==
"meter-hold") {
186 vector<MeterInfo>::iterator i;
189 for (n = 0, i =
meters.begin(); i !=
meters.end(); ++i, ++n) {
190 (*i).meter->set_hold_count ((uint32_t) floor(
ARDOUR_UI::config()->get_meter_hold()));
193 else if (p ==
"meter-line-up-level") {
197 else if (p ==
"meter-style-led") {
201 else if (p ==
"meter-peak") {
202 vector<MeterInfo>::iterator i;
205 for (n = 0, i =
meters.begin(); i !=
meters.end(); ++i, ++n) {
228 for (vector<MeterInfo>::iterator i =
meters.begin(); i !=
meters.end(); ++i) {
268 &&
meters[0].width == width
269 &&
meters[0].length == len
276 printf(
"Meter redraw: %s %s %s %s %s %s\n",
277 (
meters.size() > 0) ?
"yes" :
"no",
278 (
meters.size() > 0 &&
meters[0].width == width) ?
"yes" :
"no",
279 (
meters.size() > 0 &&
meters[0].length == len) ?
"yes" :
"no",
287 while (
meters.size() < nmeters) {
293 for (int32_t n = nmeters-1; nmeters && n >= 0 ; --n) {
313 stp[0] = 115.0 * 32.0 / 128.0;
314 stp[1] = 115.0 * 64.0 / 128.0;
315 stp[2] = 115.0 * 100.0 / 128.0;
316 stp[3] = 115.0 * 112.0 / 128.0;
329 switch (meter_type) {
335 c[0] = c[1] = 0x008800ff;
336 c[2] = c[3] = 0x00ff00ff;
337 c[4] = c[5] = 0xffff00ff;
338 c[6] = c[7] = 0xffff00ff;
339 c[8] = c[9] = 0xff0000ff;
346 c[0] = c[1] = 0x008800ff;
347 c[2] = c[3] = 0x00ff00ff;
348 c[4] = c[5] = 0xffff00ff;
349 c[6] = c[7] = 0xffff00ff;
350 c[8] = c[9] = 0xff0000ff;
357 c[0] = c[1] = 0x008800ff;
358 c[2] = c[3] = 0x00ff00ff;
359 c[4] = c[5] = 0xffff00ff;
360 c[6] = c[7] = 0xffff00ff;
361 c[8] = c[9] = 0xff0000ff;
364 c[0] = c[1] = c[2] = c[3] = c[4] = c[5] = c[6] = c[7] = c[8] = c[9] =
366 stp[0] = stp[1] = stp[2] = stp[3] = 115.0;
374 c[6] = c[7] = c[8] = c[9];
382 c[6] = c[7] = c[8] = c[9];
389 c[0] = c[2] = c[3] = c[1];
398 c[0] = c[2] = c[3] = c[4] = c[5] = c[1];
399 c[7] = c[8] = c[9] = c[6];
442 bool hl =
meters[n].meter ?
meters[n].meter->get_highlight() :
false;
446 c[0], c[1], c[2], c[3], c[4],
447 c[5], c[6], c[7], c[8], c[9],
448 b[0], b[1], b[2], b[3],
449 stp[0], stp[1], stp[2], stp[3],
452 meters[n].meter->set_highlight(hl);
455 meters[n].meter->add_events (Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK);
462 meters[n].meter->show_all ();
487 if (ev->button == 1) {
498 for (vector<MeterInfo>::iterator i =
meters.begin(); i <
meters.end(); i++) {
502 (*i).meter->set_highlight(
false);
531 pack_end (w,
false,
false);
550 pack_end (w,
false,
false);
static float vu_standard()
ArdourCanvas::Color color(const std::string &, bool *failed=0) const
void configuration_changed(ARDOUR::ChanCount in, ARDOUR::ChanCount out)
virtual void set_meter(ARDOUR::PeakMeter *meter)
static float meter_deflect_ppm(float)
virtual ~LevelMeterBase()
static float meter_lineup_cfg(MeterLineUp lul, float offset)
void clear_meters(bool reset_highlight=true)
LevelMeterHBox(ARDOUR::Session *)
static float meter_deflect_din(float)
void set_type(ARDOUR::MeterType)
Gtkmm2ext::FastMeter::Orientation _meter_orientation
static float log_meter0dB(float db)
void parameter_changed(std::string)
void mtr_pack(Gtk::Widget &w)
PBD::Signal2< void, ChanCount, ChanCount > ConfigurationChanged
bool meter_button_press(GdkEventButton *)
void mtr_remove(Gtk::Widget &w)
LevelMeterBase(ARDOUR::Session *, PBD::EventLoop::InvalidationRecord *ir, Gtkmm2ext::FastMeter::Orientation o=Gtkmm2ext::FastMeter::Vertical)
#define ENSURE_GUI_THREAD(obj, method,...)
ARDOUR::PeakMeter * _meter
static float meter_deflect_nordic(float)
void setup_meters(int len=0, int width=3, int thin=2)
uint32_t visible_meter_count
std::vector< MeterInfo > meters
PBD::Signal1< bool, GdkEventButton * > ButtonRelease
void mtr_pack(Gtk::Widget &w)
PBD::Signal1< bool, GdkEventButton * > ButtonPress
LIBARDOUR_API RCConfiguration * Config
static float minus_infinity(void)
void set_type(MeterType t)
ARDOUR::MeterType meter_type
PBD::ScopedConnection _configuration_connection
PBD::Signal1< void, std::string > ParameterChanged
static float meter_lineup(float offset)
ChanCount input_streams() const
static float log_meter(float db)
guint16 regular_meter_width
virtual void mtr_remove(Gtk::Widget &w)=0
static UIConfiguration * config()
PBD::ScopedConnection _parameter_connection
sigc::signal< void > ColorsChanged
sigc::signal< void, std::string > ParameterChanged
PBD::EventLoop::InvalidationRecord * parent_invalidator
void meter_type_changed(ARDOUR::MeterType)
float meter_level(uint32_t n, MeterType type)
bool meter_button_release(GdkEventButton *)
virtual void set_session(ARDOUR::Session *)
PBD::Signal1< void, MeterType > TypeChanged
static float meter_deflect_vu(float)
LevelMeterVBox(ARDOUR::Session *)
ARDOUR::MeterType visible_meter_type
PBD::ScopedConnection _meter_type_connection
void mtr_remove(Gtk::Widget &w)
PBD::Signal1< void, ARDOUR::MeterType > MeterTypeChanged
static float meter_deflect_k(float, float)
virtual void mtr_pack(Gtk::Widget &w)=0
LIBARDOUR_API PBD::PropertyDescriptor< framecnt_t > length