Donner SVG main
0.8.0 ยท 382bd0190.8.0 main
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
AnimationValueMath.h File Reference
#include <optional>
#include <string>
#include <string_view>
#include <vector>
#include "donner/base/Length.h"
#include "donner/css/Color.h"
Include dependency graph for AnimationValueMath.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  donner::svg::components::AnimationValueContext
 Context required to resolve relative units and currentColor for an animated value. 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,.

Functions

bool donner::svg::components::IsContextualScalarAttribute (std::string_view attribute)
 Whether a CSS scalar stack needs the final instance's parent cascade.
bool donner::svg::components::IsContextualPaintAttribute (std::string_view attribute)
 Whether a paint/color stack needs the final instance's cascade.
std::optional< std::string > donner::svg::components::SerializeAnimationUrl (std::string_view href)
 Serialize an escaped, quoted CSS URL within the animation output envelope.
std::optional< std::vector< Lengthd > > donner::svg::components::ParseAnimationLengths (std::string_view input)
 Parse a finite length list within the animation numeric-value limit.
bool donner::svg::components::ValidAnimationNumericOperand (std::string_view input, const AnimationValueContext &context)
 Validate a source operand against the target's numeric grammar before interpolation.
std::optional< Lengthd > donner::svg::components::ParseAnimationLength (std::string_view attribute, std::string_view value)
 Parse one animated length, including axis-appropriate refX/refY reference keywords.
std::optional< std::string > donner::svg::components::CombineAnimationValues (std::string_view first, std::string_view second, double firstWeight, double secondWeight, const AnimationValueContext &context, bool secondIsOffset=false)
 Combine compatible numeric, length-list, or color values with linear weights.
std::optional< double > donner::svg::components::AnimationValueDistance (std::string_view first, std::string_view second, const AnimationValueContext &context)
 Compute the paced distance between compatible values.

Class Documentation

◆ donner::svg::components::AnimationValueContext

struct donner::svg::components::AnimationValueContext

Context required to resolve relative units and currentColor for an animated value.

Class Members
bool angleValue = false Marker orientation operands use SVG angle units.
RGBA currentColor = css::RGBA::RGB(0, 0, 0) Resolved currentColor.
Extent extent = Lengthd::Extent::Mixed Percentage reference axis.
FontMetrics fontMetrics Font and viewport unit metrics.
bool integerValue = false Round interpolated numeric values to the nearest integer.
bool lengthValuesAreOffsets = false Sample operands are displacements, not positions.
bool linearRgb = false Interpolate colors in linear-light RGB when requested. Map mixed-unit filter lengths to user-space pixels while keeping additive offsets origin-free.
bool mappedLengths = false
size_t maximumNumbers = 0
bool numberPair = false Repeat one coordinate for number-optional-number values.
bool percentageNumbers Percentages represent fractions of one, not viewport lengths.
double percentageOrigin = 0 Origin added only to percentage positions.
bool referenceValue = false References are discrete and non-additive. Zero accepts general values; otherwise only this many dimensionless operands are allowed.
double unitlessOrigin = 0 Origin added only to unitless positions.
double unitlessScale = 1 User units represented by one unitless coordinate.
Box2d viewBox {{0, 0}, {300, 150}} Current SVG viewport in user units.