Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(361)

Side by Side Diff: Source/core/rendering/svg/RenderSVGContainer.cpp

Issue 492053002: Use LayoutRect during addFocusRingRects to avoid loss of precision (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: NeedsRebaseline (pixel tests about focus rings. 1-pixel width diff at the edge because of different rounding) Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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, 2007, 2008 Rob Buis <buis@kde.org> 3 * Copyright (C) 2004, 2005, 2007, 2008 Rob Buis <buis@kde.org>
4 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> 4 * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
5 * Copyright (C) 2009 Google, Inc. All rights reserved. 5 * Copyright (C) 2009 Google, Inc. All rights reserved.
6 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> 6 * Copyright (C) 2009 Dirk Schulze <krit@webkit.org>
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 // outline rect into parent coords before drawing. 147 // outline rect into parent coords before drawing.
148 // FIXME: This means our focus ring won't share our rotation like it should. 148 // FIXME: This means our focus ring won't share our rotation like it should.
149 // We should instead disable our clip during PaintPhaseOutline 149 // We should instead disable our clip during PaintPhaseOutline
150 if (paintInfo.phase == PaintPhaseForeground && style()->outlineWidth() && st yle()->visibility() == VISIBLE) { 150 if (paintInfo.phase == PaintPhaseForeground && style()->outlineWidth() && st yle()->visibility() == VISIBLE) {
151 IntRect paintRectInParent = enclosingIntRect(localToParentTransform().ma pRect(paintInvalidationRect)); 151 IntRect paintRectInParent = enclosingIntRect(localToParentTransform().ma pRect(paintInvalidationRect));
152 paintOutline(paintInfo, paintRectInParent); 152 paintOutline(paintInfo, paintRectInParent);
153 } 153 }
154 } 154 }
155 155
156 // addFocusRingRects is called from paintOutline and needs to be in the same coo rdinates as the paintOuline call 156 // addFocusRingRects is called from paintOutline and needs to be in the same coo rdinates as the paintOuline call
157 void RenderSVGContainer::addFocusRingRects(Vector<IntRect>& rects, const LayoutP oint&, const RenderLayerModelObject*) const 157 void RenderSVGContainer::addFocusRingRects(Vector<LayoutRect>& rects, const Layo utPoint&, const RenderLayerModelObject*) const
158 { 158 {
159 IntRect paintRectInParent = enclosingIntRect(localToParentTransform().mapRec t(paintInvalidationRectInLocalCoordinates())); 159 LayoutRect paintRectInParent = LayoutRect(localToParentTransform().mapRect(p aintInvalidationRectInLocalCoordinates()));
160 if (!paintRectInParent.isEmpty()) 160 if (!paintRectInParent.isEmpty())
161 rects.append(paintRectInParent); 161 rects.append(paintRectInParent);
162 } 162 }
163 163
164 void RenderSVGContainer::updateCachedBoundaries() 164 void RenderSVGContainer::updateCachedBoundaries()
165 { 165 {
166 SVGRenderSupport::computeContainerBoundingBoxes(this, m_objectBoundingBox, m _objectBoundingBoxValid, m_strokeBoundingBox, m_paintInvalidationBoundingBox); 166 SVGRenderSupport::computeContainerBoundingBoxes(this, m_objectBoundingBox, m _objectBoundingBoxValid, m_strokeBoundingBox, m_paintInvalidationBoundingBox);
167 SVGRenderSupport::intersectPaintInvalidationRectWithResources(this, m_paintI nvalidationBoundingBox); 167 SVGRenderSupport::intersectPaintInvalidationRectWithResources(this, m_paintI nvalidationBoundingBox);
168 } 168 }
169 169
(...skipping 20 matching lines...) Expand all
190 if (objectBoundingBox().contains(localPoint)) { 190 if (objectBoundingBox().contains(localPoint)) {
191 updateHitTestResult(result, roundedLayoutPoint(localPoint)); 191 updateHitTestResult(result, roundedLayoutPoint(localPoint));
192 return true; 192 return true;
193 } 193 }
194 } 194 }
195 // 16.4: "If there are no graphics elements whose relevant graphics content is under the pointer (i.e., there is no target element), the event is not dispat ched." 195 // 16.4: "If there are no graphics elements whose relevant graphics content is under the pointer (i.e., there is no target element), the event is not dispat ched."
196 return false; 196 return false;
197 } 197 }
198 198
199 } 199 }
OLDNEW
« no previous file with comments | « Source/core/rendering/svg/RenderSVGContainer.h ('k') | Source/core/rendering/svg/RenderSVGImage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698