|
SVG for C++
|
Abstract base class for all SVG elements. More...
#include <svg.hpp>
Inherits SVG::AttributeMap.
Inherited by SVG::Defs, SVG::Group, SVG::Polygon, SVG::SVG::Style, SVG::Shape, SVG::Symbol, SVG::Text, and SVG::Title.
Classes | |
| class | BoundingBox |
| Represents the top left and bottom right corners of a bounding rectangle. More... | |
| class | ConstDepthFirstIterator |
| class | ConstDepthFirstRange |
| class | DepthFirstIterator |
| class | DepthFirstRange |
| struct | TraversalOptions |
Public Types | |
| using | ChildList = std::vector< Element * > |
| using | ConstChildList = std::vector< const Element * > |
| using | ChildMap = std::map< std::string, ChildList > |
| using | ConstChildMap = std::map< std::string, ConstChildList > |
Public Member Functions | |
| Element (const Element &other) | |
| Element (Element &&other) noexcept | |
| Element & | operator= (const Element &)=delete |
| Element & | operator= (Element &&other) noexcept |
| Element (const char *id) | |
| operator std::string () const | |
| std::unique_ptr< Element > | clone_element () const |
| template<typename T , typename... Args> | |
| T * | add_child (Args &&... args) |
| template<typename T > | |
| Element & | operator<< (T &&node) |
| template<typename T > | |
| std::vector< T * > | get_children () |
| template<typename T > | |
| std::vector< const T * > | get_children () const |
| template<typename T > | |
| std::vector< T * > | get_immediate_children () |
| template<typename T > | |
| std::vector< const T * > | get_immediate_children () const |
| Element * | get_element_by_id (const std::string &id) |
| const Element * | get_element_by_id (const std::string &id) const |
| std::vector< Element * > | get_elements_by_class (const std::string &clsname) |
| std::vector< const Element * > | get_elements_by_class (const std::string &clsname) const |
| const Element * | parent () const |
| virtual ElementKind | kind () const |
| Element & | id (const std::string &value) |
| std::string | id () const |
| void | autoscale (const Margins &margins=DEFAULT_MARGINS) |
| void | autoscale (const double margin) |
| void | autoscale (const AutoscaleOptions &options) |
| void | responsive_autoscale (const Margins &margins=DEFAULT_MARGINS) |
| void | responsive_autoscale (const double margin) |
| void | responsive_autoscale (const AutoscaleOptions &options) |
| Element & | layout_bbox (const BoundingBox &bbox) |
| Element & | bbox_padding (const Margins &padding) |
| Element & | bbox_padding (double padding) |
| Element & | clear_layout_bbox () |
| bool | has_layout_bbox () const |
| BoundingBox | layout_bbox () const |
| Element & | snap_to (const Element &target, RelativeAlignment relative, Point offset=Point(0, 0)) |
| Element & | snap_to (const Element &target, Alignment alignment, Point offset=Point(0, 0)) |
| Element & | align_to (const Element &target, Axis axis, Point offset=Point(0, 0)) |
| Element & | align_to (const Element &target, Axis axis, Anchor anchor, Point offset=Point(0, 0)) |
| TransformList | transform_list () |
| TransformList | transform_list () const |
| TransformList | transform () |
| TransformList | transform () const |
| virtual BoundingBox | get_bbox () const |
| ChildMap | get_children () |
| ConstChildMap | get_children () const |
| DepthFirstIterator | begin () |
| ConstDepthFirstIterator | begin () const |
| DepthFirstIterator | end () |
| ConstDepthFirstIterator | end () const |
| DepthFirstRange | depth_first () |
| DepthFirstRange | depth_first (TraversalOptions options) |
| ConstDepthFirstRange | depth_first () const |
| ConstDepthFirstRange | depth_first (TraversalOptions options) const |
| DepthFirstRange | descendants () |
| DepthFirstRange | descendants (TraversalOptions options) |
| ConstDepthFirstRange | descendants () const |
| ConstDepthFirstRange | descendants (TraversalOptions options) const |
| template<> | |
| Element::ChildList | get_immediate_children () |
| template<> | |
| Element::ConstChildList | get_immediate_children () const |
| AttributeMap ()=default | |
| AttributeMap (SVGAttrib _attr) | |
Public Member Functions inherited from SVG::AttributeMap | |
| AttributeMap (SVGAttrib _attr) | |
| const SVGAttrib & | attrs () const |
| bool | has_attr (const std::string &key) const |
| std::string | get_attr (const std::string &key, const std::string &fallback="") const |
| template<typename T > | |
| std::enable_if< detail::is_numeric_attr_type< T >::value, T >::type | get_attr (const std::string &key, T fallback) const |
| template<typename T > | |
| AttributeMap & | set_attr (const std::string key, T value) |
| AttributeMap & | set_attr (const std::string key, const Color &value) |
| AttributeMap & | set_attrs (std::initializer_list< std::pair< std::string, std::string > > values) |
| AttributeMap & | set_attrs (const SVGAttrib &values) |
| AttrSetter | set_attr (const std::string key) |
| ClassList | class_list () |
| ClassList | class_list () const |
| TransformList | transform_list () |
| TransformList | transform_list () const |
| TransformList | transform () |
| TransformList | transform () const |
| template<> | |
| AttributeMap & | set_attr (const std::string key, const double value) |
| template<> | |
| AttributeMap & | set_attr (const std::string key, const char *value) |
| template<> | |
| AttributeMap & | set_attr (const std::string key, const std::string value) |
Protected Types | |
| using | ChildIterator = std::vector< std::unique_ptr< Element > >::iterator |
Protected Member Functions | |
| std::vector< Element * > | get_children_helper () |
| std::vector< const Element * > | get_children_helper () const |
| BoundingBox | get_autoscale_bbox () const |
| BoundingBox | measured_layout_bbox () const |
| BoundingBox | include_stroke_width (const BoundingBox &bbox) const |
| void | autoscale_nested_svgs (const AutoscaleOptions &options, bool responsive) |
| void | get_bbox (Element::BoundingBox &, bool visible_only=true) const |
| void | set_viewbox_from_bbox (const BoundingBox &bbox, const Margins &margins) |
| virtual std::string | svg_to_string (const size_t indent_level) const |
| virtual std::string | tag () |
| virtual std::string | tag () const |
| virtual std::unique_ptr< Element > | clone_element_impl () const |
| template<typename T > | |
| std::unique_ptr< T > | clone_as () const |
| void | set_attr_value (const std::string &key, const std::string &value) override |
| AttrSetter | make_attr_setter (const std::string &key) override |
| SVG * | owner_svg () |
| const SVG * | owner_svg () const |
| void | set_owner_svg (SVG *owner) |
| void | register_subtree_ids () |
| void | unregister_subtree_ids () |
| void | register_own_id () |
| void | unregister_own_id () |
| void | clear_children () |
| Element * | insert_child (std::unique_ptr< Element > child, ChildIterator position) |
| void | reparent_children () |
| double | find_numeric (const std::string &key) const |
Protected Member Functions inherited from SVG::AttributeMap | |
| SVGAttrib & | mutable_attrs () |
Static Protected Member Functions | |
| static detail::AffineTransform | transform_for (const Element *element, const detail::AffineTransform &parent_transform) |
Protected Attributes | |
| std::vector< std::unique_ptr< Element > > | children |
Abstract base class for all SVG elements.
|
protected |
Smart pointers to child elements
|
inline |
Copy attributes and deep-copy children without carrying parent or owner indexes.
|
inline |
Add an SVG element as a child and return a pointer to the element added
|
inline |
Align this element to a target axis using the same anchor on both elements.
|
inline |
Align this element to a target axis, centered by default.
|
inline |
Autoscale with explicit layout behavior options.
Automatically set the width, height, and viewBox attribute of this item so that it can contain all of its children without clipping
| [in] | options | Margins and nested SVG autoscale behavior |
|
inline |
Like other autoscale() but accepts margin as a percentage
Inflate measured autoscale/layout bounds; explicit layout_bbox() overrides this padding.
|
inline |
Inflate measured autoscale/layout bounds equally on every side.
|
inline |
Range-for iteration visits this element and descendants in depth-first document order.
|
inline |
Range-for iteration visits this element and descendants in depth-first document order.
|
inline |
Remove an explicit autoscale/layout bound override.
|
inline |
Return a type-preserving deep copy of this element subtree. Custom subclasses must override clone_element_impl(), usually by returning clone_as<Subclass>().
|
inline |
Iterate through this element and its descendants in depth-first order.
|
inline |
Iterate through this element and its descendants in depth-first order.
|
inline |
Iterate through this element and its descendants with traversal options.
|
inline |
Iterate through this element and its descendants with traversal options.
|
inline |
Iterate through descendants in depth-first order, excluding this element.
|
inline |
Iterate through descendants in depth-first order, excluding this element.
|
inline |
Iterate through descendants in depth-first order with traversal options.
|
inline |
Iterate through descendants in depth-first order with traversal options.
|
inlineprotected |
Return the numeric attribute (if it exists) or NAN
| [in] | key | Name of the attribute |
|
inlinevirtual |
Compute the bounding box necessary to contain this element
Reimplemented in SVG::Symbol, SVG::Use, SVG::SVG, and SVG::Text.
|
inlineprotected |
Compute a transform-aware bounding box without recursive traversal.
|
inline |
Return all children of type T
|
inline |
Recursively compute all of the children of an SVG element
|
inline |
Return all children of type T
|
inline |
Recursively compute all of the children of an SVG element
|
inlineprotected |
Helper function which populates a std::deque with all of an Element's children
|
inlineprotected |
Helper function which populates a std::deque with all of an Element's children
|
inline |
Return the SVG element that has a certain id
|
inline |
Return the SVG element that has a certain id
|
inline |
Return all SVG elements with a certain class name
|
inline |
Return all SVG elements with a certain class name
|
inline |
Return all immediate children of type T
|
inline |
Return all immediate children, regardless of type, as Element pointers
|
inline |
Return all immediate children of type T
|
inline |
Return all immediate children, regardless of type, as Element pointers
|
inline |
Return true when autoscale/layout uses caller-provided bounds for this element.
|
inlinevirtual |
Return the element category used by typed traversal; custom subclasses default to Custom.
Reimplemented in SVG::Defs, SVG::Symbol, SVG::Use, SVG::SVG::Style, SVG::SVG, SVG::Path, SVG::Text, SVG::Title, SVG::Group, SVG::Line, SVG::Rect, SVG::Circle, and SVG::Polygon.
|
inline |
Return explicit autoscale/layout bounds, or this element's measured bounds when unset.
|
inline |
Provide explicit bounds for autoscale/layout when built-in measurement is insufficient.
|
inlineoverrideprotectedvirtual |
Reimplemented from SVG::AttributeMap.
|
inline |
Move an SVG element into this container
|
inline |
Set only the viewBox using explicit layout behavior options.
|
inline |
Set only the viewBox from content bounds and percentage margins.
|
inline |
Set only the viewBox from content bounds, leaving width and height unchanged.
|
inlineoverrideprotectedvirtual |
Reimplemented from SVG::AttributeMap.
|
inline |
Snap this element using RelativeAlignment | Anchor.
|
inline |
Snap this element to a target side, centered along the target edge by default.
|
inlineprotectedvirtual |
Return the string representation of an SVG element
| [out] | indent_level | The current level of indentation |
Reimplemented in SVG::SVG::Style, and SVG::Title.
|
inlineprotectedvirtual |
SVG string corresponding to this element
|
inlineprotectedvirtual |