OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
reserved. |
3 * | 3 * |
4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
5 * | 5 * |
6 * Other contributors: | 6 * Other contributors: |
7 * Robert O'Callahan <roc+@cs.cmu.edu> | 7 * Robert O'Callahan <roc+@cs.cmu.edu> |
8 * David Baron <dbaron@fas.harvard.edu> | 8 * David Baron <dbaron@fas.harvard.edu> |
9 * Christian Biesinger <cbiesinger@web.de> | 9 * Christian Biesinger <cbiesinger@web.de> |
10 * Randall Jesup <rjesup@wgate.com> | 10 * Randall Jesup <rjesup@wgate.com> |
(...skipping 3258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3269 // FIXME: Could eliminate the isRoot() check if we fix background painting s
o that the RenderView | 3269 // FIXME: Could eliminate the isRoot() check if we fix background painting s
o that the RenderView |
3270 // paints the root's background. | 3270 // paints the root's background. |
3271 if (isRootLayer() || renderer()->isRoot()) | 3271 if (isRootLayer() || renderer()->isRoot()) |
3272 return true; | 3272 return true; |
3273 | 3273 |
3274 // If we aren't an inline flow, and our layer bounds do intersect the damage
rect, then we | 3274 // If we aren't an inline flow, and our layer bounds do intersect the damage
rect, then we |
3275 // can go ahead and return true. | 3275 // can go ahead and return true. |
3276 RenderView* view = renderer()->view(); | 3276 RenderView* view = renderer()->view(); |
3277 ASSERT(view); | 3277 ASSERT(view); |
3278 if (view && !renderer()->isRenderInline()) { | 3278 if (view && !renderer()->isRenderInline()) { |
3279 LayoutRect b = layerBounds; | 3279 if (layerBounds.intersects(damageRect)) |
3280 b.inflate(view->maximalOutlineSize()); | |
3281 if (b.intersects(damageRect)) | |
3282 return true; | 3280 return true; |
3283 } | 3281 } |
3284 | 3282 |
3285 // Otherwise we need to compute the bounding box of this single layer and se
e if it intersects | 3283 // Otherwise we need to compute the bounding box of this single layer and se
e if it intersects |
3286 // the damage rect. | 3284 // the damage rect. |
3287 return boundingBox(rootLayer, 0, offsetFromRoot).intersects(damageRect); | 3285 return boundingBox(rootLayer, 0, offsetFromRoot).intersects(damageRect); |
3288 } | 3286 } |
3289 | 3287 |
3290 LayoutRect RenderLayer::localBoundingBox(CalculateLayerBoundsFlags flags) const | 3288 LayoutRect RenderLayer::localBoundingBox(CalculateLayerBoundsFlags flags) const |
3291 { | 3289 { |
(...skipping 28 matching lines...) Expand all Loading... |
3320 box->flipForWritingMode(result); // The mask clip rect is in physica
l coordinates, so we have to flip, since localBoundingBox is not. | 3318 box->flipForWritingMode(result); // The mask clip rect is in physica
l coordinates, so we have to flip, since localBoundingBox is not. |
3321 } else { | 3319 } else { |
3322 LayoutRect bbox = box->borderBoxRect(); | 3320 LayoutRect bbox = box->borderBoxRect(); |
3323 result = bbox; | 3321 result = bbox; |
3324 LayoutRect overflowRect = box->visualOverflowRect(); | 3322 LayoutRect overflowRect = box->visualOverflowRect(); |
3325 if (bbox != overflowRect) | 3323 if (bbox != overflowRect) |
3326 result.unite(overflowRect); | 3324 result.unite(overflowRect); |
3327 } | 3325 } |
3328 } | 3326 } |
3329 | 3327 |
3330 RenderView* view = renderer()->view(); | 3328 ASSERT(renderer()->view()); |
3331 ASSERT(view); | |
3332 if (view) | |
3333 result.inflate(view->maximalOutlineSize()); // Used to apply a fudge fac
tor to dirty-rect checks on blocks/tables. | |
3334 | 3329 |
3335 return result; | 3330 return result; |
3336 } | 3331 } |
3337 | 3332 |
3338 LayoutRect RenderLayer::boundingBox(const RenderLayer* ancestorLayer, CalculateL
ayerBoundsFlags flags, const LayoutPoint* offsetFromRoot) const | 3333 LayoutRect RenderLayer::boundingBox(const RenderLayer* ancestorLayer, CalculateL
ayerBoundsFlags flags, const LayoutPoint* offsetFromRoot) const |
3339 { | 3334 { |
3340 LayoutRect result = localBoundingBox(flags); | 3335 LayoutRect result = localBoundingBox(flags); |
3341 if (renderer()->isBox()) | 3336 if (renderer()->isBox()) |
3342 renderBox()->flipForWritingMode(result); | 3337 renderBox()->flipForWritingMode(result); |
3343 else | 3338 else |
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4063 } | 4058 } |
4064 } | 4059 } |
4065 | 4060 |
4066 void showLayerTree(const WebCore::RenderObject* renderer) | 4061 void showLayerTree(const WebCore::RenderObject* renderer) |
4067 { | 4062 { |
4068 if (!renderer) | 4063 if (!renderer) |
4069 return; | 4064 return; |
4070 showLayerTree(renderer->enclosingLayer()); | 4065 showLayerTree(renderer->enclosingLayer()); |
4071 } | 4066 } |
4072 #endif | 4067 #endif |
OLD | NEW |