summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/core/rendering/RenderFlowThread.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/rendering/RenderFlowThread.h')
-rw-r--r--chromium/third_party/WebKit/Source/core/rendering/RenderFlowThread.h120
1 files changed, 10 insertions, 110 deletions
diff --git a/chromium/third_party/WebKit/Source/core/rendering/RenderFlowThread.h b/chromium/third_party/WebKit/Source/core/rendering/RenderFlowThread.h
index 7986768361e..12c92fb627b 100644
--- a/chromium/third_party/WebKit/Source/core/rendering/RenderFlowThread.h
+++ b/chromium/third_party/WebKit/Source/core/rendering/RenderFlowThread.h
@@ -41,7 +41,6 @@ namespace WebCore {
struct LayerFragment;
typedef Vector<LayerFragment, 1> LayerFragments;
class RenderFlowThread;
-class RenderStyle;
class RenderRegion;
typedef ListHashSet<RenderRegion*> RenderRegionList;
@@ -58,117 +57,58 @@ public:
virtual ~RenderFlowThread() { };
virtual bool isRenderFlowThread() const OVERRIDE FINAL { return true; }
+ virtual bool isRenderMultiColumnFlowThread() const { return false; }
- virtual void layout() OVERRIDE FINAL;
+ virtual void layout() OVERRIDE;
// Always create a RenderLayer for the RenderFlowThread so that we
// can easily avoid drawing the children directly.
- virtual bool requiresLayer() const OVERRIDE FINAL { return true; }
+ virtual LayerType layerTypeRequired() const OVERRIDE FINAL { return NormalLayer; }
- virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) OVERRIDE;
+ virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) OVERRIDE FINAL;
- void removeFlowChildInfo(RenderObject*);
-#ifndef NDEBUG
- bool hasChildInfo(RenderObject* child) const { return child && child->isBox() && m_regionRangeMap.contains(toRenderBox(child)); }
-#endif
-
- virtual void addRegionToThread(RenderRegion*);
+ virtual void addRegionToThread(RenderRegion*) = 0;
virtual void removeRegionFromThread(RenderRegion*);
const RenderRegionList& renderRegionList() const { return m_regionList; }
- virtual void updateLogicalWidth() OVERRIDE FINAL;
virtual void computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop, LogicalExtentComputedValues&) const OVERRIDE;
- void paintFlowThreadPortionInRegion(PaintInfo&, RenderRegion*, const LayoutRect& flowThreadPortionRect, const LayoutRect& flowThreadPortionOverflowRect, const LayoutPoint&) const;
- bool hitTestFlowThreadPortionInRegion(RenderRegion*, const LayoutRect& flowThreadPortionRect, const LayoutRect& flowThreadPortionOverflowRect, const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset) const;
-
bool hasRegions() const { return m_regionList.size(); }
- // Check if the content is flown into at least a region with region styling rules.
- bool hasRegionsWithStyling() const { return m_hasRegionsWithStyling; }
- void checkRegionsWithStyling();
- virtual void regionChangedWritingMode(RenderRegion*) { }
void validateRegions();
void invalidateRegions();
bool hasValidRegionInfo() const { return !m_regionsInvalidated && !m_regionList.isEmpty(); }
- static PassRefPtr<RenderStyle> createFlowThreadStyle(RenderStyle* parentStyle);
-
- void styleDidChange(StyleDifference, const RenderStyle* oldStyle);
-
void repaintRectangleInRegions(const LayoutRect&) const;
LayoutPoint adjustedPositionRelativeToOffsetParent(const RenderBoxModelObject&, const LayoutPoint&);
LayoutUnit pageLogicalTopForOffset(LayoutUnit);
- LayoutUnit pageLogicalWidthForOffset(LayoutUnit);
LayoutUnit pageLogicalHeightForOffset(LayoutUnit);
LayoutUnit pageRemainingLogicalHeightForOffset(LayoutUnit, PageBoundaryRule = IncludePageBoundary);
virtual void setPageBreak(LayoutUnit /*offset*/, LayoutUnit /*spaceShortage*/) { }
virtual void updateMinimumPageHeight(LayoutUnit /*offset*/, LayoutUnit /*minHeight*/) { }
- enum RegionAutoGenerationPolicy {
- AllowRegionAutoGeneration,
- DisallowRegionAutoGeneration,
- };
- RenderRegion* regionAtBlockOffset(LayoutUnit, bool extendLastRegion = false, RegionAutoGenerationPolicy = AllowRegionAutoGeneration);
-
- RenderRegion* regionFromAbsolutePointAndBox(IntPoint, const RenderBox* flowedBox);
+ virtual RenderRegion* regionAtBlockOffset(LayoutUnit) const;
- bool regionsHaveUniformLogicalWidth() const { return m_regionsHaveUniformLogicalWidth; }
bool regionsHaveUniformLogicalHeight() const { return m_regionsHaveUniformLogicalHeight; }
- RenderRegion* mapFromFlowToRegion(TransformState&) const;
-
- void removeRenderBoxRegionInfo(RenderBox*);
- bool logicalWidthChangedInRegionsForBlock(const RenderBlock*);
-
- LayoutUnit contentLogicalWidthOfFirstRegion() const;
- LayoutUnit contentLogicalHeightOfFirstRegion() const;
- LayoutUnit contentLogicalLeftOfFirstRegion() const;
-
RenderRegion* firstRegion() const;
RenderRegion* lastRegion() const;
- bool previousRegionCountChanged() const { return m_previousRegionCount != m_regionList.size(); }
- void updatePreviousRegionCount() { m_previousRegionCount = m_regionList.size(); }
-
void setRegionRangeForBox(const RenderBox*, LayoutUnit offsetFromLogicalTopOfFirstPage);
void getRegionRangeForBox(const RenderBox*, RenderRegion*& startRegion, RenderRegion*& endRegion) const;
- void clearRenderObjectCustomStyle(const RenderObject*,
- const RenderRegion* oldStartRegion = 0, const RenderRegion* oldEndRegion = 0,
- const RenderRegion* newStartRegion = 0, const RenderRegion* newEndRegion = 0);
-
- // Check if the object is in region and the region is part of this flow thread.
- bool objectInFlowRegion(const RenderObject*, const RenderRegion*) const;
-
- void markAutoLogicalHeightRegionsForLayout();
-
- bool addForcedRegionBreak(LayoutUnit, RenderObject* breakChild, bool isBefore, LayoutUnit* offsetBreakAdjustment = 0);
- void applyBreakAfterContent(LayoutUnit);
+ virtual bool addForcedRegionBreak(LayoutUnit, RenderObject* breakChild, bool isBefore, LayoutUnit* offsetBreakAdjustment = 0) { return false; }
+ virtual bool isPageLogicalHeightKnown() const { return true; }
bool pageLogicalSizeChanged() const { return m_pageLogicalSizeChanged; }
- bool hasAutoLogicalHeightRegions() const { ASSERT(isAutoLogicalHeightRegionsCountConsistent()); return m_autoLogicalHeightRegionsCount; }
- void incrementAutoLogicalHeightRegions();
- void decrementAutoLogicalHeightRegions();
-
-#ifndef NDEBUG
- bool isAutoLogicalHeightRegionsCountConsistent() const;
-#endif
-
void collectLayerFragments(LayerFragments&, const LayoutRect& layerBoundingBox, const LayoutRect& dirtyRect);
LayoutRect fragmentsBoundingBox(const LayoutRect& layerBoundingBox);
- void setInConstrainedLayoutPhase(bool value) { m_inConstrainedLayoutPhase = value; }
- bool inConstrainedLayoutPhase() const { return m_inConstrainedLayoutPhase; }
-
- bool needsTwoPhasesLayout() const { return m_needsTwoPhasesLayout; }
- void clearNeedsTwoPhasesLayout() { m_needsTwoPhasesLayout = false; }
-
- void pushFlowThreadLayoutState(const RenderObject*);
+ void pushFlowThreadLayoutState(const RenderObject&);
void popFlowThreadLayoutState();
LayoutUnit offsetFromLogicalTopOfFirstRegion(const RenderBlock*) const;
@@ -178,31 +118,8 @@ public:
protected:
virtual const char* renderName() const = 0;
- // Overridden by columns/pages to set up an initial logical width of the page width even when
- // no regions have been generated yet.
- virtual LayoutUnit initialLogicalWidth() const { return 0; };
-
- virtual void mapLocalToContainer(const RenderLayerModelObject* repaintContainer, TransformState&, MapCoordinatesFlags = ApplyContainerFlip, bool* wasFixed = 0) const OVERRIDE;
-
- void updateRegionsFlowThreadPortionRect(const RenderRegion* = 0);
+ void updateRegionsFlowThreadPortionRect();
bool shouldRepaint(const LayoutRect&) const;
- bool regionInRange(const RenderRegion* targetRegion, const RenderRegion* startRegion, const RenderRegion* endRegion) const;
-
- LayoutRect computeRegionClippingRect(const LayoutPoint&, const LayoutRect&, const LayoutRect&) const;
-
- void setDispatchRegionLayoutUpdateEvent(bool value) { m_dispatchRegionLayoutUpdateEvent = value; }
- bool shouldDispatchRegionLayoutUpdateEvent() { return m_dispatchRegionLayoutUpdateEvent; }
-
- void setDispatchRegionOversetChangeEvent(bool value) { m_dispatchRegionOversetChangeEvent = value; }
- bool shouldDispatchRegionOversetChangeEvent() const { return m_dispatchRegionOversetChangeEvent; }
-
- // Override if the flow thread implementation supports dispatching events when the flow layout is updated (e.g. for named flows)
- virtual void dispatchRegionLayoutUpdateEvent() { m_dispatchRegionLayoutUpdateEvent = false; }
- virtual void dispatchRegionOversetChangeEvent() { m_dispatchRegionOversetChangeEvent = false; }
-
- void initializeRegionsComputedAutoHeight(RenderRegion* = 0);
-
- virtual void autoGenerateRegionsToBlockOffset(LayoutUnit) { };
bool cachedOffsetFromLogicalTopOfFirstRegion(const RenderBox*, LayoutUnit&) const;
void setOffsetFromLogicalTopOfFirstRegion(const RenderBox*, LayoutUnit);
@@ -211,7 +128,6 @@ protected:
const RenderBox* currentStatePusherRenderBox() const;
RenderRegionList m_regionList;
- unsigned short m_previousRegionCount;
class RenderRegionRange {
public:
@@ -265,10 +181,6 @@ protected:
typedef HashMap<const RenderBox*, RenderRegionRange> RenderRegionRangeMap;
RenderRegionRangeMap m_regionRangeMap;
- typedef HashMap<RenderObject*, RenderRegion*> RenderObjectToRegionMap;
- RenderObjectToRegionMap m_breakBeforeToRegionMap;
- RenderObjectToRegionMap m_breakAfterToRegionMap;
-
// Stack of objects that pushed a LayoutState object on the RenderView. The
// objects on the stack are the ones that are curently in the process of being
// laid out.
@@ -276,23 +188,11 @@ protected:
typedef HashMap<const RenderBox*, LayoutUnit> RenderBoxToOffsetMap;
RenderBoxToOffsetMap m_boxesToOffsetMap;
- unsigned m_autoLogicalHeightRegionsCount;
-
RegionIntervalTree m_regionIntervalTree;
bool m_regionsInvalidated : 1;
- bool m_regionsHaveUniformLogicalWidth : 1;
bool m_regionsHaveUniformLogicalHeight : 1;
- bool m_hasRegionsWithStyling : 1;
- bool m_dispatchRegionLayoutUpdateEvent : 1;
- bool m_dispatchRegionOversetChangeEvent : 1;
bool m_pageLogicalSizeChanged : 1;
- bool m_inConstrainedLayoutPhase : 1;
- bool m_needsTwoPhasesLayout : 1;
-
-private:
- virtual bool supportsPartialLayout() const OVERRIDE { return false; }
-
};
DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderFlowThread, isRenderFlowThread());