#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "third_party/blink/renderer/core/svg/svg_length.h"
#include "third_party/blink/renderer/core/css/css_math_function_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.h"
#include "third_party/blink/renderer/core/css/parser/css_parser.h"
#include "third_party/blink/renderer/core/execution_context/security_context.h"
#include "third_party/blink/renderer/core/svg/animation/smil_animation_effect_parameters.h"
#include "third_party/blink/renderer/core/svg/svg_length_context.h"
#include "third_party/blink/renderer/core/svg_names.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/wtf/math_extras.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
namespace blink {
namespace {
#define CAST_UNIT …
const struct { … } g_initial_lengths_table[] = …;
static_assert …;
static_assert …;
#undef CAST_UNIT
const CSSPrimitiveValue& CreateInitialCSSValue(
SVGLength::Initial initial_value) { … }
}
SVGLength::SVGLength(SVGLengthMode mode)
: … { … }
SVGLength::SVGLength(Initial initial, SVGLengthMode mode)
: … { … }
SVGLength::SVGLength(const CSSPrimitiveValue& value, SVGLengthMode mode)
: … { … }
void SVGLength::Trace(Visitor* visitor) const { … }
SVGLength* SVGLength::Clone() const { … }
SVGPropertyBase* SVGLength::CloneForAnimation(const String& value) const { … }
bool SVGLength::operator==(const SVGLength& other) const { … }
Length SVGLength::ConvertToLength(
const SVGLengthConversionData& conversion_data) const { … }
float SVGLength::Value(const SVGLengthConversionData& conversion_data,
float dimension) const { … }
float SVGLength::Value(const SVGLengthContext& context) const { … }
void SVGLength::SetValueAsNumber(float value) { … }
void SVGLength::SetValueInSpecifiedUnits(float value) { … }
bool SVGLength::IsRelative() const { … }
static bool IsSupportedCSSUnitType(CSSPrimitiveValue::UnitType type) { … }
static bool IsSupportedCalculationCategory(CalculationResultCategory category) { … }
namespace {
const CSSParserContext* GetSVGAttributeParserContext() { … }
}
SVGParsingError SVGLength::SetValueAsString(const String& string) { … }
String SVGLength::ValueAsString() const { … }
void SVGLength::NewValueSpecifiedUnits(CSSPrimitiveValue::UnitType type,
float value) { … }
void SVGLength::ConvertToSpecifiedUnits(CSSPrimitiveValue::UnitType type,
const SVGLengthContext& context) { … }
SVGLengthMode SVGLength::LengthModeForAnimatedLengthAttribute(
const QualifiedName& attr_name) { … }
bool SVGLength::NegativeValuesForbiddenForAnimatedLengthAttribute(
const QualifiedName& attr_name) { … }
void SVGLength::Add(const SVGPropertyBase* other,
const SVGElement* context_element) { … }
void SVGLength::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 SVGLength::CalculateDistance(const SVGPropertyBase* to_value,
const SVGElement* context_element) const { … }
void SVGLength::SetInitial(unsigned initial_value) { … }
bool SVGLength::IsNegativeNumericLiteral() const { … }
}