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

Side by Side Diff: Source/core/layout/LayoutFlowThread.h

Issue 1122323002: Cleanup: Remove LayoutRegion. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase master Created 5 years, 7 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 | « Source/core/layout/LayoutBoxModelObject.cpp ('k') | Source/core/layout/LayoutFlowThread.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) 2011 Adobe Systems Incorporated. All rights reserved. 2 * Copyright (C) 2011 Adobe Systems Incorporated. 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 * 7 *
8 * 1. Redistributions of source code must retain the above 8 * 1. Redistributions of source code must retain the above
9 * copyright notice, this list of conditions and the following 9 * copyright notice, this list of conditions and the following
10 * disclaimer. 10 * disclaimer.
(...skipping 20 matching lines...) Expand all
31 #define LayoutFlowThread_h 31 #define LayoutFlowThread_h
32 32
33 #include "core/CoreExport.h" 33 #include "core/CoreExport.h"
34 #include "core/layout/LayoutBlockFlow.h" 34 #include "core/layout/LayoutBlockFlow.h"
35 #include "core/paint/DeprecatedPaintLayerFragment.h" 35 #include "core/paint/DeprecatedPaintLayerFragment.h"
36 #include "wtf/ListHashSet.h" 36 #include "wtf/ListHashSet.h"
37 37
38 namespace blink { 38 namespace blink {
39 39
40 class LayoutMultiColumnSet; 40 class LayoutMultiColumnSet;
41 class LayoutRegion;
42 41
43 typedef ListHashSet<LayoutMultiColumnSet*> LayoutMultiColumnSetList; 42 typedef ListHashSet<LayoutMultiColumnSet*> LayoutMultiColumnSetList;
44 43
45 // LayoutFlowThread is used to collect all the layout objects that participate i n a 44 // LayoutFlowThread is used to collect all the layout objects that participate i n a flow thread. It
46 // flow thread. It will also help in doing the layout. However, it will not layo ut 45 // will also help in doing the layout. However, it will not layout directly to s creen. Instead,
47 // directly to screen. Instead, LayoutRegion objects will redirect their paint 46 // LayoutMultiColumnSet objects will redirect their paint and nodeAtPoint method s to this
48 // and nodeAtPoint methods to this object. Each LayoutRegion will actually be a viewPort 47 // object. Each LayoutMultiColumnSet will actually be a viewPort of the LayoutFl owThread.
49 // of the LayoutFlowThread.
50
51 class CORE_EXPORT LayoutFlowThread: public LayoutBlockFlow { 48 class CORE_EXPORT LayoutFlowThread: public LayoutBlockFlow {
52 public: 49 public:
53 LayoutFlowThread(); 50 LayoutFlowThread();
54 virtual ~LayoutFlowThread() { }; 51 virtual ~LayoutFlowThread() { };
55 52
56 virtual bool isLayoutFlowThread() const override final { return true; } 53 virtual bool isLayoutFlowThread() const override final { return true; }
57 virtual bool isLayoutMultiColumnFlowThread() const { return false; } 54 virtual bool isLayoutMultiColumnFlowThread() const { return false; }
58 virtual bool isLayoutPagedFlowThread() const { return false; } 55 virtual bool isLayoutPagedFlowThread() const { return false; }
59 56
60 virtual bool supportsPaintInvalidationStateCachedOffsets() const override { return false; } 57 virtual bool supportsPaintInvalidationStateCachedOffsets() const override { return false; }
61 58
62 virtual void layout() override; 59 virtual void layout() override;
63 60
64 // Always create a Layer for the LayoutFlowThread so that we 61 // Always create a Layer for the LayoutFlowThread so that we
65 // can easily avoid drawing the children directly. 62 // can easily avoid drawing the children directly.
66 virtual DeprecatedPaintLayerType layerTypeRequired() const override final { return NormalDeprecatedPaintLayer; } 63 virtual DeprecatedPaintLayerType layerTypeRequired() const override final { return NormalDeprecatedPaintLayer; }
67 64
68 // Skip past a column spanner during flow thread layout. Spanners are not la id out inside the 65 // Skip past a column spanner during flow thread layout. Spanners are not la id out inside the
69 // flow thread, since the flow thread is not in a spanner's containing block chain (since the 66 // flow thread, since the flow thread is not in a spanner's containing block chain (since the
70 // containing block is the multicol container). If the spanner follows right after a column set 67 // containing block is the multicol container). If the spanner follows right after a column set
71 // (as opposed to following another spanner), we may have to stretch the flo w thread to ensure 68 // (as opposed to following another spanner), we may have to stretch the flo w thread to ensure
72 // completely filled columns in the preceding column set. Return this adjust ment, if any. 69 // completely filled columns in the preceding column set. Return this adjust ment, if any.
73 virtual LayoutUnit skipColumnSpanner(LayoutBox*, LayoutUnit logicalTopInFlow Thread) { return LayoutUnit(); } 70 virtual LayoutUnit skipColumnSpanner(LayoutBox*, LayoutUnit logicalTopInFlow Thread) { return LayoutUnit(); }
74 71
75 virtual void flowThreadDescendantWasInserted(LayoutObject*) { } 72 virtual void flowThreadDescendantWasInserted(LayoutObject*) { }
76 virtual void flowThreadDescendantWillBeRemoved(LayoutObject*) { } 73 virtual void flowThreadDescendantWillBeRemoved(LayoutObject*) { }
77 74
78 virtual bool nodeAtPoint(HitTestResult&, const HitTestLocation& locationInCo ntainer, const LayoutPoint& accumulatedOffset, HitTestAction) override final; 75 virtual bool nodeAtPoint(HitTestResult&, const HitTestLocation& locationInCo ntainer, const LayoutPoint& accumulatedOffset, HitTestAction) override final;
79 76
80 virtual void addRegionToThread(LayoutMultiColumnSet*) = 0; 77 virtual void addColumnSetToThread(LayoutMultiColumnSet*) = 0;
81 virtual void removeRegionFromThread(LayoutMultiColumnSet*); 78 virtual void removeColumnSetFromThread(LayoutMultiColumnSet*);
82 79
83 virtual void computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logic alTop, LogicalExtentComputedValues&) const override; 80 virtual void computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logic alTop, LogicalExtentComputedValues&) const override;
84 81
85 bool hasRegions() const { return m_multiColumnSetList.size(); } 82 bool hasColumnSets() const { return m_multiColumnSetList.size(); }
86 83
87 void validateRegions(); 84 void validateColumnSets();
88 void invalidateRegions(); 85 void invalidateColumnSets();
89 bool hasValidRegionInfo() const { return !m_regionsInvalidated && !m_multiCo lumnSetList.isEmpty(); } 86 bool hasValidColumnSetInfo() const { return !m_columnSetsInvalidated && !m_m ultiColumnSetList.isEmpty(); }
90 87
91 virtual void mapRectToPaintInvalidationBacking(const LayoutBoxModelObject* p aintInvalidationContainer, LayoutRect&, const PaintInvalidationState*) const ove rride; 88 virtual void mapRectToPaintInvalidationBacking(const LayoutBoxModelObject* p aintInvalidationContainer, LayoutRect&, const PaintInvalidationState*) const ove rride;
92 89
93 LayoutUnit pageLogicalHeightForOffset(LayoutUnit); 90 LayoutUnit pageLogicalHeightForOffset(LayoutUnit);
94 LayoutUnit pageRemainingLogicalHeightForOffset(LayoutUnit, PageBoundaryRule = IncludePageBoundary); 91 LayoutUnit pageRemainingLogicalHeightForOffset(LayoutUnit, PageBoundaryRule = IncludePageBoundary);
95 92
96 virtual void setPageBreak(LayoutUnit /*offset*/, LayoutUnit /*spaceShortage* /) { } 93 virtual void setPageBreak(LayoutUnit /*offset*/, LayoutUnit /*spaceShortage* /) { }
97 virtual void updateMinimumPageHeight(LayoutUnit /*offset*/, LayoutUnit /*min Height*/) { } 94 virtual void updateMinimumPageHeight(LayoutUnit /*offset*/, LayoutUnit /*min Height*/) { }
98 95
99 bool regionsHaveUniformLogicalHeight() const { return m_regionsHaveUniformLo gicalHeight; } 96 bool columnSetsHaveUniformLogicalHeight() const { return m_columnSetsHaveUni formLogicalHeight; }
100 97
101 // FIXME: These 2 functions should return a LayoutMultiColumnSet. 98 virtual bool addForcedColumnBreak(LayoutUnit, LayoutObject* breakChild, bool isBefore, LayoutUnit* offsetBreakAdjustment = 0) { return false; }
102 LayoutRegion* firstRegion() const;
103 LayoutRegion* lastRegion() const;
104
105 virtual bool addForcedRegionBreak(LayoutUnit, LayoutObject* breakChild, bool isBefore, LayoutUnit* offsetBreakAdjustment = 0) { return false; }
106 99
107 virtual bool isPageLogicalHeightKnown() const { return true; } 100 virtual bool isPageLogicalHeightKnown() const { return true; }
108 bool pageLogicalSizeChanged() const { return m_pageLogicalSizeChanged; } 101 bool pageLogicalSizeChanged() const { return m_pageLogicalSizeChanged; }
109 102
110 void collectLayerFragments(DeprecatedPaintLayerFragments&, const LayoutRect& layerBoundingBox, const LayoutRect& dirtyRect); 103 void collectLayerFragments(DeprecatedPaintLayerFragments&, const LayoutRect& layerBoundingBox, const LayoutRect& dirtyRect);
111 104
112 // Return the visual bounding box based on the supplied flow-thread bounding box. Both 105 // Return the visual bounding box based on the supplied flow-thread bounding box. Both
113 // rectangles are completely physical in terms of writing mode. 106 // rectangles are completely physical in terms of writing mode.
114 LayoutRect fragmentsBoundingBox(const LayoutRect& layerBoundingBox) const; 107 LayoutRect fragmentsBoundingBox(const LayoutRect& layerBoundingBox) const;
115 108
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 142
150 LayoutMultiColumnSet* result() const { return m_result; } 143 LayoutMultiColumnSet* result() const { return m_result; }
151 144
152 private: 145 private:
153 LayoutUnit m_offset; 146 LayoutUnit m_offset;
154 LayoutMultiColumnSet* m_result; 147 LayoutMultiColumnSet* m_result;
155 }; 148 };
156 149
157 MultiColumnSetIntervalTree m_multiColumnSetIntervalTree; 150 MultiColumnSetIntervalTree m_multiColumnSetIntervalTree;
158 151
159 bool m_regionsInvalidated : 1; 152 bool m_columnSetsInvalidated : 1;
160 bool m_regionsHaveUniformLogicalHeight : 1; 153 bool m_columnSetsHaveUniformLogicalHeight : 1;
161 bool m_pageLogicalSizeChanged : 1; 154 bool m_pageLogicalSizeChanged : 1;
162 }; 155 };
163 156
164 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutFlowThread, isLayoutFlowThread()); 157 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutFlowThread, isLayoutFlowThread());
165 158
166 // These structures are used by PODIntervalTree for debugging. 159 // These structures are used by PODIntervalTree for debugging.
167 #ifndef NDEBUG 160 #ifndef NDEBUG
168 template <> struct ValueToString<LayoutUnit> { 161 template <> struct ValueToString<LayoutUnit> {
169 static String string(const LayoutUnit value) { return String::number(value.t oFloat()); } 162 static String string(const LayoutUnit value) { return String::number(value.t oFloat()); }
170 }; 163 };
171 164
172 template <> struct ValueToString<LayoutMultiColumnSet*> { 165 template <> struct ValueToString<LayoutMultiColumnSet*> {
173 static String string(const LayoutMultiColumnSet* value) { return String::for mat("%p", value); } 166 static String string(const LayoutMultiColumnSet* value) { return String::for mat("%p", value); }
174 }; 167 };
175 #endif 168 #endif
176 169
177 } // namespace blink 170 } // namespace blink
178 171
179 #endif // LayoutFlowThread_h 172 #endif // LayoutFlowThread_h
OLDNEW
« no previous file with comments | « Source/core/layout/LayoutBoxModelObject.cpp ('k') | Source/core/layout/LayoutFlowThread.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698