summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/shapes/Shape.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/rendering/shapes/Shape.h')
-rw-r--r--Source/WebCore/rendering/shapes/Shape.h46
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