rive_rs/shapes/
parametric_path.rsuse crate::core::{Core, ObjectRef, OnAdded, Property};
use crate::shapes::path::Path;
#[derive(Debug)]
pub struct ParametricPath {
path: Path,
width: Property<f32>,
height: Property<f32>,
origin_x: Property<f32>,
origin_y: Property<f32>,
}
impl ObjectRef<'_, ParametricPath> {
pub fn width(&self) -> f32 {
self.width.get()
}
pub fn set_width(&self, width: f32) {
if self.width() == width {
return;
}
self.width.set(width);
self.cast::<Path>().mark_path_dirty();
}
pub fn height(&self) -> f32 {
self.height.get()
}
pub fn set_height(&self, height: f32) {
if self.height() == height {
return;
}
self.height.set(height);
self.cast::<Path>().mark_path_dirty();
}
pub fn origin_x(&self) -> f32 {
self.origin_x.get()
}
pub fn set_origin_x(&self, origin_x: f32) {
self.origin_x.set(origin_x);
}
pub fn origin_y(&self) -> f32 {
self.origin_y.get()
}
pub fn set_origin_y(&self, origin_y: f32) {
self.origin_y.set(origin_y);
}
}
impl Core for ParametricPath {
parent_types![(path, Path)];
properties![
(20, width, set_width),
(21, height, set_height),
(123, origin_x, set_origin_x),
(124, origin_y, set_origin_y),
path,
];
}
impl OnAdded for ObjectRef<'_, ParametricPath> {
on_added!(Path);
}
impl Default for ParametricPath {
fn default() -> Self {
Self {
path: Path::default(),
width: Property::new(0.0),
height: Property::new(0.0),
origin_x: Property::new(0.5),
origin_y: Property::new(0.5),
}
}
}