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

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

Issue 332543002: Rename Repaint to Paint Invalidation Part 4 (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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) 2007, 2008 Rob Buis <buis@kde.org> 2 * Copyright (C) 2007, 2008 Rob Buis <buis@kde.org>
3 * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org> 3 * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@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 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. 7 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 namespace WebCore { 44 namespace WebCore {
45 45
46 LayoutRect SVGRenderSupport::clippedOverflowRectForRepaint(const RenderObject* o bject, const RenderLayerModelObject* repaintContainer) 46 LayoutRect SVGRenderSupport::clippedOverflowRectForRepaint(const RenderObject* o bject, const RenderLayerModelObject* repaintContainer)
47 { 47 {
48 // Return early for any cases where we don't actually paint 48 // Return early for any cases where we don't actually paint
49 if (object->style()->visibility() != VISIBLE && !object->enclosingLayer()->h asVisibleContent()) 49 if (object->style()->visibility() != VISIBLE && !object->enclosingLayer()->h asVisibleContent())
50 return LayoutRect(); 50 return LayoutRect();
51 51
52 // Pass our local paint rect to computeRectForRepaint() which will 52 // Pass our local paint rect to computeRectForRepaint() which will
53 // map to parent coords and recurse up the parent chain. 53 // map to parent coords and recurse up the parent chain.
54 FloatRect repaintRect = object->repaintRectInLocalCoordinates(); 54 FloatRect repaintRect = object->paintInvalidationRectInLocalCoordinates();
55 object->computeFloatRectForRepaint(repaintContainer, repaintRect); 55 object->computeFloatRectForPaintInvalidation(repaintContainer, repaintRect);
56 return enclosingLayoutRect(repaintRect); 56 return enclosingLayoutRect(repaintRect);
57 } 57 }
58 58
59 void SVGRenderSupport::computeFloatRectForRepaint(const RenderObject* object, co nst RenderLayerModelObject* repaintContainer, FloatRect& repaintRect, bool fixed ) 59 void SVGRenderSupport::computeFloatRectForRepaint(const RenderObject* object, co nst RenderLayerModelObject* repaintContainer, FloatRect& repaintRect, bool fixed )
60 { 60 {
61 repaintRect.inflate(object->style()->outlineWidth()); 61 repaintRect.inflate(object->style()->outlineWidth());
62 62
63 // Translate to coords in our parent renderer, and then call computeFloatRec tForRepaint() on our parent. 63 // Translate to coords in our parent renderer, and then call computeFloatRec tForPaintInvalidation() on our parent.
64 repaintRect = object->localToParentTransform().mapRect(repaintRect); 64 repaintRect = object->localToParentTransform().mapRect(repaintRect);
65 object->parent()->computeFloatRectForRepaint(repaintContainer, repaintRect, fixed); 65 object->parent()->computeFloatRectForPaintInvalidation(repaintContainer, rep aintRect, fixed);
66 } 66 }
67 67
68 void SVGRenderSupport::mapLocalToContainer(const RenderObject* object, const Ren derLayerModelObject* repaintContainer, TransformState& transformState, bool* was Fixed) 68 void SVGRenderSupport::mapLocalToContainer(const RenderObject* object, const Ren derLayerModelObject* repaintContainer, TransformState& transformState, bool* was Fixed)
69 { 69 {
70 transformState.applyTransform(object->localToParentTransform()); 70 transformState.applyTransform(object->localToParentTransform());
71 71
72 RenderObject* parent = object->parent(); 72 RenderObject* parent = object->parent();
73 73
74 // At the SVG/HTML boundary (aka RenderSVGRoot), we apply the localToBorderB oxTransform 74 // At the SVG/HTML boundary (aka RenderSVGRoot), we apply the localToBorderB oxTransform
75 // to map an element from SVG viewport coordinates to CSS box coordinates. 75 // to map an element from SVG viewport coordinates to CSS box coordinates.
(...skipping 27 matching lines...) Expand all
103 bool SVGRenderSupport::parentTransformDidChange(RenderObject* object) 103 bool SVGRenderSupport::parentTransformDidChange(RenderObject* object)
104 { 104 {
105 // When a parent container is transformed in SVG, all children will be paint ed automatically 105 // When a parent container is transformed in SVG, all children will be paint ed automatically
106 // so we are able to skip redundant repaint checks. 106 // so we are able to skip redundant repaint checks.
107 RenderObject* parent = object->parent(); 107 RenderObject* parent = object->parent();
108 return !(parent && parent->isSVGContainer() && toRenderSVGContainer(parent)- >didTransformToRootUpdate()); 108 return !(parent && parent->isSVGContainer() && toRenderSVGContainer(parent)- >didTransformToRootUpdate());
109 } 109 }
110 110
111 bool SVGRenderSupport::checkForSVGRepaintDuringLayout(RenderObject* object) 111 bool SVGRenderSupport::checkForSVGRepaintDuringLayout(RenderObject* object)
112 { 112 {
113 if (!object->checkForRepaintDuringLayout()) 113 if (!object->checkForPaintInvalidationDuringLayout())
114 return false; 114 return false;
115 115
116 return parentTransformDidChange(object); 116 return parentTransformDidChange(object);
117 } 117 }
118 118
119 // Update a bounding box taking into account the validity of the other bounding box. 119 // Update a bounding box taking into account the validity of the other bounding box.
120 inline void SVGRenderSupport::updateObjectBoundingBox(FloatRect& objectBoundingB ox, bool& objectBoundingBoxValid, RenderObject* other, FloatRect otherBoundingBo x) 120 inline void SVGRenderSupport::updateObjectBoundingBox(FloatRect& objectBoundingB ox, bool& objectBoundingBoxValid, RenderObject* other, FloatRect otherBoundingBo x)
121 { 121 {
122 bool otherValid = other->isSVGContainer() ? toRenderSVGContainer(other)->isO bjectBoundingBoxValid() : true; 122 bool otherValid = other->isSVGContainer() ? toRenderSVGContainer(other)->isO bjectBoundingBoxValid() : true;
123 if (!otherValid) 123 if (!otherValid)
(...skipping 17 matching lines...) Expand all
141 // When computing the strokeBoundingBox, we use the repaintRects of the cont ainer's children so that the container's stroke includes 141 // When computing the strokeBoundingBox, we use the repaintRects of the cont ainer's children so that the container's stroke includes
142 // the resources applied to the children (such as clips and filters). This a llows filters applied to containers to correctly bound 142 // the resources applied to the children (such as clips and filters). This a llows filters applied to containers to correctly bound
143 // the children, and also improves inlining of SVG content, as the stroke bo und is used in that situation also. 143 // the children, and also improves inlining of SVG content, as the stroke bo und is used in that situation also.
144 for (RenderObject* current = container->slowFirstChild(); current; current = current->nextSibling()) { 144 for (RenderObject* current = container->slowFirstChild(); current; current = current->nextSibling()) {
145 if (current->isSVGHiddenContainer()) 145 if (current->isSVGHiddenContainer())
146 continue; 146 continue;
147 147
148 const AffineTransform& transform = current->localToParentTransform(); 148 const AffineTransform& transform = current->localToParentTransform();
149 updateObjectBoundingBox(objectBoundingBox, objectBoundingBoxValid, curre nt, 149 updateObjectBoundingBox(objectBoundingBox, objectBoundingBoxValid, curre nt,
150 transform.mapRect(current->objectBoundingBox())); 150 transform.mapRect(current->objectBoundingBox()));
151 strokeBoundingBox.unite(transform.mapRect(current->repaintRectInLocalCoo rdinates())); 151 strokeBoundingBox.unite(transform.mapRect(current->paintInvalidationRect InLocalCoordinates()));
152 } 152 }
153 153
154 repaintBoundingBox = strokeBoundingBox; 154 repaintBoundingBox = strokeBoundingBox;
155 } 155 }
156 156
157 bool SVGRenderSupport::paintInfoIntersectsRepaintRect(const FloatRect& localRepa intRect, const AffineTransform& localTransform, const PaintInfo& paintInfo) 157 bool SVGRenderSupport::paintInfoIntersectsRepaintRect(const FloatRect& localRepa intRect, const AffineTransform& localTransform, const PaintInfo& paintInfo)
158 { 158 {
159 return localTransform.mapRect(localRepaintRect).intersects(paintInfo.rect); 159 return localTransform.mapRect(localRepaintRect).intersects(paintInfo.rect);
160 } 160 }
161 161
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 } 398 }
399 399
400 bool SVGRenderSupport::isRenderableTextNode(const RenderObject* object) 400 bool SVGRenderSupport::isRenderableTextNode(const RenderObject* object)
401 { 401 {
402 ASSERT(object->isText()); 402 ASSERT(object->isText());
403 // <br> is marked as text, but is not handled by the SVG rendering code-path . 403 // <br> is marked as text, but is not handled by the SVG rendering code-path .
404 return object->isSVGInlineText() && !toRenderSVGInlineText(object)->hasEmpty Text(); 404 return object->isSVGInlineText() && !toRenderSVGInlineText(object)->hasEmpty Text();
405 } 405 }
406 406
407 } 407 }
OLDNEW
« no previous file with comments | « Source/core/rendering/svg/RenderSVGText.cpp ('k') | Source/core/rendering/svg/SVGRenderingContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698