use crate::figma_schema;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct RotationMeterJson {
pub enabled: bool,
pub start: f32,
pub end: f32,
pub discrete: bool,
pub discrete_value: f32,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct ArcMeterJson {
pub enabled: bool,
pub start: f32,
pub end: f32,
pub discrete: bool,
pub discrete_value: f32,
pub corner_radius: f32,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct ProgressBarMeterJson {
pub enabled: bool,
pub discrete: bool,
pub discrete_value: f32,
#[serde(default)]
pub draggable: bool,
#[serde(default)]
pub vertical: bool,
#[serde(default)]
pub end_x: f32,
#[serde(default)]
pub end_y: f32,
#[serde(default)]
pub start_x: f32,
#[serde(default)]
pub start_y: f32,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct ProgressMarkerMeterJson {
pub enabled: bool,
pub discrete: bool,
pub discrete_value: f32,
#[serde(default)]
pub draggable: bool,
#[serde(default)]
pub vertical: bool,
#[serde(default)]
pub start_x: f32,
#[serde(default)]
pub end_x: f32,
#[serde(default)]
pub start_y: f32,
#[serde(default)]
pub end_y: f32,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct ProgressVectorMeterJson {
pub enabled: bool,
pub discrete: bool,
pub discrete_value: f32,
pub paths: Vec<figma_schema::Path>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum MeterJson {
ArcData(ArcMeterJson),
RotationData(RotationMeterJson),
ProgressBarData(ProgressBarMeterJson),
ProgressMarkerData(ProgressMarkerMeterJson),
ProgressVectorData(ProgressVectorMeterJson),
}