class LayoutStateMaintainer;
class LineLayoutState;
class RenderInline;
+class RenderRegion;
class RenderText;
struct BidiRun;
ColumnInfo* columnInfo() const;
int columnGap() const;
- void updateColumnInfoFromStyle(RenderStyle*);
-
// These two functions take the ColumnInfo* to avoid repeated lookups of the info in the global HashMap.
unsigned columnCount(ColumnInfo*) const;
LayoutRect columnRectAt(ColumnInfo*, unsigned) const;
virtual void scrollbarsChanged(bool /*horizontalScrollbarChanged*/, bool /*verticalScrollbarChanged*/) { };
- LayoutUnit logicalLeftOffsetForContent(RenderRegion*) const;
- LayoutUnit logicalRightOffsetForContent(RenderRegion*) const;
- LayoutUnit availableLogicalWidthForContent(RenderRegion* region) const
- {
- return max<LayoutUnit>(0, logicalRightOffsetForContent(region) - logicalLeftOffsetForContent(region));
- }
- LayoutUnit startOffsetForContent(RenderRegion* region) const
- {
- return style()->isLeftToRightDirection() ? logicalLeftOffsetForContent(region) : logicalWidth() - logicalRightOffsetForContent(region);
- }
- LayoutUnit endOffsetForContent(RenderRegion* region) const
- {
- return !style()->isLeftToRightDirection() ? logicalLeftOffsetForContent(region) : logicalWidth() - logicalRightOffsetForContent(region);
- }
- LayoutUnit logicalLeftOffsetForContent(LayoutUnit blockOffset) const
- {
- return logicalLeftOffsetForContent(regionAtBlockOffset(blockOffset));
- }
- LayoutUnit logicalRightOffsetForContent(LayoutUnit blockOffset) const
- {
- return logicalRightOffsetForContent(regionAtBlockOffset(blockOffset));
- }
- LayoutUnit availableLogicalWidthForContent(LayoutUnit blockOffset) const
- {
- return availableLogicalWidthForContent(regionAtBlockOffset(blockOffset));
- }
- LayoutUnit startOffsetForContent(LayoutUnit blockOffset) const
- {
- return startOffsetForContent(regionAtBlockOffset(blockOffset));
- }
- LayoutUnit endOffsetForContent(LayoutUnit blockOffset) const
- {
- return endOffsetForContent(regionAtBlockOffset(blockOffset));
- }
+ LayoutUnit availableLogicalWidthForContent() const { return max<LayoutUnit>(0, logicalRightOffsetForContent() - logicalLeftOffsetForContent()); }
LayoutUnit logicalLeftOffsetForContent() const { return isHorizontalWritingMode() ? borderLeft() + paddingLeft() : borderTop() + paddingTop(); }
LayoutUnit logicalRightOffsetForContent() const { return logicalLeftOffsetForContent() + availableLogicalWidth(); }
LayoutUnit startOffsetForContent() const { return style()->isLeftToRightDirection() ? logicalLeftOffsetForContent() : logicalWidth() - logicalRightOffsetForContent(); }
void updateBlockChildDirtyBitsBeforeLayout(bool relayoutChildren, RenderBox*);
- virtual void checkForPaginationLogicalHeightChange(LayoutUnit& pageLogicalHeight, bool& pageLogicalHeightChanged, bool& hasSpecifiedPageLogicalHeight);
-
virtual bool isInlineBlockOrInlineTable() const OVERRIDE FINAL { return isInline() && isReplaced(); }
private:
Position positionForBox(InlineBox*, bool start = true) const;
PositionWithAffinity positionForPointWithInlineChildren(const LayoutPoint&);
- virtual void calcColumnWidth();
+ void calcColumnWidth();
void makeChildrenAnonymousColumnBlocks(RenderObject* beforeChild, RenderBlockFlow* newBlockBox, RenderObject* newChild);
- bool expandsToEncloseOverhangingFloats() const;
-
void splitBlocks(RenderBlock* fromBlock, RenderBlock* toBlock, RenderBlock* middleBlock,
RenderObject* beforeChild, RenderBoxModelObject* oldCont);
void splitFlow(RenderObject* beforeChild, RenderBlock* newBlockBox,
protected:
void determineLogicalLeftPositionForChild(RenderBox* child, ApplyLayoutDeltaMode = DoNotApplyLayoutDelta);
- // Pagination routines.
- bool relayoutToAvoidWidows(LayoutStateMaintainer&);
-
// Returns the logicalOffset at the top of the next page. If the offset passed in is already at the top of the current page,
// then nextPageLogicalTop with ExcludePageBoundary will still move to the top of the next page. nextPageLogicalTop with
// IncludePageBoundary set will not.
// For a page height of 800px, the first rule will return 800 if the value passed in is 0. The second rule will simply return 0.
enum PageBoundaryRule { ExcludePageBoundary, IncludePageBoundary };
LayoutUnit nextPageLogicalTop(LayoutUnit logicalOffset, PageBoundaryRule = ExcludePageBoundary) const;
- bool hasNextPage(LayoutUnit logicalOffset, PageBoundaryRule = ExcludePageBoundary) const;
- virtual ColumnInfo::PaginationUnit paginationUnit() const;
+ bool createsBlockFormattingContext() const;
public:
LayoutUnit pageLogicalTopForOffset(LayoutUnit offset) const;
LayoutUnit adjustForUnsplittableChild(RenderBox* child, LayoutUnit logicalOffset, bool includeMargins = false); // If the child is unsplittable and can't fit on the current page, return the top of the next page/column.
void adjustLinePositionForPagination(RootInlineBox*, LayoutUnit& deltaOffset, RenderFlowThread*); // Computes a deltaOffset value that put a line at the top of the next page if it doesn't fit on the current page.
- void updateRegionForLine(RootInlineBox*) const;
// Adjust from painting offsets to the local coords of this renderer
void offsetForContents(LayoutPoint&) const;
- // This function is called to test a line box that has moved in the block direction to see if it has ended up in a new
- // region/page/column that has a different available line width than the old one. Used to know when you have to dirty a
- // line, i.e., that it can't be re-used.
- bool lineWidthForPaginatedLineChanged(RootInlineBox*, LayoutUnit lineDelta, RenderFlowThread*) const;
-
- bool logicalWidthChangedInRegions(RenderFlowThread*) const;
-
- virtual bool requiresColumns(int desiredColumnCount) const;
+ bool requiresColumns(int desiredColumnCount) const;
virtual bool updateLogicalWidthAndColumnWidth();
public:
virtual LayoutUnit offsetFromLogicalTopOfFirstPage() const OVERRIDE FINAL;
RenderRegion* regionAtBlockOffset(LayoutUnit) const;
- RenderRegion* clampToStartAndEndRegions(RenderRegion*) const;
public: