OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 m_ancestorClippingLayer->setSize(parentClipRect.size()); | 402 m_ancestorClippingLayer->setSize(parentClipRect.size()); |
403 | 403 |
404 // backgroundRect is relative to compAncestor, so subtract deltaX/deltaY
to get back to local coords. | 404 // backgroundRect is relative to compAncestor, so subtract deltaX/deltaY
to get back to local coords. |
405 m_ancestorClippingLayer->setOffsetFromRenderer(parentClipRect.location()
- delta); | 405 m_ancestorClippingLayer->setOffsetFromRenderer(parentClipRect.location()
- delta); |
406 | 406 |
407 // The primary layer is then parented in, and positioned relative to thi
s clipping layer. | 407 // The primary layer is then parented in, and positioned relative to thi
s clipping layer. |
408 graphicsLayerParentLocation = parentClipRect.location(); | 408 graphicsLayerParentLocation = parentClipRect.location(); |
409 } | 409 } |
410 | 410 |
411 m_graphicsLayer->setPosition(FloatPoint() + (relativeCompositingBounds.locat
ion() - graphicsLayerParentLocation)); | 411 m_graphicsLayer->setPosition(FloatPoint() + (relativeCompositingBounds.locat
ion() - graphicsLayerParentLocation)); |
412 | |
413 LayoutSize oldOffsetFromRenderer = m_graphicsLayer->offsetFromRenderer(); | |
414 m_graphicsLayer->setOffsetFromRenderer(localCompositingBounds.location() - L
ayoutPoint()); | 412 m_graphicsLayer->setOffsetFromRenderer(localCompositingBounds.location() - L
ayoutPoint()); |
415 | 413 |
416 // If the compositing layer offset changes, we need to repaint. | |
417 if (oldOffsetFromRenderer != m_graphicsLayer->offsetFromRenderer()) | |
418 m_graphicsLayer->setNeedsDisplay(); | |
419 | |
420 FloatSize oldSize = m_graphicsLayer->size(); | 414 FloatSize oldSize = m_graphicsLayer->size(); |
421 FloatSize newSize = relativeCompositingBounds.size(); | 415 FloatSize newSize = relativeCompositingBounds.size(); |
422 if (oldSize != newSize) { | 416 if (oldSize != newSize) { |
423 m_graphicsLayer->setSize(newSize); | 417 m_graphicsLayer->setSize(newSize); |
424 // A bounds change will almost always require redisplay. Usually that re
display | 418 // A bounds change will almost always require redisplay. Usually that re
display |
425 // will happen because of a repaint elsewhere, but not always: | 419 // will happen because of a repaint elsewhere, but not always: |
426 // e.g. see RenderView::setMaximalOutlineSize() | 420 // e.g. see RenderView::setMaximalOutlineSize() |
427 m_graphicsLayer->setNeedsDisplay(); | 421 m_graphicsLayer->setNeedsDisplay(); |
428 } | 422 } |
429 | 423 |
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1191 scrollbar->paint(&context, transformedClip); | 1185 scrollbar->paint(&context, transformedClip); |
1192 context.restore(); | 1186 context.restore(); |
1193 } | 1187 } |
1194 | 1188 |
1195 // Up-call from compositing layer drawing callback. | 1189 // Up-call from compositing layer drawing callback. |
1196 void RenderLayerBacking::paintContents(const GraphicsLayer* graphicsLayer, Graph
icsContext& context, GraphicsLayerPaintingPhase paintingPhase, const LayoutRect&
clip) | 1190 void RenderLayerBacking::paintContents(const GraphicsLayer* graphicsLayer, Graph
icsContext& context, GraphicsLayerPaintingPhase paintingPhase, const LayoutRect&
clip) |
1197 { | 1191 { |
1198 if (graphicsLayer == m_graphicsLayer.get() || graphicsLayer == m_foregroundL
ayer.get() || graphicsLayer == m_maskLayer.get()) { | 1192 if (graphicsLayer == m_graphicsLayer.get() || graphicsLayer == m_foregroundL
ayer.get() || graphicsLayer == m_maskLayer.get()) { |
1199 InspectorInstrumentationCookie cookie = InspectorInstrumentation::willPa
int(m_owningLayer->renderer()->frame(), clip); | 1193 InspectorInstrumentationCookie cookie = InspectorInstrumentation::willPa
int(m_owningLayer->renderer()->frame(), clip); |
1200 | 1194 |
1201 LayoutSize offset = graphicsLayer->offsetFromRenderer(); | |
1202 context.translate(-offset); | |
1203 | |
1204 LayoutRect clipRect(clip); | |
1205 clipRect.move(offset); | |
1206 | |
1207 // The dirtyRect is in the coords of the painting root. | 1195 // The dirtyRect is in the coords of the painting root. |
1208 LayoutRect dirtyRect = compositedBounds(); | 1196 LayoutRect dirtyRect = compositedBounds(); |
1209 dirtyRect.intersect(clipRect); | 1197 dirtyRect.intersect(clip); |
1210 | 1198 |
1211 // We have to use the same root as for hit testing, because both methods
can compute and cache clipRects. | 1199 // We have to use the same root as for hit testing, because both methods
can compute and cache clipRects. |
1212 paintIntoLayer(m_owningLayer, &context, dirtyRect, PaintBehaviorNormal,
paintingPhase, renderer()); | 1200 paintIntoLayer(m_owningLayer, &context, dirtyRect, PaintBehaviorNormal,
paintingPhase, renderer()); |
1213 | 1201 |
1214 InspectorInstrumentation::didPaint(cookie); | 1202 InspectorInstrumentation::didPaint(cookie); |
1215 } else if (graphicsLayer == layerForHorizontalScrollbar()) { | 1203 } else if (graphicsLayer == layerForHorizontalScrollbar()) { |
1216 paintScrollbar(m_owningLayer->horizontalScrollbar(), context, clip); | 1204 paintScrollbar(m_owningLayer->horizontalScrollbar(), context, clip); |
1217 } else if (graphicsLayer == layerForVerticalScrollbar()) { | 1205 } else if (graphicsLayer == layerForVerticalScrollbar()) { |
1218 paintScrollbar(m_owningLayer->verticalScrollbar(), context, clip); | 1206 paintScrollbar(m_owningLayer->verticalScrollbar(), context, clip); |
1219 } else if (graphicsLayer == layerForScrollCorner()) { | 1207 } else if (graphicsLayer == layerForScrollCorner()) { |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1458 | 1446 |
1459 if (m_graphicsLayer->drawsContent()) | 1447 if (m_graphicsLayer->drawsContent()) |
1460 return m_graphicsLayer->usingTiledLayer() ? TiledCompositingLayer : Norm
alCompositingLayer; | 1448 return m_graphicsLayer->usingTiledLayer() ? TiledCompositingLayer : Norm
alCompositingLayer; |
1461 | 1449 |
1462 return ContainerCompositingLayer; | 1450 return ContainerCompositingLayer; |
1463 } | 1451 } |
1464 | 1452 |
1465 } // namespace WebCore | 1453 } // namespace WebCore |
1466 | 1454 |
1467 #endif // USE(ACCELERATED_COMPOSITING) | 1455 #endif // USE(ACCELERATED_COMPOSITING) |
OLD | NEW |