use serde::{Deserialize, Serialize};
use super::{Color, Vector};
#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Hash)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
#[typeshare::typeshare]
pub enum EffectType {
InnerShadow,
DropShadow,
LayerBlur,
BackgroundBlur,
}
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
#[typeshare::typeshare]
pub struct Effect {
pub r#type: EffectType,
pub visible: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub color: Option<Color>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offset: Option<Vector>,
#[serde(skip_serializing_if = "Option::is_none")]
pub spread: Option<f64>,
}
impl Effect {
pub fn spread(&self) -> f64 {
self.spread.unwrap_or(0.0)
}
}