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 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 // for the <rect> / <ellipse> / <circle> case except that we ignore whether | 102 // for the <rect> / <ellipse> / <circle> case except that we ignore whether |
103 // the stroke is none. | 103 // the stroke is none. |
104 | 104 |
105 FloatRect box = m_fillBoundingBox; | 105 FloatRect box = m_fillBoundingBox; |
106 const float strokeWidth = this->strokeWidth(); | 106 const float strokeWidth = this->strokeWidth(); |
107 box.inflate(strokeWidth / 2); | 107 box.inflate(strokeWidth / 2); |
108 return box; | 108 return box; |
109 } | 109 } |
110 | 110 |
111 bool LayoutSVGShape::shapeDependentStrokeContains(const FloatPoint& point) { | 111 bool LayoutSVGShape::shapeDependentStrokeContains(const FloatPoint& point) { |
112 ASSERT(m_path); | 112 DCHECK(m_path); |
113 StrokeData strokeData; | 113 StrokeData strokeData; |
114 SVGLayoutSupport::applyStrokeStyleToStrokeData(strokeData, styleRef(), *this, | 114 SVGLayoutSupport::applyStrokeStyleToStrokeData(strokeData, styleRef(), *this, |
115 dashScaleFactor()); | 115 dashScaleFactor()); |
116 | 116 |
117 if (hasNonScalingStroke()) { | 117 if (hasNonScalingStroke()) { |
118 AffineTransform nonScalingTransform = nonScalingStrokeTransform(); | 118 AffineTransform nonScalingTransform = nonScalingStrokeTransform(); |
119 Path* usePath = nonScalingStrokePath(m_path.get(), nonScalingTransform); | 119 Path* usePath = nonScalingStrokePath(m_path.get(), nonScalingTransform); |
120 | 120 |
121 return usePath->strokeContains(nonScalingTransform.mapPoint(point), | 121 return usePath->strokeContains(nonScalingTransform.mapPoint(point), |
122 strokeData); | 122 strokeData); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 if (m_needsTransformUpdate) { | 199 if (m_needsTransformUpdate) { |
200 updateLocalTransform(); | 200 updateLocalTransform(); |
201 m_needsTransformUpdate = false; | 201 m_needsTransformUpdate = false; |
202 updateParentBoundaries = true; | 202 updateParentBoundaries = true; |
203 } | 203 } |
204 | 204 |
205 // If our bounds changed, notify the parents. | 205 // If our bounds changed, notify the parents. |
206 if (updateParentBoundaries) | 206 if (updateParentBoundaries) |
207 LayoutSVGModelObject::setNeedsBoundariesUpdate(); | 207 LayoutSVGModelObject::setNeedsBoundariesUpdate(); |
208 | 208 |
209 ASSERT(!m_needsShapeUpdate); | 209 DCHECK(!m_needsShapeUpdate); |
210 ASSERT(!m_needsBoundariesUpdate); | 210 DCHECK(!m_needsBoundariesUpdate); |
211 ASSERT(!m_needsTransformUpdate); | 211 DCHECK(!m_needsTransformUpdate); |
212 clearNeedsLayout(); | 212 clearNeedsLayout(); |
213 } | 213 } |
214 | 214 |
215 Path* LayoutSVGShape::nonScalingStrokePath( | 215 Path* LayoutSVGShape::nonScalingStrokePath( |
216 const Path* path, | 216 const Path* path, |
217 const AffineTransform& strokeTransform) const { | 217 const AffineTransform& strokeTransform) const { |
218 LayoutSVGShapeRareData& rareData = ensureRareData(); | 218 LayoutSVGShapeRareData& rareData = ensureRareData(); |
219 if (!rareData.m_cachedNonScalingStrokePath.isEmpty() && | 219 if (!rareData.m_cachedNonScalingStrokePath.isEmpty() && |
220 strokeTransform == rareData.m_cachedNonScalingStrokeTransform) | 220 strokeTransform == rareData.m_cachedNonScalingStrokeTransform) |
221 return &rareData.m_cachedNonScalingStrokePath; | 221 return &rareData.m_cachedNonScalingStrokePath; |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
294 return true; | 294 return true; |
295 } | 295 } |
296 return false; | 296 return false; |
297 } | 297 } |
298 | 298 |
299 FloatRect LayoutSVGShape::calculateObjectBoundingBox() const { | 299 FloatRect LayoutSVGShape::calculateObjectBoundingBox() const { |
300 return path().boundingRect(); | 300 return path().boundingRect(); |
301 } | 301 } |
302 | 302 |
303 FloatRect LayoutSVGShape::calculateStrokeBoundingBox() const { | 303 FloatRect LayoutSVGShape::calculateStrokeBoundingBox() const { |
304 ASSERT(m_path); | 304 DCHECK(m_path); |
305 FloatRect strokeBoundingBox = m_fillBoundingBox; | 305 FloatRect strokeBoundingBox = m_fillBoundingBox; |
306 | 306 |
307 if (style()->svgStyle().hasStroke()) { | 307 if (style()->svgStyle().hasStroke()) { |
308 StrokeData strokeData; | 308 StrokeData strokeData; |
309 SVGLayoutSupport::applyStrokeStyleToStrokeData(strokeData, styleRef(), | 309 SVGLayoutSupport::applyStrokeStyleToStrokeData(strokeData, styleRef(), |
310 *this, dashScaleFactor()); | 310 *this, dashScaleFactor()); |
311 if (hasNonScalingStroke()) { | 311 if (hasNonScalingStroke()) { |
312 AffineTransform nonScalingTransform = nonScalingStrokeTransform(); | 312 AffineTransform nonScalingTransform = nonScalingStrokeTransform(); |
313 if (nonScalingTransform.isInvertible()) { | 313 if (nonScalingTransform.isInvertible()) { |
314 Path* usePath = nonScalingStrokePath(m_path.get(), nonScalingTransform); | 314 Path* usePath = nonScalingStrokePath(m_path.get(), nonScalingTransform); |
(...skipping 15 matching lines...) Expand all Loading... |
330 return lengthContext.valueForLength(style()->svgStyle().strokeWidth()); | 330 return lengthContext.valueForLength(style()->svgStyle().strokeWidth()); |
331 } | 331 } |
332 | 332 |
333 LayoutSVGShapeRareData& LayoutSVGShape::ensureRareData() const { | 333 LayoutSVGShapeRareData& LayoutSVGShape::ensureRareData() const { |
334 if (!m_rareData) | 334 if (!m_rareData) |
335 m_rareData = WTF::makeUnique<LayoutSVGShapeRareData>(); | 335 m_rareData = WTF::makeUnique<LayoutSVGShapeRareData>(); |
336 return *m_rareData.get(); | 336 return *m_rareData.get(); |
337 } | 337 } |
338 | 338 |
339 } // namespace blink | 339 } // namespace blink |
OLD | NEW |