Donner SVG 0.8.0-pre
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
donner::svg::components::StylesheetComponent Struct Reference

Data for a <style> element. More...

#include "donner/svg/components/StylesheetComponent.h"

Public Member Functions

bool isCssType () const
 Returns true if the <style> element has either no type attribute, or if it has been manually set to "text/css".
bool usesAttributeInSelector (std::string_view localName) const
 Returns true if this stylesheet contains an attribute selector that could match an attribute with the given local name, meaning writing that attribute can change which elements the stylesheet matches.
void parseStylesheet (const RcStringOrRef &str)
 Parse the contents of the <style> element.
void parseStylesheet (const RcStringOrRef &str, StylesheetSourceMap sourceMap)
 Parse the contents of the <style> element with source provenance.

Public Attributes

css::Stylesheet stylesheet
 The parsed stylesheet from the <style> element.
RcString text
 The raw CSS text the stylesheet was parsed from.
RcString type
 The type attribute of the <style> element.
StylesheetSourceMap sourceMap
 Optional mapping from CSS offsets to SVG document source.
bool isUserAgentStylesheet = false
 True if this is a user agent stylesheet, which is defined by the SVG specification and applied by default by the document. If set, this component is attached to an <svg> element instead. The stylesheet within is applied at lower priority, and should be considered a constant for Donner (it can be overridden, but the base style cannot be changed by the user).
std::vector< RcStringattributeSelectorNames
 Local names of the attributes referenced by attribute selectors in stylesheet, cached when the stylesheet is parsed.
bool attributeSelectorMatchesAnyName = false
 True when an attribute selector in stylesheet uses a wildcard local name, so any attribute write can change selector matching.

Detailed Description

Member Function Documentation

◆ parseStylesheet() [1/2]

void donner::svg::components::StylesheetComponent::parseStylesheet ( const RcStringOrRef & str)

Parse the contents of the <style> element.

Parameters
strThe contents of the <style> element.

◆ parseStylesheet() [2/2]

void donner::svg::components::StylesheetComponent::parseStylesheet ( const RcStringOrRef & str,
StylesheetSourceMap sourceMap )

Parse the contents of the <style> element with source provenance.

Parameters
strThe contents of the <style> element.
sourceMapSource map for local CSS offsets in str.

◆ usesAttributeInSelector()

bool donner::svg::components::StylesheetComponent::usesAttributeInSelector ( std::string_view localName) const
inline

Returns true if this stylesheet contains an attribute selector that could match an attribute with the given local name, meaning writing that attribute can change which elements the stylesheet matches.

Deliberately per-name rather than a single "uses any attribute selector" flag: the user agent stylesheet always contains one (*[xml|space=preserve]), so a single flag would be set for every document.

Parameters
localNameAttribute local name, compared case-insensitively to over-approximate.

Member Data Documentation

◆ attributeSelectorMatchesAnyName

bool donner::svg::components::StylesheetComponent::attributeSelectorMatchesAnyName = false

True when an attribute selector in stylesheet uses a wildcard local name, so any attribute write can change selector matching.

No CSS syntax produces this today.

◆ attributeSelectorNames

std::vector<RcString> donner::svg::components::StylesheetComponent::attributeSelectorNames

Local names of the attributes referenced by attribute selectors in stylesheet, cached when the stylesheet is parsed.

Used by usesAttributeInSelector.


The documentation for this struct was generated from the following file: