diff options
| author | 2019-11-24 11:34:30 +0100 | |
|---|---|---|
| committer | 2019-11-24 11:34:30 +0100 | |
| commit | 149fd2aa1fa86858c7c1dcec8fd844caa78cec94 (patch) | |
| tree | a199cf8d2caaf6aa60e48e93d6dd0688969d43b0 /wgpu/src/renderer/widget/slider.rs | |
| parent | 9712b319bb7a32848001b96bd84977430f14b623 (diff) | |
| parent | 47196c9007d12d3b3e0036ffabe3bf6d14ff4523 (diff) | |
| download | iced-149fd2aa1fa86858c7c1dcec8fd844caa78cec94.tar.gz iced-149fd2aa1fa86858c7c1dcec8fd844caa78cec94.tar.bz2 iced-149fd2aa1fa86858c7c1dcec8fd844caa78cec94.zip | |
Merge pull request #65 from hecrj/improvement/docs
Documentation
Diffstat (limited to 'wgpu/src/renderer/widget/slider.rs')
| -rw-r--r-- | wgpu/src/renderer/widget/slider.rs | 35 |
1 files changed, 12 insertions, 23 deletions
diff --git a/wgpu/src/renderer/widget/slider.rs b/wgpu/src/renderer/widget/slider.rs index 98065bc9..f561be0a 100644 --- a/wgpu/src/renderer/widget/slider.rs +++ b/wgpu/src/renderer/widget/slider.rs @@ -1,32 +1,22 @@ use crate::{Primitive, Renderer}; -use iced_native::{ - layout, slider, Background, Color, Layout, Length, MouseCursor, Point, - Rectangle, Size, Slider, -}; +use iced_native::{slider, Background, Color, MouseCursor, Point, Rectangle}; const HANDLE_WIDTH: f32 = 8.0; const HANDLE_HEIGHT: f32 = 22.0; impl slider::Renderer for Renderer { - fn layout<Message>( - &self, - slider: &Slider<Message>, - limits: &layout::Limits, - ) -> layout::Node { - let limits = limits.width(slider.width).height(Length::Units(30)); - let size = limits.resolve(Size::ZERO); - - layout::Node::new(size) + fn height(&self) -> u32 { + 30 } - fn draw<Message>( + fn draw( &mut self, - slider: &Slider<Message>, - layout: Layout<'_>, + bounds: Rectangle, cursor_position: Point, + range: std::ops::RangeInclusive<f32>, + value: f32, + is_dragging: bool, ) -> Self::Output { - let bounds = layout.bounds(); - let is_mouse_over = bounds.contains(cursor_position); let rail_y = bounds.y + (bounds.height / 2.0).round(); @@ -54,11 +44,10 @@ impl slider::Renderer for Renderer { }, ); - let (range_start, range_end) = slider.range.clone().into_inner(); + let (range_start, range_end) = range.into_inner(); let handle_offset = (bounds.width - HANDLE_WIDTH) - * ((slider.value - range_start) - / (range_end - range_start).max(1.0)); + * ((value - range_start) / (range_end - range_start).max(1.0)); let (handle_border, handle) = ( Primitive::Quad { @@ -79,7 +68,7 @@ impl slider::Renderer for Renderer { height: HANDLE_HEIGHT, }, background: Background::Color( - if slider.state.is_dragging() { + if is_dragging { [0.85, 0.85, 0.85] } else if is_mouse_over { [0.90, 0.90, 0.90] @@ -96,7 +85,7 @@ impl slider::Renderer for Renderer { Primitive::Group { primitives: vec![rail_top, rail_bottom, handle_border, handle], }, - if slider.state.is_dragging() { + if is_dragging { MouseCursor::Grabbing } else if is_mouse_over { MouseCursor::Grab |
