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

Side by Side Diff: Source/core/rendering/RenderLayer.h

Issue 148823002: *** DO NOT LAND *** Measure the size and complexity of the old multicol implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 10 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
« no previous file with comments | « Source/core/rendering/RenderInline.cpp ('k') | Source/core/rendering/RenderLayer.cpp » ('j') | 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) 2003, 2009, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved.
3 * Copyright (C) 2013 Intel Corporation. All rights reserved. 3 * Copyright (C) 2013 Intel Corporation. All rights reserved.
4 * 4 *
5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
6 * 6 *
7 * Other contributors: 7 * Other contributors:
8 * Robert O'Callahan <roc+@cs.cmu.edu> 8 * Robert O'Callahan <roc+@cs.cmu.edu>
9 * David Baron <dbaron@fas.harvard.edu> 9 * David Baron <dbaron@fas.harvard.edu>
10 * Christian Biesinger <cbiesinger@web.de> 10 * Christian Biesinger <cbiesinger@web.de>
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 UpdatePagination = 1 << 4 164 UpdatePagination = 1 << 4
165 }; 165 };
166 typedef unsigned UpdateLayerPositionsFlags; 166 typedef unsigned UpdateLayerPositionsFlags;
167 static const UpdateLayerPositionsFlags defaultFlags = CheckForRepaint | IsCo mpositingUpdateRoot | UpdateCompositingLayers; 167 static const UpdateLayerPositionsFlags defaultFlags = CheckForRepaint | IsCo mpositingUpdateRoot | UpdateCompositingLayers;
168 168
169 void updateLayerPositionsAfterLayout(const RenderLayer* rootLayer, UpdateLay erPositionsFlags); 169 void updateLayerPositionsAfterLayout(const RenderLayer* rootLayer, UpdateLay erPositionsFlags);
170 170
171 void updateLayerPositionsAfterOverflowScroll(); 171 void updateLayerPositionsAfterOverflowScroll();
172 void updateLayerPositionsAfterDocumentScroll(); 172 void updateLayerPositionsAfterDocumentScroll();
173 173
174 bool isPaginated() const { return m_isPaginated; }
175 RenderLayer* enclosingPaginationLayer() const { return m_enclosingPagination Layer; } 174 RenderLayer* enclosingPaginationLayer() const { return m_enclosingPagination Layer; }
176 175
177 void updateTransform(); 176 void updateTransform();
178 177
179 const LayoutSize& offsetForInFlowPosition() const { return m_offsetForInFlow Position; } 178 const LayoutSize& offsetForInFlowPosition() const { return m_offsetForInFlow Position; }
180 179
181 void addBlockSelectionGapsBounds(const LayoutRect&); 180 void addBlockSelectionGapsBounds(const LayoutRect&);
182 void clearBlockSelectionGapsBounds(); 181 void clearBlockSelectionGapsBounds();
183 void repaintBlockSelectionGaps(); 182 void repaintBlockSelectionGaps();
184 bool hasBlockSelectionGapBounds() const; 183 bool hasBlockSelectionGapBounds() const;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 // Ancestor scrolling layer at or above our containing block. 238 // Ancestor scrolling layer at or above our containing block.
240 RenderLayer* ancestorScrollingLayer() const; 239 RenderLayer* ancestorScrollingLayer() const;
241 240
242 RenderLayer* enclosingFilterLayer(IncludeSelfOrNot = IncludeSelf) const; 241 RenderLayer* enclosingFilterLayer(IncludeSelfOrNot = IncludeSelf) const;
243 RenderLayer* enclosingFilterRepaintLayer() const; 242 RenderLayer* enclosingFilterRepaintLayer() const;
244 bool hasAncestorWithFilterOutsets() const; 243 bool hasAncestorWithFilterOutsets() const;
245 244
246 bool canUseConvertToLayerCoords() const 245 bool canUseConvertToLayerCoords() const
247 { 246 {
248 // These RenderObjects have an impact on their layers without the render ers knowing about it. 247 // These RenderObjects have an impact on their layers without the render ers knowing about it.
249 return !renderer()->hasColumns() && !renderer()->hasTransform() && !rend erer()->isSVGRoot(); 248 return !renderer()->hasTransform() && !renderer()->isSVGRoot();
250 } 249 }
251 250
252 void convertToPixelSnappedLayerCoords(const RenderLayer* ancestorLayer, IntP oint& location) const; 251 void convertToPixelSnappedLayerCoords(const RenderLayer* ancestorLayer, IntP oint& location) const;
253 void convertToPixelSnappedLayerCoords(const RenderLayer* ancestorLayer, IntR ect&) const; 252 void convertToPixelSnappedLayerCoords(const RenderLayer* ancestorLayer, IntR ect&) const;
254 void convertToLayerCoords(const RenderLayer* ancestorLayer, LayoutPoint& loc ation) const; 253 void convertToLayerCoords(const RenderLayer* ancestorLayer, LayoutPoint& loc ation) const;
255 void convertToLayerCoords(const RenderLayer* ancestorLayer, LayoutRect&) con st; 254 void convertToLayerCoords(const RenderLayer* ancestorLayer, LayoutRect&) con st;
256 255
257 // The two main functions that use the layer system. The paint method 256 // The two main functions that use the layer system. The paint method
258 // paints the layers that intersect the damage rect from back to 257 // paints the layers that intersect the damage rect from back to
259 // front. The hitTest method looks for mouse events by walking 258 // front. The hitTest method looks for mouse events by walking
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 void setParent(RenderLayer* parent); 485 void setParent(RenderLayer* parent);
487 void setFirstChild(RenderLayer* first) { m_first = first; } 486 void setFirstChild(RenderLayer* first) { m_first = first; }
488 void setLastChild(RenderLayer* last) { m_last = last; } 487 void setLastChild(RenderLayer* last) { m_last = last; }
489 488
490 LayoutPoint renderBoxLocation() const { return renderer()->isBox() ? toRende rBox(renderer())->location() : LayoutPoint(); } 489 LayoutPoint renderBoxLocation() const { return renderer()->isBox() ? toRende rBox(renderer())->location() : LayoutPoint(); }
491 490
492 void paintLayerContentsAndReflection(GraphicsContext*, const LayerPaintingIn fo&, PaintLayerFlags); 491 void paintLayerContentsAndReflection(GraphicsContext*, const LayerPaintingIn fo&, PaintLayerFlags);
493 void paintLayerByApplyingTransform(GraphicsContext*, const LayerPaintingInfo &, PaintLayerFlags, const LayoutPoint& translationOffset = LayoutPoint()); 492 void paintLayerByApplyingTransform(GraphicsContext*, const LayerPaintingInfo &, PaintLayerFlags, const LayoutPoint& translationOffset = LayoutPoint());
494 void paintLayerContents(GraphicsContext*, const LayerPaintingInfo&, PaintLay erFlags); 493 void paintLayerContents(GraphicsContext*, const LayerPaintingInfo&, PaintLay erFlags);
495 void paintChildren(unsigned childrenToVisit, GraphicsContext*, const LayerPa intingInfo&, PaintLayerFlags); 494 void paintChildren(unsigned childrenToVisit, GraphicsContext*, const LayerPa intingInfo&, PaintLayerFlags);
496 void paintPaginatedChildLayer(RenderLayer* childLayer, GraphicsContext*, con st LayerPaintingInfo&, PaintLayerFlags);
497 void paintChildLayerIntoColumns(RenderLayer* childLayer, GraphicsContext*, c onst LayerPaintingInfo&, PaintLayerFlags, const Vector<RenderLayer*>& columnLaye rs, size_t columnIndex);
498 495
499 void collectFragments(LayerFragments&, const RenderLayer* rootLayer, RenderR egion*, const LayoutRect& dirtyRect, 496 void collectFragments(LayerFragments&, const RenderLayer* rootLayer, RenderR egion*, const LayoutRect& dirtyRect,
500 ClipRectsType, OverlayScrollbarSizeRelevancy inOverlayScrollbarSizeRelev ancy = IgnoreOverlayScrollbarSize, 497 ClipRectsType, OverlayScrollbarSizeRelevancy inOverlayScrollbarSizeRelev ancy = IgnoreOverlayScrollbarSize,
501 ShouldRespectOverflowClip = RespectOverflowClip, const LayoutPoint* offs etFromRoot = 0, 498 ShouldRespectOverflowClip = RespectOverflowClip, const LayoutPoint* offs etFromRoot = 0,
502 const LayoutSize& subPixelAccumulation = LayoutSize(), const LayoutRect* layerBoundingBox = 0); 499 const LayoutSize& subPixelAccumulation = LayoutSize(), const LayoutRect* layerBoundingBox = 0);
503 void updatePaintingInfoForFragments(LayerFragments&, const LayerPaintingInfo &, PaintLayerFlags, bool shouldPaintContent, const LayoutPoint* offsetFromRoot); 500 void updatePaintingInfoForFragments(LayerFragments&, const LayerPaintingInfo &, PaintLayerFlags, bool shouldPaintContent, const LayoutPoint* offsetFromRoot);
504 void paintBackgroundForFragments(const LayerFragments&, GraphicsContext*, Gr aphicsContext* transparencyLayerContext, 501 void paintBackgroundForFragments(const LayerFragments&, GraphicsContext*, Gr aphicsContext* transparencyLayerContext,
505 const LayoutRect& transparencyPaintDirtyRect, bool haveTransparency, con st LayerPaintingInfo&, PaintBehavior, RenderObject* paintingRootForRenderer); 502 const LayoutRect& transparencyPaintDirtyRect, bool haveTransparency, con st LayerPaintingInfo&, PaintBehavior, RenderObject* paintingRootForRenderer);
506 void paintForegroundForFragments(const LayerFragments&, GraphicsContext*, Gr aphicsContext* transparencyLayerContext, 503 void paintForegroundForFragments(const LayerFragments&, GraphicsContext*, Gr aphicsContext* transparencyLayerContext,
507 const LayoutRect& transparencyPaintDirtyRect, bool haveTransparency, con st LayerPaintingInfo&, PaintBehavior, RenderObject* paintingRootForRenderer, 504 const LayoutRect& transparencyPaintDirtyRect, bool haveTransparency, con st LayerPaintingInfo&, PaintBehavior, RenderObject* paintingRootForRenderer,
508 bool selectionOnly, bool forceBlackText); 505 bool selectionOnly, bool forceBlackText);
509 void paintForegroundForFragmentsWithPhase(PaintPhase, const LayerFragments&, GraphicsContext*, const LayerPaintingInfo&, PaintBehavior, RenderObject* painti ngRootForRenderer); 506 void paintForegroundForFragmentsWithPhase(PaintPhase, const LayerFragments&, GraphicsContext*, const LayerPaintingInfo&, PaintBehavior, RenderObject* painti ngRootForRenderer);
510 void paintOutlineForFragments(const LayerFragments&, GraphicsContext*, const LayerPaintingInfo&, PaintBehavior, RenderObject* paintingRootForRenderer); 507 void paintOutlineForFragments(const LayerFragments&, GraphicsContext*, const LayerPaintingInfo&, PaintBehavior, RenderObject* paintingRootForRenderer);
511 void paintOverflowControlsForFragments(const LayerFragments&, GraphicsContex t*, const LayerPaintingInfo&); 508 void paintOverflowControlsForFragments(const LayerFragments&, GraphicsContex t*, const LayerPaintingInfo&);
512 void paintMaskForFragments(const LayerFragments&, GraphicsContext*, const La yerPaintingInfo&, RenderObject* paintingRootForRenderer); 509 void paintMaskForFragments(const LayerFragments&, GraphicsContext*, const La yerPaintingInfo&, RenderObject* paintingRootForRenderer);
513 void paintChildClippingMaskForFragments(const LayerFragments&, GraphicsConte xt*, const LayerPaintingInfo&, RenderObject* paintingRootForRenderer); 510 void paintChildClippingMaskForFragments(const LayerFragments&, GraphicsConte xt*, const LayerPaintingInfo&, RenderObject* paintingRootForRenderer);
514 void paintTransformedLayerIntoFragments(GraphicsContext*, const LayerPaintin gInfo&, PaintLayerFlags); 511 void paintTransformedLayerIntoFragments(GraphicsContext*, const LayerPaintin gInfo&, PaintLayerFlags);
515 512
516 RenderLayer* hitTestLayer(RenderLayer* rootLayer, RenderLayer* containerLaye r, const HitTestRequest& request, HitTestResult& result, 513 RenderLayer* hitTestLayer(RenderLayer* rootLayer, RenderLayer* containerLaye r, const HitTestRequest& request, HitTestResult& result,
517 const LayoutRect& hitTestRect, const HitTestLocati on&, bool appliedTransform, 514 const LayoutRect& hitTestRect, const HitTestLocati on&, bool appliedTransform,
518 const HitTestingTransformState* transformState = 0 , double* zOffset = 0); 515 const HitTestingTransformState* transformState = 0 , double* zOffset = 0);
519 RenderLayer* hitTestLayerByApplyingTransform(RenderLayer* rootLayer, RenderL ayer* containerLayer, const HitTestRequest&, HitTestResult&, 516 RenderLayer* hitTestLayerByApplyingTransform(RenderLayer* rootLayer, RenderL ayer* containerLayer, const HitTestRequest&, HitTestResult&,
520 const LayoutRect& hitTestRect, const HitTestLocation&, const HitTestingT ransformState* = 0, double* zOffset = 0, 517 const LayoutRect& hitTestRect, const HitTestLocation&, const HitTestingT ransformState* = 0, double* zOffset = 0,
521 const LayoutPoint& translationOffset = LayoutPoint()); 518 const LayoutPoint& translationOffset = LayoutPoint());
522 RenderLayer* hitTestChildren(ChildrenIteration, RenderLayer* rootLayer, cons t HitTestRequest&, HitTestResult&, 519 RenderLayer* hitTestChildren(ChildrenIteration, RenderLayer* rootLayer, cons t HitTestRequest&, HitTestResult&,
523 const LayoutRect& hitTestRect, const HitTestLocatio n&, 520 const LayoutRect& hitTestRect, const HitTestLocatio n&,
524 const HitTestingTransformState* transformState, dou ble* zOffsetForDescendants, double* zOffset, 521 const HitTestingTransformState* transformState, dou ble* zOffsetForDescendants, double* zOffset,
525 const HitTestingTransformState* unflattenedTransfor mState, bool depthSortDescendants); 522 const HitTestingTransformState* unflattenedTransfor mState, bool depthSortDescendants);
526 RenderLayer* hitTestPaginatedChildLayer(RenderLayer* childLayer, RenderLayer * rootLayer, const HitTestRequest& request, HitTestResult& result,
527 const LayoutRect& hitTestRect, const HitTestLocation&,
528 const HitTestingTransformState* tran sformState, double* zOffset);
529 RenderLayer* hitTestChildLayerColumns(RenderLayer* childLayer, RenderLayer* rootLayer, const HitTestRequest& request, HitTestResult& result,
530 const LayoutRect& hitTestRect, const H itTestLocation&,
531 const HitTestingTransformState* transf ormState, double* zOffset,
532 const Vector<RenderLayer*>& columnLaye rs, size_t columnIndex);
533 523
534 PassRefPtr<HitTestingTransformState> createLocalTransformState(RenderLayer* rootLayer, RenderLayer* containerLayer, 524 PassRefPtr<HitTestingTransformState> createLocalTransformState(RenderLayer* rootLayer, RenderLayer* containerLayer,
535 const LayoutRect& hitTestRect, const HitTestLocation &, 525 const LayoutRect& hitTestRect, const HitTestLocation &,
536 const HitTestingTransformState* containerTransformSt ate, 526 const HitTestingTransformState* containerTransformSt ate,
537 const LayoutPoint& translationOffset = LayoutPoint() ) const; 527 const LayoutPoint& translationOffset = LayoutPoint() ) const;
538 528
539 bool hitTestContents(const HitTestRequest&, HitTestResult&, const LayoutRect & layerBounds, const HitTestLocation&, HitTestFilter) const; 529 bool hitTestContents(const HitTestRequest&, HitTestResult&, const LayoutRect & layerBounds, const HitTestLocation&, HitTestFilter) const;
540 bool hitTestContentsForFragments(const LayerFragments&, const HitTestRequest &, HitTestResult&, const HitTestLocation&, HitTestFilter, bool& insideClipRect) const; 530 bool hitTestContentsForFragments(const LayerFragments&, const HitTestRequest &, HitTestResult&, const HitTestLocation&, HitTestFilter, bool& insideClipRect) const;
541 RenderLayer* hitTestTransformedLayerInFragments(RenderLayer* rootLayer, Rend erLayer* containerLayer, const HitTestRequest&, HitTestResult&, 531 RenderLayer* hitTestTransformedLayerInFragments(RenderLayer* rootLayer, Rend erLayer* containerLayer, const HitTestRequest&, HitTestResult&,
542 const LayoutRect& hitTestRect, const HitTestLocation&, const HitTestingT ransformState* = 0, double* zOffset = 0); 532 const LayoutRect& hitTestRect, const HitTestLocation&, const HitTestingT ransformState* = 0, double* zOffset = 0);
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 // we ended up painting this layer or any desce ndants (and therefore need to 616 // we ended up painting this layer or any desce ndants (and therefore need to
627 // blend). 617 // blend).
628 618
629 unsigned m_visibleContentStatusDirty : 1; 619 unsigned m_visibleContentStatusDirty : 1;
630 unsigned m_hasVisibleContent : 1; 620 unsigned m_hasVisibleContent : 1;
631 unsigned m_visibleDescendantStatusDirty : 1; 621 unsigned m_visibleDescendantStatusDirty : 1;
632 unsigned m_hasVisibleDescendant : 1; 622 unsigned m_hasVisibleDescendant : 1;
633 623
634 unsigned m_hasVisibleNonLayerContent : 1; 624 unsigned m_hasVisibleNonLayerContent : 1;
635 625
636 unsigned m_isPaginated : 1; // If we think this layer is split by a multi-co lumn ancestor, then this bit will be set.
637
638 unsigned m_3DTransformedDescendantStatusDirty : 1; 626 unsigned m_3DTransformedDescendantStatusDirty : 1;
639 // Set on a stacking context layer that has 3D descendants anywhere 627 // Set on a stacking context layer that has 3D descendants anywhere
640 // in a preserves3D hierarchy. Hint to do 3D-aware hit testing. 628 // in a preserves3D hierarchy. Hint to do 3D-aware hit testing.
641 unsigned m_has3DTransformedDescendant : 1; 629 unsigned m_has3DTransformedDescendant : 1;
642 630
643 unsigned m_containsDirtyOverlayScrollbars : 1; 631 unsigned m_containsDirtyOverlayScrollbars : 1;
644 632
645 // This is an optimization added for <table>. 633 // This is an optimization added for <table>.
646 // Currently cells do not need to update their repaint rectangles when scrol ling. This also 634 // Currently cells do not need to update their repaint rectangles when scrol ling. This also
647 // saves a lot of time when scrolling on a table. 635 // saves a lot of time when scrolling on a table.
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 718
731 } // namespace WebCore 719 } // namespace WebCore
732 720
733 #ifndef NDEBUG 721 #ifndef NDEBUG
734 // Outside the WebCore namespace for ease of invocation from gdb. 722 // Outside the WebCore namespace for ease of invocation from gdb.
735 void showLayerTree(const WebCore::RenderLayer*); 723 void showLayerTree(const WebCore::RenderLayer*);
736 void showLayerTree(const WebCore::RenderObject*); 724 void showLayerTree(const WebCore::RenderObject*);
737 #endif 725 #endif
738 726
739 #endif // RenderLayer_h 727 #endif // RenderLayer_h
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderInline.cpp ('k') | Source/core/rendering/RenderLayer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698