Skip to main content

Geometry

Enum Geometry 

Source
pub enum Geometry {
    Preset(PresetShape),
    Custom(CustomGeometry),
}
Expand description

A shape’s outline (EG_Geometry, the choice between <a:custGeom> and <a:prstGeom>).

Geometry::Custom only models <a:custGeom>’s own required <a:pathLst> — a single <a:path>’s moveTo/lnTo/cubicBezTo/close draw commands, the vocabulary explicitly asked for by plan. Not modeled: guides (<a:avLst>/<a:gdLst>, formula-driven adjust-handle values), adjust handles (<a:ahLst>), connection sites (<a:cxnLst>), the optional bounding <a:rect>, quadBezTo/arcTo draw commands, and multiple <a:path> elements within one <a:pathLst> (CT_Path2DList allows several — e.g. for a shape made of disjoint outlines — only the first is read back, matching the single-path case every real custom shape this crate has been asked to support so far actually needs). All of the above are minOccurs="0" on CT_CustomGeometry except pathLst itself, so omitting them entirely still produces a schema-valid element.

Grounded against a real fixture (ppt/slides/slide6.xml), which confirmed the assumed element order and nesting exactly. That same fixture also revealed a real reading gap: its <a:pt> coordinates are guide-name references (<a:pt x="f2" y="f2"/>, resolved via <a:gd name="f2" fmla=".."/> entries in the <a:gdLst> this crate doesn’t model) rather than literal integers — ST_AdjCoordinate allows either. Since [crate::reader]’s path-point parser expects a literal integer, a shape using formula-referenced coordinates currently round-trips its points back as (0, 0) instead of erroring loudly. This crate’s own writer is unaffected (it only ever emits literal integers), so the gap only bites when reading a complex shape authored by real PowerPoint with adjustable guides — accepted as an out-of-scope corner of the “literal-coordinate common case” this crate targets, rather than implementing a formula evaluator for <a:gdLst>.

Variants§

Trait Implementations§

Source§

impl Clone for Geometry

Source§

fn clone(&self) -> Geometry

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Geometry

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Geometry

Source§

fn eq(&self, other: &Geometry) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Geometry

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.