Donner 0.5.0
Embeddable browser-grade SVG2 engine
Loading...
Searching...
No Matches
FilterGraph.h File Reference
#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"
Include dependency graph for FilterGraph.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  donner::svg::components::FilterInput
 Identifies the input to a filter primitive node. More...
struct  donner::svg::components::FilterInput::Previous
 The input is the output of the immediately preceding primitive (or SourceGraphic for the first primitive). More...
struct  donner::svg::components::FilterInput::Named
 The input is a named result from a prior primitive's result attribute. More...
struct  donner::svg::components::filter_primitive::GaussianBlur
 Parameters for feGaussianBlur. More...
struct  donner::svg::components::filter_primitive::Flood
 Parameters for feFlood. More...
struct  donner::svg::components::filter_primitive::Offset
 Parameters for feOffset. More...
struct  donner::svg::components::filter_primitive::Blend
 Parameters for feBlend. More...
struct  donner::svg::components::filter_primitive::Composite
 Parameters for feComposite. More...
struct  donner::svg::components::filter_primitive::ColorMatrix
 Parameters for feColorMatrix. More...
struct  donner::svg::components::filter_primitive::Merge
 Parameters for feMerge. Children are represented as additional inputs on the FilterNode. More...
struct  donner::svg::components::filter_primitive::DropShadow
 Parameters for feDropShadow. More...
struct  donner::svg::components::filter_primitive::ComponentTransfer
 Parameters for feComponentTransfer. More...
struct  donner::svg::components::filter_primitive::ComponentTransfer::Func
 A single channel's transfer function. More...
struct  donner::svg::components::filter_primitive::ConvolveMatrix
 Parameters for feConvolveMatrix. More...
struct  donner::svg::components::filter_primitive::Morphology
 Parameters for feMorphology. More...
struct  donner::svg::components::filter_primitive::Tile
 Parameters for feTile. More...
struct  donner::svg::components::filter_primitive::Turbulence
 Parameters for feTurbulence. More...
struct  donner::svg::components::filter_primitive::Image
 Parameters for feImage. More...
struct  donner::svg::components::filter_primitive::DisplacementMap
 Parameters for feDisplacementMap. More...
struct  donner::svg::components::filter_primitive::LightSource
 Light source parameters for lighting filter primitives. More...
struct  donner::svg::components::filter_primitive::DiffuseLighting
 Parameters for feDiffuseLighting. More...
struct  donner::svg::components::filter_primitive::SpecularLighting
 Parameters for feSpecularLighting. More...
struct  donner::svg::components::FilterNode
 A single node in the filter graph, representing one filter primitive. More...
struct  donner::svg::components::FilterGraph
 The complete filter graph for a <filter> element. More...

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...

Class Documentation

◆ donner::svg::components::FilterInput::Previous

struct donner::svg::components::FilterInput::Previous

The input is the output of the immediately preceding primitive (or SourceGraphic for the first primitive).

◆ donner::svg::components::FilterInput::Named

struct donner::svg::components::FilterInput::Named

The input is a named result from a prior primitive's result attribute.

Collaboration diagram for donner::svg::components::FilterInput::Named:
[legend]
Class Members
RcString name The result name to reference.

◆ donner::svg::components::filter_primitive::Flood

struct donner::svg::components::filter_primitive::Flood

Parameters for feFlood.

Collaboration diagram for donner::svg::components::filter_primitive::Flood:
[legend]
Class Members
Color floodColor {css::RGBA(0, 0, 0, 0xFF)} Flood color (default: black).
double floodOpacity = 1.0 Flood opacity (default: 1).

◆ donner::svg::components::filter_primitive::Offset

struct donner::svg::components::filter_primitive::Offset

Parameters for feOffset.

Class Members
double dx = 0.0 Horizontal offset.
double dy = 0.0 Vertical offset.

◆ donner::svg::components::filter_primitive::Merge

struct donner::svg::components::filter_primitive::Merge

Parameters for feMerge. Children are represented as additional inputs on the FilterNode.

◆ donner::svg::components::filter_primitive::DropShadow

struct donner::svg::components::filter_primitive::DropShadow

Parameters for feDropShadow.

Collaboration diagram for donner::svg::components::filter_primitive::DropShadow:
[legend]
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.

◆ donner::svg::components::filter_primitive::ComponentTransfer::Func

struct donner::svg::components::filter_primitive::ComponentTransfer::Func

A single channel's transfer function.

Collaboration diagram for donner::svg::components::filter_primitive::ComponentTransfer::Func:
[legend]
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.

◆ donner::svg::components::filter_primitive::Tile

struct donner::svg::components::filter_primitive::Tile

Parameters for feTile.

◆ donner::svg::components::filter_primitive::Image

struct donner::svg::components::filter_primitive::Image

Parameters for feImage.

Collaboration diagram for donner::svg::components::filter_primitive::Image:
[legend]
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.

◆ donner::svg::components::filter_primitive::DiffuseLighting

struct donner::svg::components::filter_primitive::DiffuseLighting

Parameters for feDiffuseLighting.

Collaboration diagram for donner::svg::components::filter_primitive::DiffuseLighting:
[legend]
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.

◆ donner::svg::components::filter_primitive::SpecularLighting

struct donner::svg::components::filter_primitive::SpecularLighting

Parameters for feSpecularLighting.

Collaboration diagram for donner::svg::components::filter_primitive::SpecularLighting:
[legend]
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.

◆ donner::svg::components::FilterNode

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.

Collaboration diagram for donner::svg::components::FilterNode:
[legend]
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.