#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "third_party/blink/renderer/core/svg/svg_transform_list.h"
#include "third_party/blink/renderer/core/css/css_function_value.h"
#include "third_party/blink/renderer/core/css/css_identifier_value.h"
#include "third_party/blink/renderer/core/css/css_numeric_literal_value.h"
#include "third_party/blink/renderer/core/css/css_primitive_value.h"
#include "third_party/blink/renderer/core/css/css_value_list.h"
#include "third_party/blink/renderer/core/svg/animation/smil_animation_effect_parameters.h"
#include "third_party/blink/renderer/core/svg/svg_parser_utilities.h"
#include "third_party/blink/renderer/core/svg/svg_transform_distance.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
#include "third_party/blink/renderer/platform/wtf/text/character_visitor.h"
#include "third_party/blink/renderer/platform/wtf/text/parsing_utilities.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
namespace blink {
namespace {
const unsigned kRequiredValuesForType[] = …;
const unsigned kOptionalValuesForType[] = …;
static_assert …;
static_assert …;
static_assert …;
static_assert …;
static_assert …;
static_assert …;
static_assert …;
static_assert …;
static_assert …;
constexpr size_t kMaxTransformArguments = …;
class TransformArguments { … };
SVGTransformData;
SVGTransformData SkewXTransformValue(float angle) { … }
SVGTransformData SkewYTransformValue(float angle) { … }
SVGTransformData ScaleTransformValue(float sx, float sy) { … }
SVGTransformData TranslateTransformValue(float tx, float ty) { … }
SVGTransformData RotateTransformValue(float angle, float cx, float cy) { … }
SVGTransformData MatrixTransformValue(const TransformArguments& arguments) { … }
template <typename CharType>
SVGParseStatus ParseTransformArgumentsForType(SVGTransformType type,
const CharType*& ptr,
const CharType* end,
TransformArguments& arguments) { … }
SVGTransformData TransformDataFromValues(SVGTransformType type,
const TransformArguments& arguments) { … }
SVGTransform* CreateTransformFromValues(SVGTransformType type,
const TransformArguments& arguments) { … }
}
SVGTransformList::SVGTransformList() = default;
SVGTransformList::SVGTransformList(SVGTransformType transform_type,
const String& value) { … }
SVGTransformList::~SVGTransformList() = default;
AffineTransform SVGTransformList::Concatenate() const { … }
namespace {
CSSValueID MapTransformFunction(const SVGTransform& transform) { … }
CSSValue* CreateTransformCSSValue(const SVGTransform& transform) { … }
}
const CSSValue* SVGTransformList::CssValue() const { … }
namespace {
template <typename CharType>
SVGTransformType ParseAndSkipTransformType(const CharType*& ptr,
const CharType* end) { … }
}
template <typename CharType>
SVGParsingError SVGTransformList::ParseInternal(const CharType*& ptr,
const CharType* end) { … }
bool SVGTransformList::Parse(const UChar*& ptr, const UChar* end) { … }
bool SVGTransformList::Parse(const LChar*& ptr, const LChar* end) { … }
SVGTransformType ParseTransformType(const String& string) { … }
SVGParsingError SVGTransformList::SetValueAsString(const String& value) { … }
SVGPropertyBase* SVGTransformList::CloneForAnimation(
const String& value) const { … }
void SVGTransformList::Add(const SVGPropertyBase* other,
const SVGElement* context_element) { … }
void SVGTransformList::CalculateAnimatedValue(
const SMILAnimationEffectParameters& parameters,
float percentage,
unsigned repeat_count,
const SVGPropertyBase* from_value,
const SVGPropertyBase* to_value,
const SVGPropertyBase* to_at_end_of_duration_value,
const SVGElement* context_element) { … }
float SVGTransformList::CalculateDistance(const SVGPropertyBase* to_value,
const SVGElement*) const { … }
}