#include "third_party/blink/renderer/core/svg/svg_path_blender.h"
#include "base/notreached.h"
#include "third_party/blink/renderer/core/svg/svg_path_byte_stream_source.h"
#include "third_party/blink/renderer/core/svg/svg_path_consumer.h"
#include "third_party/blink/renderer/core/svg/svg_path_data.h"
#include "third_party/blink/renderer/platform/geometry/blend.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
namespace blink {
enum FloatBlendMode { … };
class SVGPathBlender::BlendState { … };
float SVGPathBlender::BlendState::BlendAnimatedDimensonalFloat(
float from,
float to,
FloatBlendMode blend_mode) { … }
gfx::PointF SVGPathBlender::BlendState::BlendAnimatedPointSameCoordinates(
const gfx::PointF& from_point,
const gfx::PointF& to_point) { … }
gfx::PointF SVGPathBlender::BlendState::BlendAnimatedPoint(
const gfx::PointF& from_point,
const gfx::PointF& to_point) { … }
bool SVGPathBlender::BlendState::CanBlend(const PathSegmentData& from_seg,
const PathSegmentData& to_seg) { … }
static void UpdateCurrentPoint(gfx::PointF& sub_path_point,
gfx::PointF& current_point,
const PathSegmentData& segment) { … }
bool SVGPathBlender::BlendState::BlendSegments(
const PathSegmentData& from_seg,
const PathSegmentData& to_seg,
PathSegmentData& blended_segment) { … }
SVGPathBlender::SVGPathBlender(SVGPathByteStreamSource* from_source,
SVGPathByteStreamSource* to_source,
SVGPathConsumer* consumer)
: … { … }
bool SVGPathBlender::AddAnimatedPath(unsigned repeat_count) { … }
bool SVGPathBlender::BlendAnimatedPath(float progress) { … }
bool SVGPathBlender::BlendAnimatedPath(BlendState& blend_state) { … }
}