Chromium Code Reviews| Index: Source/core/rendering/shapes/PolygonShape.h |
| diff --git a/Source/core/rendering/shapes/PolygonShape.h b/Source/core/rendering/shapes/PolygonShape.h |
| index e69b35f1ff99775a94f1b037ac2526a421085c03..35d7efefd28d38f38ad7779921851d48e307f3b5 100644 |
| --- a/Source/core/rendering/shapes/PolygonShape.h |
| +++ b/Source/core/rendering/shapes/PolygonShape.h |
| @@ -31,52 +31,30 @@ |
| #define PolygonShape_h |
| #include "core/rendering/shapes/Shape.h" |
| +#include "core/rendering/shapes/ShapeInterval.h" |
| #include "platform/geometry/FloatPolygon.h" |
| namespace WebCore { |
| class OffsetPolygonEdge FINAL : public VertexPair { |
| public: |
| - enum Basis { |
| - Edge, |
| - Vertex, |
| - LineTop |
| - }; |
| - |
| OffsetPolygonEdge(const FloatPolygonEdge& edge, const FloatSize& offset) |
| : m_vertex1(edge.vertex1() + offset) |
| , m_vertex2(edge.vertex2() + offset) |
| - , m_edgeIndex(edge.edgeIndex()) |
| - , m_basis(Edge) |
| - { |
| - } |
| - |
| - OffsetPolygonEdge(const FloatPoint& reflexVertex, const FloatSize& offset1, const FloatSize& offset2) |
| - : m_vertex1(reflexVertex + offset1) |
| - , m_vertex2(reflexVertex + offset2) |
| - , m_edgeIndex(-1) |
| - , m_basis(Vertex) |
| - { |
| - } |
| - |
| - OffsetPolygonEdge(const FloatPolygon& polygon, float minLogicalIntervalTop, const FloatSize& offset) |
| - : m_vertex1(FloatPoint(polygon.boundingBox().x(), minLogicalIntervalTop) + offset) |
| - , m_vertex2(FloatPoint(polygon.boundingBox().maxX(), minLogicalIntervalTop) + offset) |
| - , m_edgeIndex(-1) |
| - , m_basis(LineTop) |
| { |
| } |
| virtual const FloatPoint& vertex1() const OVERRIDE { return m_vertex1; } |
| virtual const FloatPoint& vertex2() const OVERRIDE { return m_vertex2; } |
| - int edgeIndex() const { return m_edgeIndex; } |
| - Basis basis() const { return m_basis; } |
| + |
| + bool isWithinYRange(float y1, float y2) const { return y1 <= minY() && y2 >= maxY(); } |
|
eseidel
2014/04/05 01:49:05
One of these years we'll need a FloatRange or Floa
|
| + bool overlapsYRange(float y1, float y2) const { return y2 >= minY() && y1 <= maxY(); } |
| + float xIntercept(float y) const; |
| + FloatShapeInterval clippedEdgeXRange(float y1, float y2) const; |
| private: |
| FloatPoint m_vertex1; |
| FloatPoint m_vertex2; |
| - int m_edgeIndex; |
| - Basis m_basis; |
| }; |
| class PolygonShape FINAL : public Shape { |
| @@ -85,19 +63,15 @@ public: |
| PolygonShape(PassOwnPtr<Vector<FloatPoint> > vertices, WindRule fillRule) |
| : Shape() |
| , m_polygon(vertices, fillRule) |
| - , m_marginBounds(nullptr) |
| { |
| } |
| - virtual LayoutRect shapeMarginLogicalBoundingBox() const OVERRIDE { return static_cast<LayoutRect>(shapeMarginBounds().boundingBox()); } |
| + virtual LayoutRect shapeMarginLogicalBoundingBox() const OVERRIDE; |
| virtual bool isEmpty() const OVERRIDE { return m_polygon.isEmpty(); } |
| virtual void getExcludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalHeight, SegmentList&) const OVERRIDE; |
| private: |
| - const FloatPolygon& shapeMarginBounds() const; |
| - |
| FloatPolygon m_polygon; |
| - mutable OwnPtr<FloatPolygon> m_marginBounds; |
| }; |
| } // namespace WebCore |