Update the peak meter for upstream vizia changes
This commit is contained in:
parent
b07ec12d04
commit
455f651d39
|
@ -49,7 +49,7 @@ impl PeakMeter {
|
||||||
// current moment in time by mutating some values captured into the mapping closure.
|
// current moment in time by mutating some values captured into the mapping closure.
|
||||||
let held_peak_value_db = Cell::new(f32::MIN);
|
let held_peak_value_db = Cell::new(f32::MIN);
|
||||||
let last_held_peak_value: Cell<Option<Instant>> = Cell::new(None);
|
let last_held_peak_value: Cell<Option<Instant>> = Cell::new(None);
|
||||||
let peak_dbfs = level_dbfs.clone().map(move |level| -> f32 {
|
let peak_dbfs = level_dbfs.map(move |level| -> f32 {
|
||||||
match hold_time {
|
match hold_time {
|
||||||
Some(hold_time) => {
|
Some(hold_time) => {
|
||||||
let mut peak_level = held_peak_value_db.get();
|
let mut peak_level = held_peak_value_db.get();
|
||||||
|
@ -97,9 +97,8 @@ impl PeakMeter {
|
||||||
}
|
}
|
||||||
|
|
||||||
let font_size = {
|
let font_size = {
|
||||||
let current = cx.current();
|
let event_cx = EventContext::new(cx);
|
||||||
let draw_cx = DrawContext::new(cx);
|
event_cx.font_size() * event_cx.scale_factor()
|
||||||
draw_cx.font_size(current) * draw_cx.style.dpi_factor as f32
|
|
||||||
};
|
};
|
||||||
let label = if first_tick {
|
let label = if first_tick {
|
||||||
Label::new(cx, "-inf")
|
Label::new(cx, "-inf")
|
||||||
|
@ -157,19 +156,14 @@ where
|
||||||
|
|
||||||
// TODO: It would be cool to allow the text color property to control the gradient here. For
|
// TODO: It would be cool to allow the text color property to control the gradient here. For
|
||||||
// now we'll only support basic background colors and borders.
|
// now we'll only support basic background colors and borders.
|
||||||
let background_color = cx.background_color().cloned().unwrap_or_default();
|
let background_color = cx.background_color();
|
||||||
let border_color = cx.border_color().cloned().unwrap_or_default();
|
let border_color = cx.border_color();
|
||||||
let opacity = cx.opacity();
|
let opacity = cx.opacity();
|
||||||
let mut background_color: vg::Color = background_color.into();
|
let mut background_color: vg::Color = background_color.into();
|
||||||
background_color.set_alphaf(background_color.a * opacity);
|
background_color.set_alphaf(background_color.a * opacity);
|
||||||
let mut border_color: vg::Color = border_color.into();
|
let mut border_color: vg::Color = border_color.into();
|
||||||
border_color.set_alphaf(border_color.a * opacity);
|
border_color.set_alphaf(border_color.a * opacity);
|
||||||
|
let border_width = cx.border_width();
|
||||||
let border_width = match cx.border_width().unwrap_or_default() {
|
|
||||||
Units::Pixels(val) => val,
|
|
||||||
Units::Percentage(val) => bounds.w.min(bounds.h) * (val / 100.0),
|
|
||||||
_ => 0.0,
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut path = vg::Path::new();
|
let mut path = vg::Path::new();
|
||||||
{
|
{
|
||||||
|
@ -187,7 +181,7 @@ where
|
||||||
|
|
||||||
// Fill with background color
|
// Fill with background color
|
||||||
let paint = vg::Paint::color(background_color);
|
let paint = vg::Paint::color(background_color);
|
||||||
canvas.fill_path(&mut path, &paint);
|
canvas.fill_path(&path, &paint);
|
||||||
|
|
||||||
// And now for the fun stuff. We'll try to not overlap the border, but we'll draw that last
|
// And now for the fun stuff. We'll try to not overlap the border, but we'll draw that last
|
||||||
// just in case.
|
// just in case.
|
||||||
|
@ -222,7 +216,7 @@ where
|
||||||
opacity,
|
opacity,
|
||||||
));
|
));
|
||||||
paint.set_line_width(TICK_WIDTH * dpi_scale);
|
paint.set_line_width(TICK_WIDTH * dpi_scale);
|
||||||
canvas.stroke_path(&mut path, &paint);
|
canvas.stroke_path(&path, &paint);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw the hold peak value if the hold time option has been set
|
// Draw the hold peak value if the hold time option has been set
|
||||||
|
@ -241,12 +235,12 @@ where
|
||||||
|
|
||||||
let mut paint = vg::Paint::color(vg::Color::rgbaf(0.3, 0.3, 0.3, opacity));
|
let mut paint = vg::Paint::color(vg::Color::rgbaf(0.3, 0.3, 0.3, opacity));
|
||||||
paint.set_line_width(TICK_WIDTH * dpi_scale);
|
paint.set_line_width(TICK_WIDTH * dpi_scale);
|
||||||
canvas.stroke_path(&mut path, &paint);
|
canvas.stroke_path(&path, &paint);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw border last
|
// Draw border last
|
||||||
let mut paint = vg::Paint::color(border_color);
|
let mut paint = vg::Paint::color(border_color);
|
||||||
paint.set_line_width(border_width);
|
paint.set_line_width(border_width);
|
||||||
canvas.stroke_path(&mut path, &paint);
|
canvas.stroke_path(&path, &paint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue