| 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 12 matching lines...) Expand all Loading... |
| 23 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | 23 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
| 25 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 25 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| 26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | 26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
| 27 * OF THE POSSIBILITY OF SUCH DAMAGE. | 27 * OF THE POSSIBILITY OF SUCH DAMAGE. |
| 28 */ | 28 */ |
| 29 | 29 |
| 30 #include "platform/geometry/FloatPolygon.h" | 30 #include "platform/geometry/FloatPolygon.h" |
| 31 | 31 |
| 32 #include "wtf/MathExtras.h" | 32 #include "wtf/MathExtras.h" |
| 33 #include <memory> | |
| 34 | 33 |
| 35 namespace blink { | 34 namespace blink { |
| 36 | 35 |
| 37 static inline float determinant(const FloatSize& a, const FloatSize& b) | 36 static inline float determinant(const FloatSize& a, const FloatSize& b) |
| 38 { | 37 { |
| 39 return a.width() * b.height() - a.height() * b.width(); | 38 return a.width() * b.height() - a.height() * b.width(); |
| 40 } | 39 } |
| 41 | 40 |
| 42 static inline bool areCollinearPoints(const FloatPoint& p0, const FloatPoint& p1
, const FloatPoint& p2) | 41 static inline bool areCollinearPoints(const FloatPoint& p0, const FloatPoint& p1
, const FloatPoint& p2) |
| 43 { | 42 { |
| (...skipping 28 matching lines...) Expand all Loading... |
| 72 while (vertexIndex2) { | 71 while (vertexIndex2) { |
| 73 unsigned vertexIndex3 = nextVertexIndex(vertexIndex2, nVertices, clockwi
se); | 72 unsigned vertexIndex3 = nextVertexIndex(vertexIndex2, nVertices, clockwi
se); |
| 74 if (!areCollinearPoints(polygon.vertexAt(vertexIndex1), polygon.vertexAt
(vertexIndex2), polygon.vertexAt(vertexIndex3))) | 73 if (!areCollinearPoints(polygon.vertexAt(vertexIndex1), polygon.vertexAt
(vertexIndex2), polygon.vertexAt(vertexIndex3))) |
| 75 break; | 74 break; |
| 76 vertexIndex2 = vertexIndex3; | 75 vertexIndex2 = vertexIndex3; |
| 77 } | 76 } |
| 78 | 77 |
| 79 return vertexIndex2; | 78 return vertexIndex2; |
| 80 } | 79 } |
| 81 | 80 |
| 82 FloatPolygon::FloatPolygon(std::unique_ptr<Vector<FloatPoint>> vertices, WindRul
e fillRule) | 81 FloatPolygon::FloatPolygon(PassOwnPtr<Vector<FloatPoint>> vertices, WindRule fil
lRule) |
| 83 : m_vertices(std::move(vertices)) | 82 : m_vertices(std::move(vertices)) |
| 84 , m_fillRule(fillRule) | 83 , m_fillRule(fillRule) |
| 85 { | 84 { |
| 86 unsigned nVertices = numberOfVertices(); | 85 unsigned nVertices = numberOfVertices(); |
| 87 m_edges.resize(nVertices); | 86 m_edges.resize(nVertices); |
| 88 m_empty = nVertices < 3; | 87 m_empty = nVertices < 3; |
| 89 | 88 |
| 90 if (nVertices) | 89 if (nVertices) |
| 91 m_boundingBox.setLocation(vertexAt(0)); | 90 m_boundingBox.setLocation(vertexAt(0)); |
| 92 | 91 |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 float uOtherLine = determinant(thisDelta, vertex1Delta) / denominator; | 217 float uOtherLine = determinant(thisDelta, vertex1Delta) / denominator; |
| 219 | 218 |
| 220 if (uThisLine < 0 || uOtherLine < 0 || uThisLine > 1 || uOtherLine > 1) | 219 if (uThisLine < 0 || uOtherLine < 0 || uThisLine > 1 || uOtherLine > 1) |
| 221 return false; | 220 return false; |
| 222 | 221 |
| 223 point = vertex1() + uThisLine * thisDelta; | 222 point = vertex1() + uThisLine * thisDelta; |
| 224 return true; | 223 return true; |
| 225 } | 224 } |
| 226 | 225 |
| 227 } // namespace blink | 226 } // namespace blink |
| OLD | NEW |