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 531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 for (PaintLayer* child = firstChild(); child; child = child->nextSibling()) | 542 for (PaintLayer* child = firstChild(); child; child = child->nextSibling()) |
543 child->clearPaginationRecursive(); | 543 child->clearPaginationRecursive(); |
544 } | 544 } |
545 | 545 |
546 LayoutPoint PaintLayer::positionFromPaintInvalidationBacking(const LayoutObject*
layoutObject, const LayoutBoxModelObject* paintInvalidationContainer, const Pai
ntInvalidationState* paintInvalidationState) | 546 LayoutPoint PaintLayer::positionFromPaintInvalidationBacking(const LayoutObject*
layoutObject, const LayoutBoxModelObject* paintInvalidationContainer, const Pai
ntInvalidationState* paintInvalidationState) |
547 { | 547 { |
548 FloatPoint point = layoutObject->localToAncestorPoint(FloatPoint(), paintInv
alidationContainer, 0, 0, paintInvalidationState); | 548 FloatPoint point = layoutObject->localToAncestorPoint(FloatPoint(), paintInv
alidationContainer, 0, 0, paintInvalidationState); |
549 | 549 |
550 // FIXME: Eventually we are going to unify coordinates in GraphicsLayer spac
e. | 550 // FIXME: Eventually we are going to unify coordinates in GraphicsLayer spac
e. |
551 if (paintInvalidationContainer && paintInvalidationContainer->layer()->group
edMapping()) | 551 if (paintInvalidationContainer && paintInvalidationContainer->layer()->group
edMapping()) |
552 mapPointToPaintBackingCoordinates(paintInvalidationContainer, point); | 552 mapPointInPaintInvalidationContainerToBacking(paintInvalidationContainer
, point); |
553 | 553 |
554 return LayoutPoint(point); | 554 return LayoutPoint(point); |
555 } | 555 } |
556 | 556 |
557 void PaintLayer::mapPointToPaintBackingCoordinates(const LayoutBoxModelObject* p
aintInvalidationContainer, FloatPoint& point) | 557 void PaintLayer::mapPointInPaintInvalidationContainerToBacking(const LayoutBoxMo
delObject* paintInvalidationContainer, FloatPoint& point) |
558 { | 558 { |
559 PaintLayer* paintInvalidationLayer = paintInvalidationContainer->layer(); | 559 PaintLayer* paintInvalidationLayer = paintInvalidationContainer->layer(); |
560 if (!paintInvalidationLayer->groupedMapping()) { | 560 if (!paintInvalidationLayer->groupedMapping()) { |
561 point.move(paintInvalidationLayer->compositedLayerMapping()->contentOffs
etInCompositingLayer()); | 561 point.move(paintInvalidationLayer->compositedLayerMapping()->contentOffs
etInCompositingLayer()); |
562 return; | 562 return; |
563 } | 563 } |
564 | 564 |
565 LayoutBoxModelObject* transformedAncestor = paintInvalidationLayer->enclosin
gTransformedAncestor()->layoutObject(); | 565 LayoutBoxModelObject* transformedAncestor = paintInvalidationLayer->enclosin
gTransformedAncestor()->layoutObject(); |
566 if (!transformedAncestor) | 566 if (!transformedAncestor) |
567 return; | 567 return; |
568 | 568 |
569 // |paintInvalidationContainer| may have a local 2D transform on it, so take
that into account when mapping into the space of the | 569 // |paintInvalidationContainer| may have a local 2D transform on it, so take
that into account when mapping into the space of the |
570 // transformed ancestor. | 570 // transformed ancestor. |
571 point = paintInvalidationContainer->localToAncestorPoint(point, transformedA
ncestor); | 571 point = paintInvalidationContainer->localToAncestorPoint(point, transformedA
ncestor); |
572 | 572 |
573 point.moveBy(-paintInvalidationLayer->groupedMapping()->squashingOffsetFromT
ransformedAncestor()); | 573 point.moveBy(-paintInvalidationLayer->groupedMapping()->squashingOffsetFromT
ransformedAncestor()); |
574 } | 574 } |
575 | 575 |
576 void PaintLayer::mapRectToPaintBackingCoordinates(const LayoutBoxModelObject* pa
intInvalidationContainer, LayoutRect& rect) | 576 void PaintLayer::mapRectInPaintInvalidationContainerToBacking(const LayoutBoxMod
elObject* paintInvalidationContainer, LayoutRect& rect) |
577 { | 577 { |
578 PaintLayer* paintInvalidationLayer = paintInvalidationContainer->layer(); | 578 PaintLayer* paintInvalidationLayer = paintInvalidationContainer->layer(); |
579 if (!paintInvalidationLayer->groupedMapping()) { | 579 if (!paintInvalidationLayer->groupedMapping()) { |
580 rect.move(paintInvalidationLayer->compositedLayerMapping()->contentOffse
tInCompositingLayer()); | 580 rect.move(paintInvalidationLayer->compositedLayerMapping()->contentOffse
tInCompositingLayer()); |
581 return; | 581 return; |
582 } | 582 } |
583 | 583 |
584 LayoutBoxModelObject* transformedAncestor = paintInvalidationLayer->enclosin
gTransformedAncestor()->layoutObject(); | 584 LayoutBoxModelObject* transformedAncestor = paintInvalidationLayer->enclosin
gTransformedAncestor()->layoutObject(); |
585 if (!transformedAncestor) | 585 if (!transformedAncestor) |
586 return; | 586 return; |
(...skipping 11 matching lines...) Expand all Loading... |
598 layoutObject->mapToVisibleRectInAncestorSpace(paintInvalidationContainer
, rect, paintInvalidationState); | 598 layoutObject->mapToVisibleRectInAncestorSpace(paintInvalidationContainer
, rect, paintInvalidationState); |
599 return; | 599 return; |
600 } | 600 } |
601 | 601 |
602 // This code adjusts the paint invalidation rectangle to be in the space of
the transformed ancestor of the grouped (i.e. squashed) | 602 // This code adjusts the paint invalidation rectangle to be in the space of
the transformed ancestor of the grouped (i.e. squashed) |
603 // layer. This is because all layers that squash together need to issue pain
t invalidations w.r.t. a single container that is | 603 // layer. This is because all layers that squash together need to issue pain
t invalidations w.r.t. a single container that is |
604 // an ancestor of all of them, in order to properly take into account any lo
cal transforms etc. | 604 // an ancestor of all of them, in order to properly take into account any lo
cal transforms etc. |
605 // FIXME: remove this special-case code that works around the paint invalida
tion code structure. | 605 // FIXME: remove this special-case code that works around the paint invalida
tion code structure. |
606 layoutObject->mapToVisibleRectInAncestorSpace(paintInvalidationContainer, re
ct, paintInvalidationState); | 606 layoutObject->mapToVisibleRectInAncestorSpace(paintInvalidationContainer, re
ct, paintInvalidationState); |
607 | 607 |
608 mapRectToPaintBackingCoordinates(paintInvalidationContainer, rect); | 608 mapRectInPaintInvalidationContainerToBacking(paintInvalidationContainer, rec
t); |
609 } | 609 } |
610 | 610 |
611 LayoutRect PaintLayer::computePaintInvalidationRect(const LayoutObject& layoutOb
ject, const PaintLayer* paintInvalidationContainer, const PaintInvalidationState
* paintInvalidationState) | 611 LayoutRect PaintLayer::computePaintInvalidationRect(const LayoutObject& layoutOb
ject, const PaintLayer* paintInvalidationContainer, const PaintInvalidationState
* paintInvalidationState) |
612 { | 612 { |
613 if (!paintInvalidationContainer->groupedMapping()) | 613 if (!paintInvalidationContainer->groupedMapping()) |
614 return layoutObject.computePaintInvalidationRect(*paintInvalidationConta
iner->layoutObject(), paintInvalidationState); | 614 return layoutObject.computePaintInvalidationRect(*paintInvalidationConta
iner->layoutObject(), paintInvalidationState); |
615 | 615 |
616 LayoutRect rect = layoutObject.clippedOverflowRectForPaintInvalidation(paint
InvalidationContainer->layoutObject(), paintInvalidationState); | 616 LayoutRect rect = layoutObject.clippedOverflowRectForPaintInvalidation(paint
InvalidationContainer->layoutObject(), paintInvalidationState); |
617 mapRectToPaintBackingCoordinates(paintInvalidationContainer->layoutObject(),
rect); | 617 mapRectInPaintInvalidationContainerToBacking(paintInvalidationContainer->lay
outObject(), rect); |
618 return rect; | 618 return rect; |
619 } | 619 } |
620 | 620 |
621 void PaintLayer::dirtyVisibleContentStatus() | 621 void PaintLayer::dirtyVisibleContentStatus() |
622 { | 622 { |
623 compositor()->setNeedsUpdateDescendantDependentFlags(); | 623 compositor()->setNeedsUpdateDescendantDependentFlags(); |
624 m_visibleContentStatusDirty = true; | 624 m_visibleContentStatusDirty = true; |
625 if (parent()) | 625 if (parent()) |
626 parent()->dirtyAncestorChainVisibleDescendantStatus(); | 626 parent()->dirtyAncestorChainVisibleDescendantStatus(); |
627 // Non-self-painting layers paint into their ancestor layer, and count as pa
rt of the "visible contents" of the parent, so we need to dirty it. | 627 // Non-self-painting layers paint into their ancestor layer, and count as pa
rt of the "visible contents" of the parent, so we need to dirty it. |
(...skipping 2207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2835 | 2835 |
2836 void showLayerTree(const blink::LayoutObject* layoutObject) | 2836 void showLayerTree(const blink::LayoutObject* layoutObject) |
2837 { | 2837 { |
2838 if (!layoutObject) { | 2838 if (!layoutObject) { |
2839 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); | 2839 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); |
2840 return; | 2840 return; |
2841 } | 2841 } |
2842 showLayerTree(layoutObject->enclosingLayer()); | 2842 showLayerTree(layoutObject->enclosingLayer()); |
2843 } | 2843 } |
2844 #endif | 2844 #endif |
OLD | NEW |