Chromium Code Reviews| 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 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 549 | 549 |
| 550 squashedBounds.move(offsetFromSquashingLayer); | 550 squashedBounds.move(offsetFromSquashingLayer); |
| 551 totalSquashBounds.unite(squashedBounds); | 551 totalSquashBounds.unite(squashedBounds); |
| 552 } | 552 } |
| 553 | 553 |
| 554 *offsetFromTransformedAncestor = referenceOffsetFromTransformedAncestor; | 554 *offsetFromTransformedAncestor = referenceOffsetFromTransformedAncestor; |
| 555 offsetFromTransformedAncestor->moveBy(totalSquashBounds.location()); | 555 offsetFromTransformedAncestor->moveBy(totalSquashBounds.location()); |
| 556 | 556 |
| 557 // The totalSquashBounds is positioned with respect to referenceLayer of thi s CompositedLayerMapping. | 557 // The totalSquashBounds is positioned with respect to referenceLayer of thi s CompositedLayerMapping. |
| 558 // But the squashingLayer needs to be positioned with respect to the ancesto r CompositedLayerMapping. | 558 // But the squashingLayer needs to be positioned with respect to the ancesto r CompositedLayerMapping. |
| 559 // The conversion between referenceLayer and the ancestor CLM is already com puted in the caller as | 559 // The conversion between referenceLayer and the ancestor CLM is already com puted as |
| 560 // offsetFromReferenceLayerToCompositedAncestor. | 560 // offsetFromReferenceLayerToParentGraphicsLayer. |
| 561 totalSquashBounds.moveBy(offsetFromReferenceLayerToParentGraphicsLayer); | 561 totalSquashBounds.moveBy(offsetFromReferenceLayerToParentGraphicsLayer); |
| 562 IntRect squashLayerBounds = enclosingIntRect(totalSquashBounds); | 562 IntRect squashLayerBounds = enclosingIntRect(totalSquashBounds); |
| 563 IntPoint squashLayerOrigin = squashLayerBounds.location(); | 563 IntPoint squashLayerOrigin = squashLayerBounds.location(); |
| 564 LayoutSize squashLayerOriginInOwningLayerSpace = squashLayerOrigin - offsetF romReferenceLayerToParentGraphicsLayer; | 564 LayoutSize squashLayerOriginInOwningLayerSpace = squashLayerOrigin - offsetF romReferenceLayerToParentGraphicsLayer; |
| 565 | 565 |
| 566 squashingLayer->setPosition(squashLayerBounds.location()); | 566 squashingLayer->setPosition(squashLayerBounds.location()); |
| 567 squashingLayer->setSize(squashLayerBounds.size()); | 567 squashingLayer->setSize(squashLayerBounds.size()); |
| 568 | 568 |
| 569 // Now that the squashing bounds are known, we can convert the RenderLayer p ainting offsets | 569 // Now that the squashing bounds are known, we can convert the RenderLayer p ainting offsets |
| 570 // from CLM owning layer space to the squashing layer space. | 570 // from CLM owning layer space to the squashing layer space. |
| 571 // | 571 // |
| 572 // The painting offset we want to compute for each squashed RenderLayer is e ssentially the position of | 572 // The painting offset we want to compute for each squashed RenderLayer is e ssentially the position of |
| 573 // the squashed RenderLayer described w.r.t. referenceLayer's origin. For th is purpose we already cached | 573 // the squashed RenderLayer described w.r.t. referenceLayer's origin. For th is purpose we already cached |
| 574 // offsetFromSquashingCLM before, which describes where the squashed RenderL ayer is located w.r.t. | 574 // offsetFromSquashingCLM before, which describes where the squashed RenderL ayer is located w.r.t. |
| 575 // referenceLayer. So we just need to convert that point from referenceLayer space to referenceLayer | 575 // referenceLayer. So we just need to convert that point from referenceLayer space to referenceLayer |
| 576 // space. This is simply done by subtracing squashLayerOriginInOwningLayerSp ace, but then the offset | 576 // space. This is simply done by subtracing squashLayerOriginInOwningLayerSp ace, but then the offset |
| 577 // overall needs to be negated because that's the direction that the paintin g code expects the | 577 // overall needs to be negated because that's the direction that the paintin g code expects the |
| 578 // offset to be. | 578 // offset to be. |
| 579 for (size_t i = 0; i < layers.size(); ++i) { | 579 for (size_t i = 0; i < layers.size(); ++i) { |
| 580 LayoutPoint offsetFromTransformedAncestorForSquashedLayer = layers[i].re nderLayer->computeOffsetFromTransformedAncestor(); | 580 LayoutPoint offsetFromTransformedAncestorForSquashedLayer = layers[i].re nderLayer->computeOffsetFromTransformedAncestor(); |
| 581 LayoutSize offsetFromSquashLayerOrigin = (offsetFromTransformedAncestorF orSquashedLayer - referenceOffsetFromTransformedAncestor) - squashLayerOriginInO wningLayerSpace; | 581 LayoutSize offsetFromSquashLayerOrigin = (offsetFromTransformedAncestorF orSquashedLayer - referenceOffsetFromTransformedAncestor) - squashLayerOriginInO wningLayerSpace; |
| 582 | 582 |
| 583 // It is ok to repaint here, because all of the geometry needed to corre ctly repaint is computed by this point. | 583 // It is ok to repaint here, because all of the geometry needed to corre ctly repaint is computed by this point. |
| 584 IntSize newOffsetFromRenderer = -flooredIntSize(offsetFromSquashLayerOri gin); | 584 IntSize newOffsetFromRenderer = -IntSize(offsetFromSquashLayerOrigin.wid th().round(), offsetFromSquashLayerOrigin.height().round()); |
| 585 LayoutSize subpixelAccumulation = offsetFromSquashLayerOrigin + newOffse tFromRenderer; | |
| 585 if (layers[i].offsetFromRendererSet && layers[i].offsetFromRenderer != n ewOffsetFromRenderer) | 586 if (layers[i].offsetFromRendererSet && layers[i].offsetFromRenderer != n ewOffsetFromRenderer) |
| 586 layers[i].renderLayer->repainter().repaintIncludingNonCompositingDes cendants(); | 587 layers[i].renderLayer->repainter().repaintIncludingNonCompositingDes cendants(); |
| 587 layers[i].offsetFromRenderer = newOffsetFromRenderer; | 588 layers[i].offsetFromRenderer = newOffsetFromRenderer; |
| 588 layers[i].offsetFromRendererSet = true; | 589 layers[i].offsetFromRendererSet = true; |
| 589 | 590 |
| 590 layers[i].renderLayer->setSubpixelAccumulation(offsetFromSquashLayerOrig in.fraction()); | 591 layers[i].renderLayer->setSubpixelAccumulation(subpixelAccumulation); |
| 591 ASSERT(layers[i].renderLayer->subpixelAccumulation() == | |
| 592 toLayoutSize(computeOffsetFromCompositedAncestor(layers[i].renderLay er, layers[i].renderLayer->ancestorCompositingLayer())).fraction()); | |
|
leviw_travelin_and_unemployed
2014/06/18 17:33:35
I'm sad to see the assert leave, but I'll just cro
| |
| 593 | 592 |
| 594 // FIXME: find a better design to avoid this redundant value - most like ly it will make | 593 // FIXME: find a better design to avoid this redundant value - most like ly it will make |
| 595 // sense to move the paint task info into RenderLayer's m_compositingPro perties. | 594 // sense to move the paint task info into RenderLayer's m_compositingPro perties. |
| 596 layers[i].renderLayer->setOffsetFromSquashingLayerOrigin(layers[i].offse tFromRenderer); | 595 layers[i].renderLayer->setOffsetFromSquashingLayerOrigin(layers[i].offse tFromRenderer); |
| 597 } | 596 } |
| 598 | 597 |
| 599 for (size_t i = 0; i < layers.size(); ++i) | 598 for (size_t i = 0; i < layers.size(); ++i) |
| 600 layers[i].localClipRectForSquashedLayer = localClipRectForSquashedLayer( referenceLayer, layers[i], layers); | 599 layers[i].localClipRectForSquashedLayer = localClipRectForSquashedLayer( referenceLayer, layers[i], layers); |
| 601 } | 600 } |
| 602 | 601 |
| (...skipping 1663 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2266 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) { | 2265 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) { |
| 2267 name = "Scrolling Block Selection Layer"; | 2266 name = "Scrolling Block Selection Layer"; |
| 2268 } else { | 2267 } else { |
| 2269 ASSERT_NOT_REACHED(); | 2268 ASSERT_NOT_REACHED(); |
| 2270 } | 2269 } |
| 2271 | 2270 |
| 2272 return name; | 2271 return name; |
| 2273 } | 2272 } |
| 2274 | 2273 |
| 2275 } // namespace WebCore | 2274 } // namespace WebCore |
| OLD | NEW |