iced_pancurses/renderer/
slider.rs

1use crate::primitive::Primitive;
2use crate::PancursesRenderer;
3
4use iced_native::widget::slider;
5use iced_native::{Point, Rectangle};
6
7use std::ops::RangeInclusive;
8
9impl slider::Renderer for PancursesRenderer {
10    fn height(&self) -> u32 {
11        1
12    }
13
14    fn draw(
15        &mut self,
16        bounds: Rectangle,
17        _cursor_position: Point,
18        range: RangeInclusive<f32>,
19        value: f32,
20        _is_dragging: bool,
21    ) -> Primitive {
22        let (range_start, range_end) = range.into_inner();
23        let marker_offset =
24            bounds.width * ((value - range_start) / (range_end - range_start).max(1.0));
25
26        Primitive::Group(vec![
27            Primitive::BoxDisplay(bounds),
28            Primitive::Char(bounds.x as i32 + marker_offset as i32, bounds.y as i32, 'x'),
29        ])
30    }
31}