|
|
Donner
C++20 SVG rendering library
|
Base class for all Elements: Basic Shapes. More...
#include "donner/svg/SVGGeometryElement.h"
Public Member Functions | |
| double | computedPathLength () const |
| Get the length of the path in user units. To override this value for stroke-dasharray and other path-offset-relative values, use setPathLength. | |
| std::optional< double > | pathLength () const |
| Get the path length override, if set. To get the computed path length, use computedPathLength(). | |
| void | setPathLength (std::optional< double > value) |
| Set the path length override. | |
| std::optional< PathSpline > | computedSpline () const |
| Get the path spline, computed by converting this shape's path to a spline. | |
| std::optional< Boxd > | worldBounds () const |
| Get the bounding box of the element, in world coordinates. | |
| Public Member Functions inherited from donner::svg::SVGGraphicsElement | |
| Transformd | transform () const |
| Get the 2d transformation for this element, element-from-parent. | |
| void | setTransform (const Transformd &transform) |
| Set the 2d transformation for this element, element-from-parent. This is a no-op if the transform is identity. | |
| Transformd | elementFromWorld () const |
| Get the absolute element-from-world transform for this element. | |
| Public Member Functions inherited from donner::svg::SVGElement | |
| SVGElement (const SVGElement &other) | |
| Create another reference to the same SVGElement. | |
| SVGElement (SVGElement &&other) noexcept | |
| Move constructor. | |
| ~SVGElement () noexcept=default | |
| Destructor. | |
| SVGElement & | operator= (const SVGElement &other) |
| Create another reference to the same SVGElement. | |
| SVGElement & | operator= (SVGElement &&other) noexcept |
| Move assignment operator. | |
| ElementType | type () const |
| Get the ElementType for known XML element types. | |
| xml::XMLQualifiedNameRef | tagName () const |
| Get the XML tag name string for this element. | |
| bool | isKnownType () const |
| Returns true if this is a known element type, returns false if this is an SVGUnknownElement. | |
| EntityHandle | entityHandle () const |
| Get the underlying EntityHandle, for advanced use-cases that require direct access to the ECS. | |
| RcString | id () const |
| Get the element id, the value of the "id" attribute. | |
| void | setId (std::string_view id) |
| Set the element id, the value of the "id" attribute. | |
| RcString | className () const |
| Get the element class name, the value of the "class" attribute. | |
| void | setClassName (std::string_view name) |
| Set the element class name, the value of the "class" attribute. | |
| void | setStyle (std::string_view style) |
| Set the element style, the value of the "style" attribute. | |
| void | updateStyle (std::string_view style) |
| Update the element style, adding new attributes or overridding existing ones (without removing them). | |
| ParseResult< bool > | trySetPresentationAttribute (std::string_view name, std::string_view value) |
| Set the value of a presentation attribute, such as "fill" or "stroke". | |
| bool | hasAttribute (const xml::XMLQualifiedNameRef &name) const |
| Returns true if the element has an attribute with the given name. | |
| std::optional< RcString > | getAttribute (const xml::XMLQualifiedNameRef &name) const |
| Get the value of an attribute, if it exists. | |
| SmallVector< xml::XMLQualifiedNameRef, 1 > | findMatchingAttributes (const xml::XMLQualifiedNameRef &matcher) const |
| Find attributes matching the given name matcher. | |
| void | setAttribute (const xml::XMLQualifiedNameRef &name, std::string_view value) |
| Set the value of a generic XML attribute, which may be either a presentation attribute or custom user-provided attribute. | |
| void | removeAttribute (const xml::XMLQualifiedNameRef &name) |
| Remove an attribute, which may be either a presentation attribute or custom user-provided attribute. | |
| SVGDocument | ownerDocument () |
| Get an owning reference to the SVGDocument containing this element. | |
| std::optional< SVGElement > | parentElement () const |
| Get this element's parent, if it exists. | |
| std::optional< SVGElement > | firstChild () const |
| Get the first child of this element, if it exists. | |
| std::optional< SVGElement > | lastChild () const |
| Get the last child of this element, if it exists. | |
| std::optional< SVGElement > | previousSibling () const |
| Get the previous sibling of this element, if it exists. | |
| std::optional< SVGElement > | nextSibling () const |
| Get the next sibling of this element, if it exists. | |
| void | insertBefore (const SVGElement &newNode, std::optional< SVGElement > referenceNode) |
Insert newNode as a child, before referenceNode. | |
| void | appendChild (const SVGElement &child) |
Append child as a child of the current node. | |
| void | replaceChild (const SVGElement &newChild, const SVGElement &oldChild) |
Replace oldChild with newChild in the tree, removing oldChild and inserting newChild in its place. | |
| void | removeChild (const SVGElement &child) |
Remove child from this node. | |
| void | remove () |
| Remove this node from its parent, if it has one. | |
| bool | operator== (const SVGElement &other) const |
| Returns true if the two SVGElement handles reference the same underlying document. | |
| bool | operator!= (const SVGElement &other) const |
| Returns true if the two SVGElement handles reference the same underlying document. | |
| template<typename Derived> | |
| bool | isa () const |
| Return true if this element "is a" instance of type, if it be cast to a specific type with cast. | |
| template<typename Derived> | |
| Derived | cast () |
| Cast this element to its derived type. | |
| template<typename Derived> | |
| Derived | cast () const |
| Cast this element to its derived type (const version). | |
| template<typename Derived> | |
| std::optional< Derived > | tryCast () |
| Cast this element to its derived type, if possible. | |
| template<typename Derived> | |
| std::optional< const Derived > | tryCast () const |
| Cast this element to its derived type, if possible. | |
| std::optional< SVGElement > | querySelector (std::string_view selector) |
| Find the first element in the tree that matches the given CSS selector. | |
| const PropertyRegistry & | getComputedStyle () const |
| Get the computed CSS style of this element, after the CSS cascade. | |
Static Public Member Functions | |
| static constexpr bool | IsBaseOf (ElementType type) |
| Returns true if the given element type can be cast to SVGGeometryElement. | |
| Static Public Member Functions inherited from donner::svg::SVGGraphicsElement | |
| static constexpr bool | IsBaseOf (ElementType type) |
| Returns true if the given element type can be cast to SVGTextContentElement. | |
Protected Member Functions | |
| SVGGeometryElement (EntityHandle handle) | |
| Internal constructor to create an SVGGeometryElement from an EntityHandle. | |
| void | invalidate () |
| Invalidates the computed shape for this element, should be called when the shape geometry changes. | |
| Protected Member Functions inherited from donner::svg::SVGGraphicsElement | |
| SVGGraphicsElement (EntityHandle handle) | |
| Inheriting constructor to be called by derived classes. SVGGraphicsElement cannot be instantiated directly. | |
| Protected Member Functions inherited from donner::svg::SVGElement | |
| SVGElement (EntityHandle handle) | |
| Internal constructor to create an SVGElement from an EntityHandle. | |
| Registry & | registry () const |
| Get the underlying ECS Registry, which holds all data for the document, for advanced use. | |
| EntityHandle | toHandle (Entity entity) const |
| Convert an Entity to an EntityHandle, for advanced use. | |
Friends | |
| class | parser::SVGParserImpl |
Additional Inherited Members | |
| Static Protected Member Functions inherited from donner::svg::SVGElement | |
| static EntityHandle | CreateEmptyEntity (SVGDocument &document) |
| Create a new Entity within the document ECS, and return a handle to it. | |
| static void | CreateEntityOn (EntityHandle handle, const xml::XMLQualifiedNameRef &tagName, ElementType Type) |
| Create a new SVG element instance on a given Entity. | |
| Protected Attributes inherited from donner::svg::SVGElement | |
| EntityHandle | handle_ |
| The underlying ECS Entity for this element, which holds all data. | |
Base class for all Elements: Basic Shapes.
This is the DOM base class for all basic shapes, such as SVGCircleElement, SVGRectElement, SVGPathElement, etc.
|
inlineexplicitprotected |
Internal constructor to create an SVGGeometryElement from an EntityHandle.
To create a geometry element, use the static Create methods on the derived class, such as SVGCircleElement::Create.
| handle | EntityHandle to wrap. |
| std::optional< PathSpline > donner::svg::SVGGeometryElement::computedSpline | ( | ) | const |
Get the path spline, computed by converting this shape's path to a spline.
For "<path>", this is the value of SVGPathElement::d() parsed by donner::svg::parser::PathParser.
std::nullopt if the path data string is invalid. | void donner::svg::SVGGeometryElement::setPathLength | ( | std::optional< double > | value | ) |
Set the path length override.
| value | New path length to set, which will scale path-offset-relative values such as stroke-dasharray. If unset, the path length will be calculated automatically. |
| std::optional< Boxd > donner::svg::SVGGeometryElement::worldBounds | ( | ) | const |
Get the bounding box of the element, in world coordinates.
If this is an invalid shape, returns std::nullopt.