| Index: third_party/WebKit/Source/core/layout/svg/LayoutSVGTextPath.h
|
| diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGTextPath.h b/third_party/WebKit/Source/core/layout/svg/LayoutSVGTextPath.h
|
| index 1d875856e532555d749daaeb112c6e9aa2ff30dc..1fd09f0713ebe455cbb408ee2e753981c0fce746 100644
|
| --- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGTextPath.h
|
| +++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGTextPath.h
|
| @@ -25,11 +25,37 @@
|
|
|
| namespace blink {
|
|
|
| +// This class maps a 1D location in the "path space"; [0, path length] to a
|
| +// (2D) point on the path and provides the normal (angle from the x-axis) for
|
| +// said point.
|
| +class PathPositionMapper {
|
| + USING_FAST_MALLOC(PathPositionMapper);
|
| +public:
|
| + static PassOwnPtr<PathPositionMapper> create(const Path& path)
|
| + {
|
| + return adoptPtr(new PathPositionMapper(path));
|
| + }
|
| +
|
| + enum PositionType {
|
| + OnPath,
|
| + BeforePath,
|
| + AfterPath,
|
| + };
|
| + PositionType pointAndNormalAtLength(float length, FloatPoint&, float& angle);
|
| + float length() const { return m_pathLength; }
|
| +
|
| +private:
|
| + explicit PathPositionMapper(const Path&);
|
| +
|
| + Path::PositionCalculator m_positionCalculator;
|
| + float m_pathLength;
|
| +};
|
| +
|
| class LayoutSVGTextPath final : public LayoutSVGInline {
|
| public:
|
| explicit LayoutSVGTextPath(Element*);
|
|
|
| - Path layoutPath() const;
|
| + PassOwnPtr<PathPositionMapper> layoutPath() const;
|
| float calculateStartOffset(float) const;
|
|
|
| bool isChildAllowed(LayoutObject*, const ComputedStyle&) const override;
|
|
|