Donner
C++20 SVG rendering library
|
DOM object for a "<path>" element. More...
#include "donner/svg/SVGPathElement.h"
Public Member Functions | |
RcString | d () const |
Get the path data string, see Path Data Syntax. | |
void | setD (RcString d) |
Set the path data string, see Path Data Syntax. | |
void | setSpline (const PathSpline &spline) |
Set the path spline manually. | |
![]() | |
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. | |
![]() | |
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. | |
![]() | |
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 SVGPathElement | Create (SVGDocument &document) |
Create a new "<path>" element. | |
![]() | |
static constexpr bool | IsBaseOf (ElementType type) |
Returns true if the given element type can be cast to SVGGeometryElement. | |
![]() | |
static constexpr bool | IsBaseOf (ElementType type) |
Returns true if the given element type can be cast to SVGTextContentElement. | |
Static Public Attributes | |
static constexpr ElementType | Type = ElementType::Path |
Element type. | |
static constexpr std::string_view | Tag {"path"} |
XML tag name, "<path>". | |
Friends | |
class | parser::SVGParserImpl |
Additional Inherited Members | |
![]() | |
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. | |
![]() | |
SVGGraphicsElement (EntityHandle handle) | |
Inheriting constructor to be called by derived classes. SVGGraphicsElement cannot be instantiated directly. | |
![]() | |
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. | |
![]() | |
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. | |
![]() | |
EntityHandle | handle_ |
The underlying ECS Entity for this element, which holds all data. | |
DOM object for a "<path>" element.
Use the d
attribute to define the path, see Path Data Syntax for the syntax.
Example path:
|
inlinestatic |
Create a new "<path>" element.
document | Containing document. |
Set the path data string, see Path Data Syntax.
d | New path data string. |
void donner::svg::SVGPathElement::setSpline | ( | const PathSpline & | spline | ) |
Set the path spline manually.
Overrides the value of the d
attribute.
spline | Path spline. |