diff options
Diffstat (limited to 'Source/WebCore/rendering/shapes/Shape.h')
-rw-r--r-- | Source/WebCore/rendering/shapes/Shape.h | 46 |
1 files changed, 22 insertions, 24 deletions
diff --git a/Source/WebCore/rendering/shapes/Shape.h b/Source/WebCore/rendering/shapes/Shape.h index ab71d5568..f810ff5ee 100644 --- a/Source/WebCore/rendering/shapes/Shape.h +++ b/Source/WebCore/rendering/shapes/Shape.h @@ -12,7 +12,7 @@ * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS @@ -27,33 +27,37 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef Shape_h -#define Shape_h +#pragma once -#include "BasicShapes.h" #include "LayoutRect.h" #include "Path.h" -#include "RoundedRect.h" -#include "StyleImage.h" #include "WritingMode.h" -#include <wtf/PassOwnPtr.h> -#include <wtf/Vector.h> namespace WebCore { struct LineSegment { + LineSegment() + : logicalLeft(0) + , logicalRight(0) + , isValid(false) + { + } + LineSegment(float logicalLeft, float logicalRight) : logicalLeft(logicalLeft) , logicalRight(logicalRight) + , isValid(true) { } - LayoutUnit logicalLeft; - LayoutUnit logicalRight; + float logicalLeft; + float logicalRight; + bool isValid; }; -typedef Vector<LineSegment> SegmentList; - +class BasicShape; +class Image; +class RoundedRect; // A representation of a BasicShape that enables layout code to determine how to break a line up into segments // that will fit within or around a shape. The line is defined by a pair of logical Y coordinates and the @@ -61,32 +65,29 @@ typedef Vector<LineSegment> SegmentList; // physical coordinates. class Shape { + WTF_MAKE_FAST_ALLOCATED; public: struct DisplayPaths { Path shape; Path marginShape; }; - static PassOwnPtr<Shape> createShape(const BasicShape*, const LayoutSize& logicalBoxSize, WritingMode, Length margin, Length padding); - static PassOwnPtr<Shape> createRasterShape(const StyleImage&, float threshold, const LayoutRect& imageRect, const LayoutSize& logicalBoxSize, WritingMode, Length margin, Length padding); - static PassOwnPtr<Shape> createLayoutBoxShape(const RoundedRect&, WritingMode, Length margin, Length padding); + static std::unique_ptr<Shape> createShape(const BasicShape&, const LayoutSize& logicalBoxSize, WritingMode, float margin); + static std::unique_ptr<Shape> createRasterShape(Image*, float threshold, const LayoutRect& imageRect, const LayoutRect& marginRect, WritingMode, float margin); + static std::unique_ptr<Shape> createBoxShape(const RoundedRect&, WritingMode, float margin); virtual ~Shape() { } virtual LayoutRect shapeMarginLogicalBoundingBox() const = 0; - virtual LayoutRect shapePaddingLogicalBoundingBox() const = 0; virtual bool isEmpty() const = 0; - virtual void getIncludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalHeight, SegmentList&) const = 0; - virtual void getExcludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalHeight, SegmentList&) const = 0; - virtual bool firstIncludedIntervalLogicalTop(LayoutUnit minLogicalIntervalTop, const FloatSize& minLogicalIntervalSize, LayoutUnit& result) const = 0; + virtual LineSegment getExcludedInterval(LayoutUnit logicalTop, LayoutUnit logicalHeight) const = 0; + bool lineOverlapsShapeMarginBounds(LayoutUnit lineTop, LayoutUnit lineHeight) const { return lineOverlapsBoundingBox(lineTop, lineHeight, shapeMarginLogicalBoundingBox()); } - bool lineOverlapsShapePaddingBounds(LayoutUnit lineTop, LayoutUnit lineHeight) const { return lineOverlapsBoundingBox(lineTop, lineHeight, shapePaddingLogicalBoundingBox()); } virtual void buildDisplayPaths(DisplayPaths&) const = 0; protected: float shapeMargin() const { return m_margin; } - float shapePadding() const { return m_padding; } private: bool lineOverlapsBoundingBox(LayoutUnit lineTop, LayoutUnit lineHeight, const LayoutRect& rect) const @@ -98,9 +99,6 @@ private: WritingMode m_writingMode; float m_margin; - float m_padding; }; } // namespace WebCore - -#endif // Shape_h |