#[cfg(feature = "serde")]
use serde::Serialize;
use crate::{
processed::drawing::common_types::position::Position,
raw::drawing::shape::{
path::quad_bezier_curve_to::XlsxQuadraticBezierCurveTo, shape_guide::XlsxShapeGuide,
},
};
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct QuadraticBezierCurveTo {
pub control: Position,
pub end: Position,
}
impl QuadraticBezierCurveTo {
pub(crate) fn from_raw(
raw: XlsxQuadraticBezierCurveTo,
guide_list: Option<Vec<XlsxShapeGuide>>,
) -> Self {
let raw_points = raw.points.unwrap_or(vec![]);
let count = raw_points.clone().iter().count();
let control = if count > 0 {
Some(raw_points[0].clone())
} else {
None
};
let end = if count > 2 {
Some(raw_points[2].clone())
} else {
None
};
return Self {
control: Position::from_point(control, guide_list.clone()),
end: Position::from_point(end, guide_list.clone()),
};
}
}