cranpose-ui-graphics 0.1.167

Pure math/data for drawing & units in Cranpose
Documentation
use super::*;

#[test]
fn dp_offset_converts_to_px() {
    let offset = DpOffset::new(Dp(4.0), Dp(-2.5));
    let px = offset.to_px(Density::from_scale(2.0));
    assert_eq!(px, Point::new(8.0, -5.0));
}

#[test]
fn shadow_default_matches_black_src_over() {
    let shadow = Shadow::default();
    assert_eq!(shadow.radius, Dp(0.0));
    assert_eq!(shadow.spread, Dp(0.0));
    assert_eq!(shadow.offset, DpOffset::ZERO);
    assert_eq!(shadow.color, Color::BLACK);
    assert_eq!(shadow.brush, None);
    assert!((shadow.alpha - 1.0).abs() < 1e-6);
    assert_eq!(shadow.blend_mode, BlendMode::SrcOver);
}

#[test]
fn shadow_to_scope_uses_density() {
    let shadow = Shadow {
        radius: Dp(5.0),
        spread: Dp(2.0),
        offset: DpOffset::new(Dp(-1.0), Dp(3.0)),
        color: Color::from_rgba_u8(10, 20, 30, 255),
        brush: None,
        alpha: 0.7,
        blend_mode: BlendMode::Overlay,
        cutout: false,
    };
    let scope = shadow.to_scope(Density::from_scale(2.0));
    assert!((scope.radius - 10.0).abs() < 1e-6);
    assert!((scope.spread - 4.0).abs() < 1e-6);
    assert_eq!(scope.offset, Point::new(-2.0, 6.0));
    assert_eq!(scope.color, Color::from_rgba_u8(10, 20, 30, 255));
    assert!((scope.alpha - 0.7).abs() < 1e-6);
    assert_eq!(scope.blend_mode, BlendMode::Overlay);
}