|
|
Donner 0.5.0
Embeddable browser-grade SVG2 engine
|
#include <cstdint>#include <memory>#include <optional>#include <variant>#include <vector>#include "donner/base/Box.h"#include "donner/base/EcsRegistry.h"#include "donner/base/Length.h"#include "donner/base/RcString.h"#include "donner/css/Color.h"#include "donner/svg/components/filter/FilterUnits.h"#include "donner/svg/core/ColorInterpolationFilters.h"#include "donner/svg/core/PreserveAspectRatio.h"Namespaces | |
| namespace | donner |
| Top-level Donner namespace, which is split into different sub-namespaces such as donner::svg and donner::css. | |
| namespace | donner::svg |
| Donner SVG library, which can load, manipulate and render SVG files. | |
| namespace | donner::svg::components |
| Contains the implementation of the Donner ECS,. | |
| namespace | donner::svg::components::filter_primitive |
| Variant holding the parameters for each type of filter primitive. | |
Typedefs | |
| using | donner::svg::components::FilterPrimitive |
| Variant holding any filter primitive type. | |
Enumerations | |
| enum class | donner::svg::components::FilterStandardInput : std::uint8_t { donner::svg::components::SourceGraphic , donner::svg::components::SourceAlpha , donner::svg::components::FillPaint , donner::svg::components::StrokePaint } |
| Standard named inputs available to filter primitives. More... | |
| struct donner::svg::components::FilterInput::Previous |
The input is the output of the immediately preceding primitive (or SourceGraphic for the first primitive).
| struct donner::svg::components::FilterInput::Named |
| struct donner::svg::components::filter_primitive::Flood |
| struct donner::svg::components::filter_primitive::Offset |
| struct donner::svg::components::filter_primitive::Merge |
Parameters for feMerge. Children are represented as additional inputs on the FilterNode.
| struct donner::svg::components::filter_primitive::DropShadow |
Parameters for feDropShadow.
| Class Members | ||
|---|---|---|
| double | dx = 2.0 | Horizontal offset. |
| double | dy = 2.0 | Vertical offset. |
| Color | floodColor {css::RGBA(0, 0, 0, 0xFF)} | Shadow color (default: black). |
| double | floodOpacity = 1.0 | Shadow opacity (default: 1). |
| double | stdDeviationX = 2.0 | Blur standard deviation X. |
| double | stdDeviationY = 2.0 | Blur standard deviation Y. |
| struct donner::svg::components::filter_primitive::ComponentTransfer::Func |
A single channel's transfer function.
| Class Members | ||
|---|---|---|
| double | amplitude = 1.0 | Amplitude (for gamma). |
| double | exponent = 1.0 | Exponent (for gamma). |
| double | intercept = 0.0 | Intercept (for linear). |
| double | offset = 0.0 | Offset (for gamma). |
| double | slope = 1.0 | Slope (for linear). |
| vector< double > | tableValues | Table values (for table/discrete). |
| FuncType | type = FuncType::Identity | Function type. |
| struct donner::svg::components::filter_primitive::Tile |
Parameters for feTile.
| struct donner::svg::components::filter_primitive::Image |
Parameters for feImage.
| Class Members | ||
|---|---|---|
| RcString | fragmentId | Fragment ID for same-document element references (e.g., href="#rect1" stores "rect1"). The renderer resolves this to pixel data before filter execution. |
| Vector2d | fragmentRegionTopLeft | The filter region top-left in user-space coordinates, used by fragment references to apply a device-space post-translation that positions the fragment content at the filter primitive subregion origin. Set by the renderer driver during pre-rendering. |
| RcString | href | Image URL or fragment reference. |
| vector< uint8_t > | imageData | Loaded image data (RGBA, straight alpha). Empty if loading failed or href is a fragment. |
| int | imageHeight = 0 | Height of loaded image in pixels. |
| int | imageWidth = 0 | Width of loaded image in pixels. |
| bool | isFragmentReference = false | True when this image was rendered from a same-document element reference. Fragment images are rendered in the SVG's user-space coordinate system and should be placed at 1:1 in the filter pixmap without preserveAspectRatio scaling. |
| PreserveAspectRatio | preserveAspectRatio = PreserveAspectRatio::Default() | |
| shared_ptr< Registry > | svgSubDocument | Shared handle to an external SVG sub-document. The renderer pre-renders this to pixel data before filter execution. |
| struct donner::svg::components::filter_primitive::DiffuseLighting |
Parameters for feDiffuseLighting.
| Class Members | ||
|---|---|---|
| double | diffuseConstant = 1.0 | Diffuse reflection constant. |
| optional< LightSource > | light | Light source (from child element). |
| Color | lightingColor {css::RGBA(0xFF, 0xFF, 0xFF, 0xFF)} | Light color (default: white). |
| double | surfaceScale = 1.0 | Height of surface. |
| struct donner::svg::components::filter_primitive::SpecularLighting |
Parameters for feSpecularLighting.
| Class Members | ||
|---|---|---|
| optional< LightSource > | light | Light source (from child element). |
| Color | lightingColor {css::RGBA(0xFF, 0xFF, 0xFF, 0xFF)} | Light color (default: white). |
| double | specularConstant = 1.0 | Specular reflection constant. |
| double | specularExponent = 1.0 | Specular exponent (1..128). |
| double | surfaceScale = 1.0 | Height of surface. |
| struct donner::svg::components::FilterNode |
A single node in the filter graph, representing one filter primitive.
Nodes are executed in document order. Each node reads from its inputs (which may be standard inputs like SourceGraphic, or outputs of prior nodes), applies its primitive operation, and writes to an output buffer.
| Class Members | ||
|---|---|---|
| optional< ColorInterpolationFilters > | colorInterpolationFilters | Per-primitive color-interpolation-filters. When set, overrides the graph-level default. |
| optional< Lengthd > | height | Primitive subregion height. |
| vector< FilterInput > | inputs | Input(s) to this primitive. |
| FilterPrimitive | primitive | The filter primitive operation. |
| optional< RcString > | result | Named output (for result attribute). |
| optional< Lengthd > | width | Primitive subregion width. |
| optional< Lengthd > | x | Primitive subregion X. |
| optional< Lengthd > | y | Primitive subregion Y. |