| 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 1078 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1089 | 1089 |
| 1090 if (m_backgroundLayer) | 1090 if (m_backgroundLayer) |
| 1091 m_backgroundLayer->setDrawsContent(hasPaintedContent); | 1091 m_backgroundLayer->setDrawsContent(hasPaintedContent); |
| 1092 } | 1092 } |
| 1093 | 1093 |
| 1094 void CompositedLayerMapping::updateChildrenTransform() | 1094 void CompositedLayerMapping::updateChildrenTransform() |
| 1095 { | 1095 { |
| 1096 if (GraphicsLayer* childTransformLayer = layerForChildrenTransform()) { | 1096 if (GraphicsLayer* childTransformLayer = layerForChildrenTransform()) { |
| 1097 childTransformLayer->setTransform(owningLayer().perspectiveTransform()); | 1097 childTransformLayer->setTransform(owningLayer().perspectiveTransform()); |
| 1098 childTransformLayer->setTransformOrigin(FloatPoint3D(childTransformLayer
->size().width() * 0.5f, childTransformLayer->size().height() * 0.5f, 0.f)); | 1098 childTransformLayer->setTransformOrigin(FloatPoint3D(childTransformLayer
->size().width() * 0.5f, childTransformLayer->size().height() * 0.5f, 0.f)); |
| 1099 bool hasPerspective = false; | 1099 } |
| 1100 if (RenderStyle* style = m_owningLayer.renderer()->style()) | |
| 1101 hasPerspective = style->hasPerspective(); | |
| 1102 if (hasPerspective) | |
| 1103 childTransformLayer->setShouldFlattenTransform(false); | |
| 1104 | 1100 |
| 1105 // Note, if the target is the scrolling layer, we need to ensure that th
e | 1101 updateShouldFlattenTransform(); |
| 1106 // scrolling content layer doesn't flatten the transform. (It would be n
ice | |
| 1107 // if we could apply transform to the scrolling content layer, but that'
s | |
| 1108 // too late, we need the children transform to be applied _before_ the | |
| 1109 // scrolling offset.) | |
| 1110 if (childTransformLayer == m_scrollingLayer.get()) | |
| 1111 m_scrollingContentsLayer->setShouldFlattenTransform(false); | |
| 1112 } | |
| 1113 } | 1102 } |
| 1114 | 1103 |
| 1115 // Return true if the layers changed. | 1104 // Return true if the layers changed. |
| 1116 bool CompositedLayerMapping::updateClippingLayers(bool needsAncestorClip, bool n
eedsDescendantClip) | 1105 bool CompositedLayerMapping::updateClippingLayers(bool needsAncestorClip, bool n
eedsDescendantClip) |
| 1117 { | 1106 { |
| 1118 bool layersChanged = false; | 1107 bool layersChanged = false; |
| 1119 | 1108 |
| 1120 if (needsAncestorClip) { | 1109 if (needsAncestorClip) { |
| 1121 if (!m_ancestorClippingLayer) { | 1110 if (!m_ancestorClippingLayer) { |
| 1122 m_ancestorClippingLayer = createGraphicsLayer(CompositingReasonLayer
ForAncestorClip); | 1111 m_ancestorClippingLayer = createGraphicsLayer(CompositingReasonLayer
ForAncestorClip); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1147 } | 1136 } |
| 1148 | 1137 |
| 1149 bool CompositedLayerMapping::updateChildTransformLayer(bool needsChildTransformL
ayer) | 1138 bool CompositedLayerMapping::updateChildTransformLayer(bool needsChildTransformL
ayer) |
| 1150 { | 1139 { |
| 1151 bool layersChanged = false; | 1140 bool layersChanged = false; |
| 1152 | 1141 |
| 1153 if (needsChildTransformLayer) { | 1142 if (needsChildTransformLayer) { |
| 1154 if (!m_childTransformLayer) { | 1143 if (!m_childTransformLayer) { |
| 1155 m_childTransformLayer = createGraphicsLayer(CompositingReasonLayerFo
rPerspective); | 1144 m_childTransformLayer = createGraphicsLayer(CompositingReasonLayerFo
rPerspective); |
| 1156 m_childTransformLayer->setDrawsContent(false); | 1145 m_childTransformLayer->setDrawsContent(false); |
| 1157 m_childTransformLayer->setShouldFlattenTransform(false); | |
| 1158 layersChanged = true; | 1146 layersChanged = true; |
| 1159 } | 1147 } |
| 1160 } else if (m_childTransformLayer) { | 1148 } else if (m_childTransformLayer) { |
| 1161 m_childTransformLayer->removeFromParent(); | 1149 m_childTransformLayer->removeFromParent(); |
| 1162 m_childTransformLayer = nullptr; | 1150 m_childTransformLayer = nullptr; |
| 1163 layersChanged = true; | 1151 layersChanged = true; |
| 1164 } | 1152 } |
| 1165 | 1153 |
| 1166 return layersChanged; | 1154 return layersChanged; |
| 1167 } | 1155 } |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1273 if ((mode & ApplyToCoreLayers) && mapping->childTransformLayer()) | 1261 if ((mode & ApplyToCoreLayers) && mapping->childTransformLayer()) |
| 1274 f(mapping->childTransformLayer()); | 1262 f(mapping->childTransformLayer()); |
| 1275 if ((mode & ApplyToCoreLayers) && mapping->ancestorClippingLayer()) | 1263 if ((mode & ApplyToCoreLayers) && mapping->ancestorClippingLayer()) |
| 1276 f(mapping->ancestorClippingLayer()); | 1264 f(mapping->ancestorClippingLayer()); |
| 1277 if (((mode & ApplyToCoreLayers) || (mode & ApplyToContentLayers)) && mapping
->mainGraphicsLayer()) | 1265 if (((mode & ApplyToCoreLayers) || (mode & ApplyToContentLayers)) && mapping
->mainGraphicsLayer()) |
| 1278 f(mapping->mainGraphicsLayer()); | 1266 f(mapping->mainGraphicsLayer()); |
| 1279 if ((mode & ApplyToCoreLayers) && mapping->clippingLayer()) | 1267 if ((mode & ApplyToCoreLayers) && mapping->clippingLayer()) |
| 1280 f(mapping->clippingLayer()); | 1268 f(mapping->clippingLayer()); |
| 1281 if ((mode & ApplyToCoreLayers) && mapping->scrollingLayer()) | 1269 if ((mode & ApplyToCoreLayers) && mapping->scrollingLayer()) |
| 1282 f(mapping->scrollingLayer()); | 1270 f(mapping->scrollingLayer()); |
| 1271 if ((mode & ApplyToCoreLayers) && mapping->scrollingBlockSelectionLayer()) |
| 1272 f(mapping->scrollingBlockSelectionLayer()); |
| 1283 if (((mode & ApplyToCoreLayers) || (mode & ApplyToContentLayers)) && mapping
->scrollingContentsLayer()) | 1273 if (((mode & ApplyToCoreLayers) || (mode & ApplyToContentLayers)) && mapping
->scrollingContentsLayer()) |
| 1284 f(mapping->scrollingContentsLayer()); | 1274 f(mapping->scrollingContentsLayer()); |
| 1285 if (((mode & ApplyToCoreLayers) || (mode & ApplyToContentLayers)) && mapping
->foregroundLayer()) | 1275 if (((mode & ApplyToCoreLayers) || (mode & ApplyToContentLayers)) && mapping
->foregroundLayer()) |
| 1286 f(mapping->foregroundLayer()); | 1276 f(mapping->foregroundLayer()); |
| 1287 | 1277 |
| 1288 if ((mode & ApplyToSquashingLayer) && mapping->squashingLayer()) | 1278 if ((mode & ApplyToSquashingLayer) && mapping->squashingLayer()) |
| 1289 f(mapping->squashingLayer()); | 1279 f(mapping->squashingLayer()); |
| 1290 | 1280 |
| 1291 if (((mode & ApplyToMaskLayers) || (mode & ApplyToContentLayers)) && mapping
->maskLayer()) | 1281 if (((mode & ApplyToMaskLayers) || (mode & ApplyToContentLayers)) && mapping
->maskLayer()) |
| 1292 f(mapping->maskLayer()); | 1282 f(mapping->maskLayer()); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1338 bool shouldFlatten; | 1328 bool shouldFlatten; |
| 1339 }; | 1329 }; |
| 1340 | 1330 |
| 1341 void CompositedLayerMapping::updateShouldFlattenTransform() | 1331 void CompositedLayerMapping::updateShouldFlattenTransform() |
| 1342 { | 1332 { |
| 1343 // All CLM-managed layers that could affect a descendant layer should update
their | 1333 // All CLM-managed layers that could affect a descendant layer should update
their |
| 1344 // should-flatten-transform value (the other layers' transforms don't matter
here). | 1334 // should-flatten-transform value (the other layers' transforms don't matter
here). |
| 1345 UpdateShouldFlattenTransformFunctor functor = { !m_owningLayer.shouldPreserv
e3D() }; | 1335 UpdateShouldFlattenTransformFunctor functor = { !m_owningLayer.shouldPreserv
e3D() }; |
| 1346 ApplyToGraphicsLayersMode mode = ApplyToCoreLayers; | 1336 ApplyToGraphicsLayersMode mode = ApplyToCoreLayers; |
| 1347 ApplyToGraphicsLayers(this, functor, mode); | 1337 ApplyToGraphicsLayers(this, functor, mode); |
| 1338 |
| 1339 // Note, if we apply perspective, we have to set should flatten differently |
| 1340 // so that the transform propagates to child layers correctly. |
| 1341 if (GraphicsLayer* childTransformLayer = layerForChildrenTransform()) { |
| 1342 bool hasPerspective = false; |
| 1343 if (RenderStyle* style = m_owningLayer.renderer()->style()) |
| 1344 hasPerspective = style->hasPerspective(); |
| 1345 if (hasPerspective) |
| 1346 childTransformLayer->setShouldFlattenTransform(false); |
| 1347 |
| 1348 // Note, if the target is the scrolling layer, we need to ensure that th
e |
| 1349 // scrolling content layer doesn't flatten the transform. (It would be n
ice |
| 1350 // if we could apply transform to the scrolling content layer, but that'
s |
| 1351 // too late, we need the children transform to be applied _before_ the |
| 1352 // scrolling offset.) |
| 1353 if (childTransformLayer == m_scrollingLayer.get()) { |
| 1354 m_scrollingContentsLayer->setShouldFlattenTransform(false); |
| 1355 m_scrollingBlockSelectionLayer->setShouldFlattenTransform(false); |
| 1356 } |
| 1357 } |
| 1348 } | 1358 } |
| 1349 | 1359 |
| 1350 bool CompositedLayerMapping::updateForegroundLayer(bool needsForegroundLayer) | 1360 bool CompositedLayerMapping::updateForegroundLayer(bool needsForegroundLayer) |
| 1351 { | 1361 { |
| 1352 bool layerChanged = false; | 1362 bool layerChanged = false; |
| 1353 if (needsForegroundLayer) { | 1363 if (needsForegroundLayer) { |
| 1354 if (!m_foregroundLayer) { | 1364 if (!m_foregroundLayer) { |
| 1355 m_foregroundLayer = createGraphicsLayer(CompositingReasonLayerForFor
eground); | 1365 m_foregroundLayer = createGraphicsLayer(CompositingReasonLayerForFor
eground); |
| 1356 m_foregroundLayer->setDrawsContent(true); | 1366 m_foregroundLayer->setDrawsContent(true); |
| 1357 m_foregroundLayer->setPaintingPhase(GraphicsLayerPaintForeground); | 1367 m_foregroundLayer->setPaintingPhase(GraphicsLayerPaintForeground); |
| (...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2241 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) { | 2251 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) { |
| 2242 name = "Scrolling Block Selection Layer"; | 2252 name = "Scrolling Block Selection Layer"; |
| 2243 } else { | 2253 } else { |
| 2244 ASSERT_NOT_REACHED(); | 2254 ASSERT_NOT_REACHED(); |
| 2245 } | 2255 } |
| 2246 | 2256 |
| 2247 return name; | 2257 return name; |
| 2248 } | 2258 } |
| 2249 | 2259 |
| 2250 } // namespace WebCore | 2260 } // namespace WebCore |
| OLD | NEW |