use crate::shapes::placeholder::PlaceholderFormat;
use crate::units::{Emu, ShapeId};
#[derive(Debug, Clone, PartialEq)]
pub struct GraphicFrame {
pub shape_id: ShapeId,
pub name: String,
pub left: Emu,
pub top: Emu,
pub width: Emu,
pub height: Emu,
pub rotation: f64,
pub has_table: bool,
pub has_chart: bool,
pub graphic_data_uri: Option<String>,
pub placeholder: Option<PlaceholderFormat>,
pub smartart_r_id: Option<String>,
}
impl std::fmt::Display for GraphicFrame {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "GraphicFrame(\"{}\")", self.name)
}
}
impl GraphicFrame {
#[must_use]
pub fn has_smartart(&self) -> bool {
self.smartart_r_id.is_some()
|| self.graphic_data_uri.as_deref() == Some(graphic_data_uri::DIAGRAM)
}
}
pub mod graphic_data_uri {
pub const TABLE: &str = "http://schemas.openxmlformats.org/drawingml/2006/table";
pub const CHART: &str = "http://schemas.openxmlformats.org/drawingml/2006/chart";
pub const DIAGRAM: &str = "http://schemas.openxmlformats.org/drawingml/2006/diagram";
pub const OLE: &str = "http://schemas.openxmlformats.org/presentationml/2006/ole";
}