#include "third_party/blink/renderer/core/svg/svg_animate_motion_element.h"
#include "third_party/blink/renderer/core/dom/element_traversal.h"
#include "third_party/blink/renderer/core/svg/animation/smil_animation_effect_parameters.h"
#include "third_party/blink/renderer/core/svg/animation/smil_animation_value.h"
#include "third_party/blink/renderer/core/svg/svg_a_element.h"
#include "third_party/blink/renderer/core/svg/svg_circle_element.h"
#include "third_party/blink/renderer/core/svg/svg_clip_path_element.h"
#include "third_party/blink/renderer/core/svg/svg_defs_element.h"
#include "third_party/blink/renderer/core/svg/svg_ellipse_element.h"
#include "third_party/blink/renderer/core/svg/svg_foreign_object_element.h"
#include "third_party/blink/renderer/core/svg/svg_g_element.h"
#include "third_party/blink/renderer/core/svg/svg_image_element.h"
#include "third_party/blink/renderer/core/svg/svg_line_element.h"
#include "third_party/blink/renderer/core/svg/svg_mpath_element.h"
#include "third_party/blink/renderer/core/svg/svg_parser_utilities.h"
#include "third_party/blink/renderer/core/svg/svg_path_element.h"
#include "third_party/blink/renderer/core/svg/svg_path_utilities.h"
#include "third_party/blink/renderer/core/svg/svg_polygon_element.h"
#include "third_party/blink/renderer/core/svg/svg_polyline_element.h"
#include "third_party/blink/renderer/core/svg/svg_rect_element.h"
#include "third_party/blink/renderer/core/svg/svg_switch_element.h"
#include "third_party/blink/renderer/core/svg/svg_text_element.h"
#include "third_party/blink/renderer/core/svg/svg_use_element.h"
#include "third_party/blink/renderer/core/svg_names.h"
#include "third_party/blink/renderer/platform/transforms/affine_transform.h"
#include "third_party/blink/renderer/platform/wtf/math_extras.h"
#include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
#include "third_party/blink/renderer/platform/wtf/text/character_visitor.h"
namespace blink {
namespace {
bool TargetCanHaveMotionTransform(const SVGElement& target) { … }
}
SVGAnimateMotionElement::SVGAnimateMotionElement(Document& document)
: … { … }
SVGAnimateMotionElement::~SVGAnimateMotionElement() = default;
bool SVGAnimateMotionElement::HasValidAnimation() const { … }
void SVGAnimateMotionElement::WillChangeAnimationTarget() { … }
void SVGAnimateMotionElement::DidChangeAnimationTarget() { … }
void SVGAnimateMotionElement::ChildMPathChanged() { … }
void SVGAnimateMotionElement::ParseAttribute(
const AttributeModificationParams& params) { … }
SVGAnimateMotionElement::RotateMode SVGAnimateMotionElement::GetRotateMode()
const { … }
void SVGAnimateMotionElement::UpdateAnimationPath() { … }
template <typename CharType>
static bool ParsePointInternal(const CharType* ptr,
const CharType* end,
gfx::PointF& point) { … }
static bool ParsePoint(const String& string, gfx::PointF& point) { … }
SMILAnimationValue SVGAnimateMotionElement::CreateAnimationValue() const { … }
void SVGAnimateMotionElement::ClearAnimationValue() { … }
bool SVGAnimateMotionElement::CalculateToAtEndOfDurationValue(
const String& to_at_end_of_duration_string) { … }
void SVGAnimateMotionElement::CalculateFromAndToValues(
const String& from_string,
const String& to_string) { … }
void SVGAnimateMotionElement::CalculateFromAndByValues(
const String& from_string,
const String& by_string) { … }
void SVGAnimateMotionElement::CalculateAnimationValue(
SMILAnimationValue& animation_value,
float percentage,
unsigned repeat_count) const { … }
void SVGAnimateMotionElement::ApplyResultsToTarget(
const SMILAnimationValue& animation_value) { … }
float SVGAnimateMotionElement::CalculateDistance(const String& from_string,
const String& to_string) { … }
AnimationMode SVGAnimateMotionElement::CalculateAnimationMode() { … }
}