| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. | 2 * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above | 8 * 1. Redistributions of source code must retain the above |
| 9 * copyright notice, this list of conditions and the following | 9 * copyright notice, this list of conditions and the following |
| 10 * disclaimer. | 10 * disclaimer. |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 */ | 28 */ |
| 29 | 29 |
| 30 #ifndef PolygonShape_h | 30 #ifndef PolygonShape_h |
| 31 #define PolygonShape_h | 31 #define PolygonShape_h |
| 32 | 32 |
| 33 #include "core/rendering/shapes/Shape.h" | 33 #include "core/rendering/shapes/Shape.h" |
| 34 #include "platform/geometry/FloatPolygon.h" | 34 #include "platform/geometry/FloatPolygon.h" |
| 35 | 35 |
| 36 namespace WebCore { | 36 namespace WebCore { |
| 37 | 37 |
| 38 class OffsetPolygonEdge : public VertexPair { | 38 class OffsetPolygonEdge FINAL : public VertexPair { |
| 39 public: | 39 public: |
| 40 enum Basis { | 40 enum Basis { |
| 41 Edge, | 41 Edge, |
| 42 Vertex, | 42 Vertex, |
| 43 LineTop | 43 LineTop |
| 44 }; | 44 }; |
| 45 | 45 |
| 46 OffsetPolygonEdge(const FloatPolygonEdge& edge, const FloatSize& offset) | 46 OffsetPolygonEdge(const FloatPolygonEdge& edge, const FloatSize& offset) |
| 47 : m_vertex1(edge.vertex1() + offset) | 47 : m_vertex1(edge.vertex1() + offset) |
| 48 , m_vertex2(edge.vertex2() + offset) | 48 , m_vertex2(edge.vertex2() + offset) |
| (...skipping 23 matching lines...) Expand all Loading... |
| 72 int edgeIndex() const { return m_edgeIndex; } | 72 int edgeIndex() const { return m_edgeIndex; } |
| 73 Basis basis() const { return m_basis; } | 73 Basis basis() const { return m_basis; } |
| 74 | 74 |
| 75 private: | 75 private: |
| 76 FloatPoint m_vertex1; | 76 FloatPoint m_vertex1; |
| 77 FloatPoint m_vertex2; | 77 FloatPoint m_vertex2; |
| 78 int m_edgeIndex; | 78 int m_edgeIndex; |
| 79 Basis m_basis; | 79 Basis m_basis; |
| 80 }; | 80 }; |
| 81 | 81 |
| 82 class PolygonShape : public Shape { | 82 class PolygonShape FINAL : public Shape { |
| 83 WTF_MAKE_NONCOPYABLE(PolygonShape); | 83 WTF_MAKE_NONCOPYABLE(PolygonShape); |
| 84 public: | 84 public: |
| 85 PolygonShape(PassOwnPtr<Vector<FloatPoint> > vertices, WindRule fillRule) | 85 PolygonShape(PassOwnPtr<Vector<FloatPoint> > vertices, WindRule fillRule) |
| 86 : Shape() | 86 : Shape() |
| 87 , m_polygon(vertices, fillRule) | 87 , m_polygon(vertices, fillRule) |
| 88 , m_marginBounds(nullptr) | 88 , m_marginBounds(nullptr) |
| 89 , m_paddingBounds(nullptr) | 89 , m_paddingBounds(nullptr) |
| 90 { | 90 { |
| 91 } | 91 } |
| 92 | 92 |
| 93 virtual LayoutRect shapeMarginLogicalBoundingBox() const OVERRIDE { return s
tatic_cast<LayoutRect>(shapeMarginBounds().boundingBox()); } | 93 virtual LayoutRect shapeMarginLogicalBoundingBox() const OVERRIDE { return s
tatic_cast<LayoutRect>(shapeMarginBounds().boundingBox()); } |
| 94 virtual LayoutRect shapePaddingLogicalBoundingBox() const OVERRIDE { return
static_cast<LayoutRect>(shapePaddingBounds().boundingBox()); } | 94 virtual LayoutRect shapePaddingLogicalBoundingBox() const OVERRIDE { return
static_cast<LayoutRect>(shapePaddingBounds().boundingBox()); } |
| 95 virtual bool isEmpty() const OVERRIDE { return m_polygon.isEmpty(); } | 95 virtual bool isEmpty() const OVERRIDE { return m_polygon.isEmpty(); } |
| 96 virtual void getExcludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalH
eight, SegmentList&) const OVERRIDE; | 96 virtual void getExcludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalH
eight, SegmentList&) const OVERRIDE; |
| 97 virtual void getIncludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalH
eight, SegmentList&) const OVERRIDE; | 97 virtual void getIncludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalH
eight, SegmentList&) const OVERRIDE; |
| 98 virtual bool firstIncludedIntervalLogicalTop(LayoutUnit minLogicalIntervalTo
p, const FloatSize& minLogicalIntervalSize, LayoutUnit&) const OVERRIDE; | 98 virtual bool firstIncludedIntervalLogicalTop(LayoutUnit minLogicalIntervalTo
p, const FloatSize& minLogicalIntervalSize, LayoutUnit&) const OVERRIDE; |
| 99 | 99 |
| 100 private: | 100 private: |
| 101 const FloatPolygon& shapeMarginBounds() const; | 101 const FloatPolygon& shapeMarginBounds() const; |
| 102 const FloatPolygon& shapePaddingBounds() const; | 102 const FloatPolygon& shapePaddingBounds() const; |
| 103 | 103 |
| 104 FloatPolygon m_polygon; | 104 FloatPolygon m_polygon; |
| 105 mutable OwnPtr<FloatPolygon> m_marginBounds; | 105 mutable OwnPtr<FloatPolygon> m_marginBounds; |
| 106 mutable OwnPtr<FloatPolygon> m_paddingBounds; | 106 mutable OwnPtr<FloatPolygon> m_paddingBounds; |
| 107 }; | 107 }; |
| 108 | 108 |
| 109 } // namespace WebCore | 109 } // namespace WebCore |
| 110 | 110 |
| 111 #endif // PolygonShape_h | 111 #endif // PolygonShape_h |
| OLD | NEW |