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

Side by Side Diff: Source/core/rendering/compositing/CompositedLayerMapping.cpp

Issue 345613004: Correct the squashing origin w.r.t. the transformed ancestor to take into account rounding to integ… (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
« no previous file with comments | « LayoutTests/compositing/squashing/squash-transform-repainting-transformed-child-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 533 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 // Store the local bounds of the RenderLayer subtree before applying the offset. 544 // Store the local bounds of the RenderLayer subtree before applying the offset.
545 layers[i].compositedBounds = squashedBounds; 545 layers[i].compositedBounds = squashedBounds;
546 546
547 LayoutPoint offsetFromTransformedAncestorForSquashedLayer = layers[i].re nderLayer->computeOffsetFromTransformedAncestor(); 547 LayoutPoint offsetFromTransformedAncestorForSquashedLayer = layers[i].re nderLayer->computeOffsetFromTransformedAncestor();
548 LayoutSize offsetFromSquashingLayer = offsetFromTransformedAncestorForSq uashedLayer - referenceOffsetFromTransformedAncestor; 548 LayoutSize offsetFromSquashingLayer = offsetFromTransformedAncestorForSq uashedLayer - referenceOffsetFromTransformedAncestor;
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;
555 offsetFromTransformedAncestor->moveBy(totalSquashBounds.location());
556
557 // The totalSquashBounds is positioned with respect to referenceLayer of thi s CompositedLayerMapping. 554 // 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. 555 // 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 as 556 // The conversion between referenceLayer and the ancestor CLM is already com puted as
560 // offsetFromReferenceLayerToParentGraphicsLayer. 557 // offsetFromReferenceLayerToParentGraphicsLayer.
561 totalSquashBounds.moveBy(offsetFromReferenceLayerToParentGraphicsLayer); 558 totalSquashBounds.moveBy(offsetFromReferenceLayerToParentGraphicsLayer);
562 IntRect squashLayerBounds = enclosingIntRect(totalSquashBounds); 559 IntRect squashLayerBounds = enclosingIntRect(totalSquashBounds);
563 IntPoint squashLayerOrigin = squashLayerBounds.location(); 560 IntPoint squashLayerOrigin = squashLayerBounds.location();
564 LayoutSize squashLayerOriginInOwningLayerSpace = squashLayerOrigin - offsetF romReferenceLayerToParentGraphicsLayer; 561 LayoutSize squashLayerOriginInOwningLayerSpace = squashLayerOrigin - offsetF romReferenceLayerToParentGraphicsLayer;
565 562
566 squashingLayer->setPosition(squashLayerBounds.location()); 563 squashingLayer->setPosition(squashLayerBounds.location());
567 squashingLayer->setSize(squashLayerBounds.size()); 564 squashingLayer->setSize(squashLayerBounds.size());
568 565
566 *offsetFromTransformedAncestor = referenceOffsetFromTransformedAncestor;
567 offsetFromTransformedAncestor->move(squashLayerOriginInOwningLayerSpace);
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.
(...skipping 1686 matching lines...) Expand 10 before | Expand all | Expand 10 after
2265 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) { 2265 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) {
2266 name = "Scrolling Block Selection Layer"; 2266 name = "Scrolling Block Selection Layer";
2267 } else { 2267 } else {
2268 ASSERT_NOT_REACHED(); 2268 ASSERT_NOT_REACHED();
2269 } 2269 }
2270 2270
2271 return name; 2271 return name;
2272 } 2272 }
2273 2273
2274 } // namespace WebCore 2274 } // namespace WebCore
OLDNEW
« no previous file with comments | « LayoutTests/compositing/squashing/squash-transform-repainting-transformed-child-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698