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 |