cranpose 0.1.162

Cranpose runtime and UI facade
Documentation
use cranpose_app_shell::{Modifiers, WheelScroll};
use cranpose_ui::Point;

const WEB_WHEEL_LINE_DELTA_PIXELS: f32 = 40.0;

pub(crate) const DOM_DELTA_PIXEL: u32 = 0;
pub(crate) const DOM_DELTA_LINE: u32 = 1;
pub(crate) const DOM_DELTA_PAGE: u32 = 2;

#[derive(Clone, Copy, Debug, PartialEq)]
pub(crate) struct WebWheelPage {
    pub width: f32,
    pub height: f32,
}

pub(crate) fn wheel_scroll_from_dom(
    delta_x: f32,
    delta_y: f32,
    delta_mode: u32,
    page: WebWheelPage,
    modifiers: Modifiers,
    uptime_millis: u64,
) -> WheelScroll {
    let (unit_x, unit_y) = match delta_mode {
        DOM_DELTA_PIXEL => (1.0, 1.0),
        DOM_DELTA_LINE => (WEB_WHEEL_LINE_DELTA_PIXELS, WEB_WHEEL_LINE_DELTA_PIXELS),
        DOM_DELTA_PAGE => (page.width.max(1.0), page.height.max(1.0)),
        _ => (1.0, 1.0),
    };

    WheelScroll::new(
        Point {
            x: -delta_x * unit_x,
            y: -delta_y * unit_y,
        },
        uptime_millis,
    )
    .with_modifiers(modifiers)
}

#[cfg(test)]
#[path = "tests/web_wheel_tests.rs"]
mod tests;