diff options
author | 2020-01-09 01:37:57 +0100 | |
---|---|---|
committer | 2020-01-09 01:37:57 +0100 | |
commit | a4e833e860c41796d491ab43e84239fcca1f303d (patch) | |
tree | c41ab304ffaf2dc2311c7d33916cd0515114ad31 /wgpu/src/renderer/widget/progress_bar.rs | |
parent | 2ff0e48142c302cb93130164d083589bb2ac4979 (diff) | |
parent | cc529a1803972604b122c19c0104e71532fff993 (diff) | |
download | iced-a4e833e860c41796d491ab43e84239fcca1f303d.tar.gz iced-a4e833e860c41796d491ab43e84239fcca1f303d.tar.bz2 iced-a4e833e860c41796d491ab43e84239fcca1f303d.zip |
Merge branch 'master' into feature/shrink-by-default
Diffstat (limited to 'wgpu/src/renderer/widget/progress_bar.rs')
-rw-r--r-- | wgpu/src/renderer/widget/progress_bar.rs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/wgpu/src/renderer/widget/progress_bar.rs b/wgpu/src/renderer/widget/progress_bar.rs new file mode 100644 index 00000000..8ed4bab7 --- /dev/null +++ b/wgpu/src/renderer/widget/progress_bar.rs @@ -0,0 +1,47 @@ +use crate::{Primitive, Renderer}; +use iced_native::{progress_bar, Background, Color, MouseCursor, Rectangle}; + +impl progress_bar::Renderer for Renderer { + const DEFAULT_HEIGHT: u16 = 30; + + fn draw( + &self, + bounds: Rectangle, + range: std::ops::RangeInclusive<f32>, + value: f32, + background: Option<Background>, + active_color: Option<Color>, + ) -> Self::Output { + let (range_start, range_end) = range.into_inner(); + let active_progress_width = bounds.width + * ((value - range_start) / (range_end - range_start).max(1.0)); + + let background = Primitive::Group { + primitives: vec![Primitive::Quad { + bounds: Rectangle { ..bounds }, + background: background + .unwrap_or(Background::Color([0.6, 0.6, 0.6].into())) + .into(), + border_radius: 5, + }], + }; + + let active_progress = Primitive::Quad { + bounds: Rectangle { + width: active_progress_width, + ..bounds + }, + background: Background::Color( + active_color.unwrap_or([0.0, 0.95, 0.0].into()), + ), + border_radius: 5, + }; + + ( + Primitive::Group { + primitives: vec![background, active_progress], + }, + MouseCursor::OutOfBounds, + ) + } +} |