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
}
}