OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> |
3 * Copyright (C) 2004, 2005, 2008 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2008 Rob Buis <buis@kde.org> |
4 * Copyright (C) 2005, 2007 Eric Seidel <eric@webkit.org> | 4 * Copyright (C) 2005, 2007 Eric Seidel <eric@webkit.org> |
5 * Copyright (C) 2009 Google, Inc. | 5 * Copyright (C) 2009 Google, Inc. |
6 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> | 6 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> |
7 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 7 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
8 * Copyright (C) 2009 Jeff Schiller <codedread@gmail.com> | 8 * Copyright (C) 2009 Jeff Schiller <codedread@gmail.com> |
9 * Copyright (C) 2011 Renata Hodovan <reni@webkit.org> | 9 * Copyright (C) 2011 Renata Hodovan <reni@webkit.org> |
10 * Copyright (C) 2011 University of Szeged | 10 * Copyright (C) 2011 University of Szeged |
(...skipping 10 matching lines...) Expand all Loading... |
21 * | 21 * |
22 * You should have received a copy of the GNU Library General Public License | 22 * You should have received a copy of the GNU Library General Public License |
23 * along with this library; see the file COPYING.LIB. If not, write to | 23 * along with this library; see the file COPYING.LIB. If not, write to |
24 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 24 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
25 * Boston, MA 02110-1301, USA. | 25 * Boston, MA 02110-1301, USA. |
26 */ | 26 */ |
27 | 27 |
28 #include "config.h" | 28 #include "config.h" |
29 #include "core/layout/svg/LayoutSVGShape.h" | 29 #include "core/layout/svg/LayoutSVGShape.h" |
30 | 30 |
31 #include "core/layout/HitTestRequest.h" | 31 #include "core/layout/HitTestResult.h" |
32 #include "core/layout/LayoutAnalyzer.h" | 32 #include "core/layout/LayoutAnalyzer.h" |
33 #include "core/layout/PointerEventsHitRules.h" | 33 #include "core/layout/PointerEventsHitRules.h" |
34 #include "core/layout/svg/SVGLayoutSupport.h" | 34 #include "core/layout/svg/SVGLayoutSupport.h" |
35 #include "core/layout/svg/SVGPathData.h" | 35 #include "core/layout/svg/SVGPathData.h" |
36 #include "core/layout/svg/SVGResources.h" | 36 #include "core/layout/svg/SVGResources.h" |
37 #include "core/layout/svg/SVGResourcesCache.h" | 37 #include "core/layout/svg/SVGResourcesCache.h" |
38 #include "core/paint/SVGShapePainter.h" | 38 #include "core/paint/SVGShapePainter.h" |
39 #include "core/svg/SVGGraphicsElement.h" | 39 #include "core/svg/SVGGraphicsElement.h" |
40 #include "core/svg/SVGLengthContext.h" | 40 #include "core/svg/SVGLengthContext.h" |
41 #include "platform/geometry/FloatPoint.h" | 41 #include "platform/geometry/FloatPoint.h" |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 | 181 |
182 // This method is called from inside paintOutline() since we call paintOutline() | 182 // This method is called from inside paintOutline() since we call paintOutline() |
183 // while transformed to our coord system, return local coords | 183 // while transformed to our coord system, return local coords |
184 void LayoutSVGShape::addFocusRingRects(Vector<LayoutRect>& rects, const LayoutPo
int&) const | 184 void LayoutSVGShape::addFocusRingRects(Vector<LayoutRect>& rects, const LayoutPo
int&) const |
185 { | 185 { |
186 LayoutRect rect = LayoutRect(paintInvalidationRectInLocalCoordinates()); | 186 LayoutRect rect = LayoutRect(paintInvalidationRectInLocalCoordinates()); |
187 if (!rect.isEmpty()) | 187 if (!rect.isEmpty()) |
188 rects.append(rect); | 188 rects.append(rect); |
189 } | 189 } |
190 | 190 |
191 bool LayoutSVGShape::nodeAtFloatPoint(const HitTestRequest& request, HitTestResu
lt& result, const FloatPoint& pointInParent, HitTestAction hitTestAction) | 191 bool LayoutSVGShape::nodeAtFloatPoint(HitTestResult& result, const FloatPoint& p
ointInParent, HitTestAction hitTestAction) |
192 { | 192 { |
193 // We only draw in the foreground phase, so we only hit-test then. | 193 // We only draw in the foreground phase, so we only hit-test then. |
194 if (hitTestAction != HitTestForeground) | 194 if (hitTestAction != HitTestForeground) |
195 return false; | 195 return false; |
196 | 196 |
197 FloatPoint localPoint; | 197 FloatPoint localPoint; |
198 if (!SVGLayoutSupport::transformToUserSpaceAndCheckClipping(this, localToPar
entTransform(), pointInParent, localPoint)) | 198 if (!SVGLayoutSupport::transformToUserSpaceAndCheckClipping(this, localToPar
entTransform(), pointInParent, localPoint)) |
199 return false; | 199 return false; |
200 | 200 |
201 PointerEventsHitRules hitRules(PointerEventsHitRules::SVG_GEOMETRY_HITTESTIN
G, request, style()->pointerEvents()); | 201 PointerEventsHitRules hitRules(PointerEventsHitRules::SVG_GEOMETRY_HITTESTIN
G, result.hitTestRequest(), style()->pointerEvents()); |
202 if (nodeAtFloatPointInternal(request, localPoint, hitRules)) { | 202 if (nodeAtFloatPointInternal(result.hitTestRequest(), localPoint, hitRules))
{ |
203 updateHitTestResult(result, roundedLayoutPoint(localPoint)); | 203 updateHitTestResult(result, roundedLayoutPoint(localPoint)); |
204 return true; | 204 return true; |
205 } | 205 } |
206 | 206 |
207 return false; | 207 return false; |
208 } | 208 } |
209 | 209 |
210 bool LayoutSVGShape::nodeAtFloatPointInternal(const HitTestRequest& request, con
st FloatPoint& localPoint, PointerEventsHitRules hitRules) | 210 bool LayoutSVGShape::nodeAtFloatPointInternal(const HitTestRequest& request, con
st FloatPoint& localPoint, PointerEventsHitRules hitRules) |
211 { | 211 { |
212 bool isVisible = (style()->visibility() == VISIBLE); | 212 bool isVisible = (style()->visibility() == VISIBLE); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 SVGLayoutSupport::intersectPaintInvalidationRectWithResources(this, m_paintI
nvalidationBoundingBox); | 260 SVGLayoutSupport::intersectPaintInvalidationRectWithResources(this, m_paintI
nvalidationBoundingBox); |
261 } | 261 } |
262 | 262 |
263 float LayoutSVGShape::strokeWidth() const | 263 float LayoutSVGShape::strokeWidth() const |
264 { | 264 { |
265 SVGLengthContext lengthContext(element()); | 265 SVGLengthContext lengthContext(element()); |
266 return lengthContext.valueForLength(style()->svgStyle().strokeWidth()); | 266 return lengthContext.valueForLength(style()->svgStyle().strokeWidth()); |
267 } | 267 } |
268 | 268 |
269 } | 269 } |
OLD | NEW |