OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2008, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2008, 2011 Apple Inc. All rights reserved. |
3 * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies) |
4 * | 4 * |
5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
9 * | 9 * |
10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
(...skipping 13 matching lines...) Expand all Loading... |
24 | 24 |
25 #include "HTMLNames.h" | 25 #include "HTMLNames.h" |
26 #include "SVGNames.h" | 26 #include "SVGNames.h" |
27 #include "XLinkNames.h" | 27 #include "XLinkNames.h" |
28 | 28 |
29 namespace WebCore { | 29 namespace WebCore { |
30 | 30 |
31 using namespace HTMLNames; | 31 using namespace HTMLNames; |
32 | 32 |
33 HitTestLocation::HitTestLocation() | 33 HitTestLocation::HitTestLocation() |
34 : m_region(0) | 34 : m_isRectBased(false) |
35 , m_isRectBased(false) | |
36 , m_isRectilinear(true) | 35 , m_isRectilinear(true) |
37 { | 36 { |
38 } | 37 } |
39 | 38 |
40 HitTestLocation::HitTestLocation(const LayoutPoint& point) | 39 HitTestLocation::HitTestLocation(const LayoutPoint& point) |
41 : m_point(point) | 40 : m_point(point) |
42 , m_boundingBox(rectForPoint(point, 0, 0, 0, 0)) | 41 , m_boundingBox(rectForPoint(point, 0, 0, 0, 0)) |
43 , m_transformedPoint(point) | 42 , m_transformedPoint(point) |
44 , m_transformedRect(m_boundingBox) | 43 , m_transformedRect(m_boundingBox) |
45 , m_region(0) | |
46 , m_isRectBased(false) | 44 , m_isRectBased(false) |
47 , m_isRectilinear(true) | 45 , m_isRectilinear(true) |
48 { | 46 { |
49 } | 47 } |
50 | 48 |
51 HitTestLocation::HitTestLocation(const FloatPoint& point) | 49 HitTestLocation::HitTestLocation(const FloatPoint& point) |
52 : m_point(flooredLayoutPoint(point)) | 50 : m_point(flooredLayoutPoint(point)) |
53 , m_boundingBox(rectForPoint(m_point, 0, 0, 0, 0)) | 51 , m_boundingBox(rectForPoint(m_point, 0, 0, 0, 0)) |
54 , m_transformedPoint(point) | 52 , m_transformedPoint(point) |
55 , m_transformedRect(m_boundingBox) | 53 , m_transformedRect(m_boundingBox) |
56 , m_region(0) | |
57 , m_isRectBased(false) | 54 , m_isRectBased(false) |
58 , m_isRectilinear(true) | 55 , m_isRectilinear(true) |
59 { | 56 { |
60 } | 57 } |
61 | 58 |
62 HitTestLocation::HitTestLocation(const FloatPoint& point, const FloatQuad& quad) | 59 HitTestLocation::HitTestLocation(const FloatPoint& point, const FloatQuad& quad) |
63 : m_transformedPoint(point) | 60 : m_transformedPoint(point) |
64 , m_transformedRect(quad) | 61 , m_transformedRect(quad) |
65 , m_region(0) | |
66 , m_isRectBased(true) | 62 , m_isRectBased(true) |
67 { | 63 { |
68 m_point = flooredLayoutPoint(point); | 64 m_point = flooredLayoutPoint(point); |
69 m_boundingBox = enclosingIntRect(quad.boundingBox()); | 65 m_boundingBox = enclosingIntRect(quad.boundingBox()); |
70 m_isRectilinear = quad.isRectilinear(); | 66 m_isRectilinear = quad.isRectilinear(); |
71 } | 67 } |
72 | 68 |
73 HitTestLocation::HitTestLocation(const LayoutPoint& centerPoint, unsigned topPad
ding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding) | 69 HitTestLocation::HitTestLocation(const LayoutPoint& centerPoint, unsigned topPad
ding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding) |
74 : m_point(centerPoint) | 70 : m_point(centerPoint) |
75 , m_boundingBox(rectForPoint(centerPoint, topPadding, rightPadding, bottomPa
dding, leftPadding)) | 71 , m_boundingBox(rectForPoint(centerPoint, topPadding, rightPadding, bottomPa
dding, leftPadding)) |
76 , m_transformedPoint(centerPoint) | 72 , m_transformedPoint(centerPoint) |
77 , m_region(0) | |
78 , m_isRectBased(topPadding || rightPadding || bottomPadding || leftPadding) | 73 , m_isRectBased(topPadding || rightPadding || bottomPadding || leftPadding) |
79 , m_isRectilinear(true) | 74 , m_isRectilinear(true) |
80 { | 75 { |
81 m_transformedRect = FloatQuad(m_boundingBox); | 76 m_transformedRect = FloatQuad(m_boundingBox); |
82 } | 77 } |
83 | 78 |
84 HitTestLocation::HitTestLocation(const HitTestLocation& other, const LayoutSize&
offset, RenderRegion* region) | 79 HitTestLocation::HitTestLocation(const HitTestLocation& other, const LayoutSize&
offset) |
85 : m_point(other.m_point) | 80 : m_point(other.m_point) |
86 , m_boundingBox(other.m_boundingBox) | 81 , m_boundingBox(other.m_boundingBox) |
87 , m_transformedPoint(other.m_transformedPoint) | 82 , m_transformedPoint(other.m_transformedPoint) |
88 , m_transformedRect(other.m_transformedRect) | 83 , m_transformedRect(other.m_transformedRect) |
89 , m_region(region ? region : other.m_region) | |
90 , m_isRectBased(other.m_isRectBased) | 84 , m_isRectBased(other.m_isRectBased) |
91 , m_isRectilinear(other.m_isRectilinear) | 85 , m_isRectilinear(other.m_isRectilinear) |
92 { | 86 { |
93 move(offset); | 87 move(offset); |
94 } | 88 } |
95 | 89 |
96 HitTestLocation::HitTestLocation(const HitTestLocation& other) | 90 HitTestLocation::HitTestLocation(const HitTestLocation& other) |
97 : m_point(other.m_point) | 91 : m_point(other.m_point) |
98 , m_boundingBox(other.m_boundingBox) | 92 , m_boundingBox(other.m_boundingBox) |
99 , m_transformedPoint(other.m_transformedPoint) | 93 , m_transformedPoint(other.m_transformedPoint) |
100 , m_transformedRect(other.m_transformedRect) | 94 , m_transformedRect(other.m_transformedRect) |
101 , m_region(other.m_region) | |
102 , m_isRectBased(other.m_isRectBased) | 95 , m_isRectBased(other.m_isRectBased) |
103 , m_isRectilinear(other.m_isRectilinear) | 96 , m_isRectilinear(other.m_isRectilinear) |
104 { | 97 { |
105 } | 98 } |
106 | 99 |
107 HitTestLocation::~HitTestLocation() | 100 HitTestLocation::~HitTestLocation() |
108 { | 101 { |
109 } | 102 } |
110 | 103 |
111 HitTestLocation& HitTestLocation::operator=(const HitTestLocation& other) | 104 HitTestLocation& HitTestLocation::operator=(const HitTestLocation& other) |
112 { | 105 { |
113 m_point = other.m_point; | 106 m_point = other.m_point; |
114 m_boundingBox = other.m_boundingBox; | 107 m_boundingBox = other.m_boundingBox; |
115 m_transformedPoint = other.m_transformedPoint; | 108 m_transformedPoint = other.m_transformedPoint; |
116 m_transformedRect = other.m_transformedRect; | 109 m_transformedRect = other.m_transformedRect; |
117 m_region = other.m_region; | |
118 m_isRectBased = other.m_isRectBased; | 110 m_isRectBased = other.m_isRectBased; |
119 m_isRectilinear = other.m_isRectilinear; | 111 m_isRectilinear = other.m_isRectilinear; |
120 | 112 |
121 return *this; | 113 return *this; |
122 } | 114 } |
123 | 115 |
124 void HitTestLocation::move(const LayoutSize& offset) | 116 void HitTestLocation::move(const LayoutSize& offset) |
125 { | 117 { |
126 m_point.move(offset); | 118 m_point.move(offset); |
127 m_transformedPoint.move(offset); | 119 m_transformedPoint.move(offset); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 | 165 |
174 IntSize actualPadding(leftPadding + rightPadding, topPadding + bottomPadding
); | 166 IntSize actualPadding(leftPadding + rightPadding, topPadding + bottomPadding
); |
175 // As IntRect is left inclusive and right exclusive (seeing IntRect::contain
s(x, y)), adding "1". | 167 // As IntRect is left inclusive and right exclusive (seeing IntRect::contain
s(x, y)), adding "1". |
176 // FIXME: Remove this once non-rect based hit-detection stops using IntRect:
intersects. | 168 // FIXME: Remove this once non-rect based hit-detection stops using IntRect:
intersects. |
177 actualPadding += IntSize(1, 1); | 169 actualPadding += IntSize(1, 1); |
178 | 170 |
179 return IntRect(actualPoint, actualPadding); | 171 return IntRect(actualPoint, actualPadding); |
180 } | 172 } |
181 | 173 |
182 } // namespace WebCore | 174 } // namespace WebCore |
OLD | NEW |