pub use pax_engine::api::Size;
use pax_engine::*;
#[pax]
#[engine_import_path("pax_engine")]
#[derive(Copy)]
pub struct Point {
    pub x: Size,
    pub y: Size,
}
impl Point {
    pub fn new(x: Size, y: Size) -> Self {
        Self { x, y }
    }
    pub fn to_kurbo_point(self, bounds: (f64, f64)) -> kurbo::Point {
        let x = self.x.evaluate(bounds, api::Axis::X);
        let y = self.y.evaluate(bounds, api::Axis::Y);
        kurbo::Point { x, y }
    }
}
pub fn patch_if_needed<T: PartialEq + Clone>(
    old_state: &mut Option<T>,
    patch: &mut Option<T>,
    new_value: T,
) -> bool {
    if !old_state.as_ref().is_some_and(|v| v == &new_value) {
        *patch = Some(new_value.clone());
        *old_state = Some(new_value);
        true
    } else {
        false
    }
}