OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. All rights reserved. | 2 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. All rights reserved. |
3 * Copyright (C) 2013 Google Inc. All rights reserved. | 3 * Copyright (C) 2013 Google Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
11 * notice, this list of conditions and the following disclaimer in the | 11 * notice, this list of conditions and the following disclaimer in the |
12 * documentation and/or other materials provided with the distribution. | 12 * documentation and/or other materials provided with the distribution. |
13 * | 13 * |
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY | 14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR | 17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
25 */ | 25 */ |
26 | 26 |
27 #ifndef IntPoint_h | 27 #ifndef IntPoint_h |
28 #define IntPoint_h | 28 #define IntPoint_h |
29 | 29 |
| 30 #include "base/numerics/saturated_arithmetic.h" |
30 #include "platform/geometry/IntSize.h" | 31 #include "platform/geometry/IntSize.h" |
31 #include "wtf/Allocator.h" | 32 #include "wtf/Allocator.h" |
32 #include "wtf/Forward.h" | 33 #include "wtf/Forward.h" |
33 #include "wtf/MathExtras.h" | 34 #include "wtf/MathExtras.h" |
34 #include "wtf/SaturatedArithmetic.h" | |
35 #include "wtf/VectorTraits.h" | 35 #include "wtf/VectorTraits.h" |
36 | 36 |
37 #if OS(MACOSX) | 37 #if OS(MACOSX) |
38 typedef struct CGPoint CGPoint; | 38 typedef struct CGPoint CGPoint; |
39 | 39 |
40 #ifdef __OBJC__ | 40 #ifdef __OBJC__ |
41 #import <Foundation/Foundation.h> | 41 #import <Foundation/Foundation.h> |
42 #endif | 42 #endif |
43 #endif | 43 #endif |
44 | 44 |
(...skipping 16 matching lines...) Expand all Loading... |
61 void setX(int x) { m_x = x; } | 61 void setX(int x) { m_x = x; } |
62 void setY(int y) { m_y = y; } | 62 void setY(int y) { m_y = y; } |
63 | 63 |
64 void move(const IntSize& s) { move(s.width(), s.height()); } | 64 void move(const IntSize& s) { move(s.width(), s.height()); } |
65 void moveBy(const IntPoint& offset) { move(offset.x(), offset.y()); } | 65 void moveBy(const IntPoint& offset) { move(offset.x(), offset.y()); } |
66 void move(int dx, int dy) { | 66 void move(int dx, int dy) { |
67 m_x += dx; | 67 m_x += dx; |
68 m_y += dy; | 68 m_y += dy; |
69 } | 69 } |
70 void saturatedMove(int dx, int dy) { | 70 void saturatedMove(int dx, int dy) { |
71 m_x = saturatedAddition(m_x, dx); | 71 m_x = base::SaturatedAddition(m_x, dx); |
72 m_y = saturatedAddition(m_y, dy); | 72 m_y = base::SaturatedAddition(m_y, dy); |
73 } | 73 } |
74 | 74 |
75 void scale(float sx, float sy) { | 75 void scale(float sx, float sy) { |
76 m_x = lroundf(static_cast<float>(m_x * sx)); | 76 m_x = lroundf(static_cast<float>(m_x * sx)); |
77 m_y = lroundf(static_cast<float>(m_y * sy)); | 77 m_y = lroundf(static_cast<float>(m_y * sy)); |
78 } | 78 } |
79 | 79 |
80 IntPoint expandedTo(const IntPoint& other) const { | 80 IntPoint expandedTo(const IntPoint& other) const { |
81 return IntPoint(m_x > other.m_x ? m_x : other.m_x, | 81 return IntPoint(m_x > other.m_x ? m_x : other.m_x, |
82 m_y > other.m_y ? m_y : other.m_y); | 82 m_y > other.m_y ? m_y : other.m_y); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 | 159 |
160 // Redeclared here to avoid ODR issues. | 160 // Redeclared here to avoid ODR issues. |
161 // See platform/testing/GeometryPrinters.h. | 161 // See platform/testing/GeometryPrinters.h. |
162 void PrintTo(const IntPoint&, std::ostream*); | 162 void PrintTo(const IntPoint&, std::ostream*); |
163 | 163 |
164 } // namespace blink | 164 } // namespace blink |
165 | 165 |
166 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(blink::IntPoint); | 166 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(blink::IntPoint); |
167 | 167 |
168 #endif // IntPoint_h | 168 #endif // IntPoint_h |
OLD | NEW |