use crate::property::{
Color, PropertyValue, PropertyValueKind, Rectangle, Scalar, Shadow, Size, Transform, Vector2,
};
pub trait TransitionValueKind: PropertyValueKind {
fn unwrap_transition_value(value: &PropertyValue) -> Option<Self::Inner>;
}
macro_rules! impl_transition_value_kind {
($($kind:ident), *) => {
$(
impl TransitionValueKind for $kind {
fn unwrap_transition_value(value: &PropertyValue) -> Option<Self::Inner> {
let PropertyValue::$kind(value) = value else {
return None;
};
Some(*value)
}
}
)*
};
}
impl_transition_value_kind!(Scalar, Vector2, Size, Rectangle, Transform, Color, Shadow);