add(widget): primitive progressbar widget
This commit is contained in:
parent
26de688e68
commit
d60f3b89a7
9 changed files with 239 additions and 5 deletions
|
|
@ -2,6 +2,7 @@ mod button;
|
|||
mod checkbox;
|
||||
mod column;
|
||||
mod image;
|
||||
mod progressbar;
|
||||
mod radio;
|
||||
mod row;
|
||||
mod scrollable;
|
||||
|
|
|
|||
43
wgpu/src/renderer/widget/progressbar.rs
Normal file
43
wgpu/src/renderer/widget/progressbar.rs
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
use crate::{Primitive, Renderer};
|
||||
use iced_native::{progressbar, Background, Color, MouseCursor, Rectangle};
|
||||
|
||||
impl progressbar::Renderer for Renderer {
|
||||
fn height(&self) -> u32 {
|
||||
30
|
||||
}
|
||||
|
||||
fn draw(
|
||||
&self,
|
||||
bounds: Rectangle,
|
||||
range: std::ops::RangeInclusive<f32>,
|
||||
value: f32,
|
||||
) -> 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: Color::from_rgb(0.6, 0.6, 0.6).into(),
|
||||
border_radius: 5,
|
||||
}],
|
||||
};
|
||||
|
||||
let active_progress = Primitive::Quad {
|
||||
bounds: Rectangle {
|
||||
width: active_progress_width,
|
||||
..bounds
|
||||
},
|
||||
background: Background::Color([0.0, 0.95, 0.0].into()),
|
||||
border_radius: 4,
|
||||
};
|
||||
|
||||
(
|
||||
Primitive::Group {
|
||||
primitives: vec![background, active_progress],
|
||||
},
|
||||
MouseCursor::OutOfBounds,
|
||||
)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue