mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 11:46:25 +01:00
push2: fix canvas level meter object so that it draws
This commit is contained in:
parent
b7d86cb118
commit
b3b6e94297
1 changed files with 15 additions and 3 deletions
|
|
@ -58,11 +58,13 @@ LevelMeter::LevelMeter (Push2& p, Item* parent, int len, Meter::Orientation o)
|
||||||
Config->ParameterChanged.connect (_parameter_connection, invalidator(*this), boost::bind (&LevelMeter::parameter_changed, this, _1), &_p2);
|
Config->ParameterChanged.connect (_parameter_connection, invalidator(*this), boost::bind (&LevelMeter::parameter_changed, this, _1), &_p2);
|
||||||
|
|
||||||
if (_meter_orientation == Meter::Vertical) {
|
if (_meter_orientation == Meter::Vertical) {
|
||||||
_meter_packer = new HBox (_canvas);
|
_meter_packer = new HBox (this);
|
||||||
} else {
|
} else {
|
||||||
_meter_packer = new VBox (_canvas);
|
_meter_packer = new VBox (this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_meter_packer->name = "MeterPacker";
|
||||||
|
|
||||||
_meter_packer->set_collapse_on_hide (true);
|
_meter_packer->set_collapse_on_hide (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -255,7 +257,6 @@ LevelMeter::set_max_audio_meter_count (uint32_t cnt)
|
||||||
void
|
void
|
||||||
LevelMeter::setup_meters (int len, int initial_width, int thin_width)
|
LevelMeter::setup_meters (int len, int initial_width, int thin_width)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!_meter) {
|
if (!_meter) {
|
||||||
hide_all_meters ();
|
hide_all_meters ();
|
||||||
return; /* do it later or never */
|
return; /* do it later or never */
|
||||||
|
|
@ -290,6 +291,9 @@ LevelMeter::setup_meters (int len, int initial_width, int thin_width)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double total_width = 0.;
|
||||||
|
double total_height = 0.;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
printf("Meter redraw: %s %s %s %s %s %s\n",
|
printf("Meter redraw: %s %s %s %s %s %s\n",
|
||||||
(meters.size() > 0) ? "yes" : "no",
|
(meters.size() > 0) ? "yes" : "no",
|
||||||
|
|
@ -462,6 +466,7 @@ LevelMeter::setup_meters (int len, int initial_width, int thin_width)
|
||||||
_meters[n].packed = false;
|
_meters[n].packed = false;
|
||||||
delete _meters[n].meter;
|
delete _meters[n].meter;
|
||||||
_meters[n].meter = new Meter (this->canvas(), 32, width, _meter_orientation, len);
|
_meters[n].meter = new Meter (this->canvas(), 32, width, _meter_orientation, len);
|
||||||
|
_meters[n].meter->name = string_compose ("Meter#%1", n+1);
|
||||||
_meters[n].meter->set_highlight(hl);
|
_meters[n].meter->set_highlight(hl);
|
||||||
_meters[n].width = width;
|
_meters[n].width = width;
|
||||||
_meters[n].length = len;
|
_meters[n].length = len;
|
||||||
|
|
@ -469,6 +474,10 @@ LevelMeter::setup_meters (int len, int initial_width, int thin_width)
|
||||||
|
|
||||||
_meter_packer->add (_meters[n].meter);
|
_meter_packer->add (_meters[n].meter);
|
||||||
_meters[n].packed = true;
|
_meters[n].packed = true;
|
||||||
|
|
||||||
|
total_width += _meters[n].width;
|
||||||
|
total_height += _meters[n].length;
|
||||||
|
|
||||||
if (_max_visible_meters == 0 || (uint32_t) n < _max_visible_meters + nmidi) {
|
if (_max_visible_meters == 0 || (uint32_t) n < _max_visible_meters + nmidi) {
|
||||||
_meters[n].meter->show ();
|
_meters[n].meter->show ();
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -476,6 +485,9 @@ LevelMeter::setup_meters (int len, int initial_width, int thin_width)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_meter_packer->set (Rect (0., 0., total_width, total_height));
|
||||||
|
_meter_packer->size_allocate (_meter_packer->get());
|
||||||
|
|
||||||
_visible_meter_type = meter_type;
|
_visible_meter_type = meter_type;
|
||||||
_midi_count = nmidi;
|
_midi_count = nmidi;
|
||||||
_meter_count = nmeters;
|
_meter_count = nmeters;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue