pub struct DocumentBuilder {
    session: Session,
    load_options: Arc<LoadOptions>,
    tree: Option<Node<NodeData>>,
    ids: HashMap<String, Node<NodeData>>,
    stylesheets: Vec<Stylesheet>,
}
Expand description

Used to build a tree of SVG nodes while an XML document is being read.

This struct holds the document-related state while loading an SVG document from XML: the loading options, the partially-built tree of nodes, the CSS stylesheets that appear while loading the document.

The XML loader asks a DocumentBuilder to append_element, append_characters, etc. When all the XML has been consumed, the caller can use build to get a fully-loaded Document.

Fields§

§session: Session

Metadata for the document’s lifetime.

§load_options: Arc<LoadOptions>

Loading options; mainly the URL resolver.

§tree: Option<Node<NodeData>>

Root node of the tree.

§ids: HashMap<String, Node<NodeData>>

Mapping from id attributes to nodes.

§stylesheets: Vec<Stylesheet>

Stylesheets defined in the document.

Implementations§

source§

impl DocumentBuilder

source

pub fn new(session: Session, load_options: Arc<LoadOptions>) -> DocumentBuilder

source

pub fn append_stylesheet(&mut self, stylesheet: Stylesheet)

Adds a stylesheet in order to the document.

Stylesheets will later be matched in the order in which they were added.

source

pub fn append_element( &mut self, name: &QualName, attrs: Attributes, parent: Option<Node<NodeData>> ) -> Node<NodeData>

Creates an element of the specified name as a child of parent.

This is the main function to create new SVG elements while parsing XML.

name is the XML element’s name, for example rect.

attrs has the XML element’s attributes, e.g. cx/cy/r for <circle cx="0" cy="0" r="5">.

If parent is None it means that we are creating the root node in the tree of elements. The code will later validate that this is indeed an <svg> element.

source

pub fn append_characters(&mut self, text: &str, parent: &mut Node<NodeData>)

Creates a node for an XML text element as a child of parent.

source

pub fn build(self) -> Result<Document, LoadingError>

Does the final validation on the Document being read, and returns it.

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> 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> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
source§

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

§

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>,

§

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.