iced_audio 0.13.0

An extension to the Iced GUI library with useful widgets for audio applications
Documentation
use iced::advanced::{graphics::core::keyboard, mouse};

use crate::{Normal, SliderStatus};

/// The local state of a [`Knob`].
///
/// [`Knob`]: struct.Knob.html
#[derive(Debug, Clone)]
pub struct State {
    pub dragging_status: Option<SliderStatus>,
    pub prev_drag_y: f32,
    pub prev_normal: Normal,
    pub continuous_normal: f32,
    pub pressed_modifiers: keyboard::Modifiers,
    pub last_click: Option<mouse::Click>,
    //tick_marks_cache: crate::graphics::tick_marks::PrimitiveCache,
    //text_marks_cache: crate::graphics::text_marks::PrimitiveCache,
}

impl State {
    /// Creates a new [`Knob`] state.
    ///
    /// It expects:
    /// * current [`Normal`] value for the [`Knob`]
    ///
    /// [`Normal`]: ../../core/normal/struct.Normal.html
    /// [`Knob`]: struct.Knob.html
    pub fn new(normal: Normal) -> Self {
        Self {
            dragging_status: None,
            prev_drag_y: 0.0,
            prev_normal: normal,
            continuous_normal: normal.as_f32(),
            pressed_modifiers: Default::default(),
            last_click: None,
            //tick_marks_cache: Default::default(),
            //text_marks_cache: Default::default(),
        }
    }
}