Chromium Code Reviews

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

Issue 218663004: Changing between multicol and regular block shouldn't recreate all renderers. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Actually test switching between multicol and non-multicol using the new implementation as well. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2007 David Smith (catfish.man@gmail.com) 4 * (C) 2007 David Smith (catfish.man@gmail.com)
5 * Copyright (C) 2003-2013 Apple Inc. All rights reserved. 5 * Copyright (C) 2003-2013 Apple Inc. All rights reserved.
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
7 * Copyright (C) 2013 Google Inc. All rights reserved. 7 * Copyright (C) 2013 Google Inc. All rights reserved.
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are 10 * modification, are permitted provided that the following conditions are
(...skipping 179 matching lines...)
190 static TextRun constructTextRun(RenderObject* context, const Font&, const Re nderText*, unsigned offset, RenderStyle*, 190 static TextRun constructTextRun(RenderObject* context, const Font&, const Re nderText*, unsigned offset, RenderStyle*,
191 TextRun::ExpansionBehavior = TextRun::AllowTrailingExpansion | TextRun:: ForbidLeadingExpansion); 191 TextRun::ExpansionBehavior = TextRun::AllowTrailingExpansion | TextRun:: ForbidLeadingExpansion);
192 192
193 static TextRun constructTextRun(RenderObject* context, const Font&, const LC har* characters, int length, RenderStyle*, TextDirection, 193 static TextRun constructTextRun(RenderObject* context, const Font&, const LC har* characters, int length, RenderStyle*, TextDirection,
194 TextRun::ExpansionBehavior = TextRun::AllowTrailingExpansion | TextRun:: ForbidLeadingExpansion); 194 TextRun::ExpansionBehavior = TextRun::AllowTrailingExpansion | TextRun:: ForbidLeadingExpansion);
195 195
196 static TextRun constructTextRun(RenderObject* context, const Font&, const UC har* characters, int length, RenderStyle*, TextDirection, 196 static TextRun constructTextRun(RenderObject* context, const Font&, const UC har* characters, int length, RenderStyle*, TextDirection,
197 TextRun::ExpansionBehavior = TextRun::AllowTrailingExpansion | TextRun:: ForbidLeadingExpansion); 197 TextRun::ExpansionBehavior = TextRun::AllowTrailingExpansion | TextRun:: ForbidLeadingExpansion);
198 198
199 RenderMultiColumnFlowThread* multiColumnFlowThread() const { return m_rareDa ta ? m_rareData->m_multiColumnFlowThread : 0; } 199 RenderMultiColumnFlowThread* multiColumnFlowThread() const { return m_rareDa ta ? m_rareData->m_multiColumnFlowThread : 0; }
200 void resetMultiColumnFlowThread()
201 {
202 if (m_rareData)
203 m_rareData->m_multiColumnFlowThread = 0;
204 }
200 205
201 void addOverflowFromInlineChildren(); 206 void addOverflowFromInlineChildren();
202 207
203 // FIXME: This should be const to avoid a const_cast, but can modify child d irty bits and RenderCombineText 208 // FIXME: This should be const to avoid a const_cast, but can modify child d irty bits and RenderCombineText
204 void computeInlinePreferredLogicalWidths(LayoutUnit& minLogicalWidth, Layout Unit& maxLogicalWidth); 209 void computeInlinePreferredLogicalWidths(LayoutUnit& minLogicalWidth, Layout Unit& maxLogicalWidth);
205 210
206 GapRects inlineSelectionGaps(RenderBlock* rootBlock, const LayoutPoint& root BlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, 211 GapRects inlineSelectionGaps(RenderBlock* rootBlock, const LayoutPoint& root BlockPhysicalPosition, const LayoutSize& offsetFromRootBlock,
207 LayoutUnit& lastLogicalTop, LayoutUnit& lastLogicalLeft, LayoutUnit& las tLogicalRight, const PaintInfo*); 212 LayoutUnit& lastLogicalTop, LayoutUnit& lastLogicalLeft, LayoutUnit& las tLogicalRight, const PaintInfo*);
208 protected: 213 protected:
209 void rebuildFloatsFromIntruding(); 214 void rebuildFloatsFromIntruding();
(...skipping 84 matching lines...)
294 LayoutUnit logicalRightOffsetForPositioningFloat(LayoutUnit logicalTop, Layo utUnit fixedOffset, bool applyTextIndent, LayoutUnit* heightRemaining) const; 299 LayoutUnit logicalRightOffsetForPositioningFloat(LayoutUnit logicalTop, Layo utUnit fixedOffset, bool applyTextIndent, LayoutUnit* heightRemaining) const;
295 LayoutUnit logicalLeftOffsetForPositioningFloat(LayoutUnit logicalTop, Layou tUnit fixedOffset, bool applyTextIndent, LayoutUnit* heightRemaining) const; 300 LayoutUnit logicalLeftOffsetForPositioningFloat(LayoutUnit logicalTop, Layou tUnit fixedOffset, bool applyTextIndent, LayoutUnit* heightRemaining) const;
296 301
297 LayoutUnit adjustLogicalRightOffsetForLine(LayoutUnit offsetFromFloats, bool applyTextIndent) const; 302 LayoutUnit adjustLogicalRightOffsetForLine(LayoutUnit offsetFromFloats, bool applyTextIndent) const;
298 LayoutUnit adjustLogicalLeftOffsetForLine(LayoutUnit offsetFromFloats, bool applyTextIndent) const; 303 LayoutUnit adjustLogicalLeftOffsetForLine(LayoutUnit offsetFromFloats, bool applyTextIndent) const;
299 304
300 virtual void adjustForBorderFit(LayoutUnit x, LayoutUnit& left, LayoutUnit& right) const OVERRIDE; // Helper function for borderFitAdjust 305 virtual void adjustForBorderFit(LayoutUnit x, LayoutUnit& left, LayoutUnit& right) const OVERRIDE; // Helper function for borderFitAdjust
301 306
302 virtual RootInlineBox* createRootInlineBox(); // Subclassed by SVG 307 virtual RootInlineBox* createRootInlineBox(); // Subclassed by SVG
303 308
304 void createMultiColumnFlowThreadIfNeeded();
305
306 void updateLogicalWidthForAlignment(const ETextAlign&, const RootInlineBox*, BidiRun* trailingSpaceRun, float& logicalLeft, float& totalLogicalWidth, float& availableLogicalWidth, int expansionOpportunityCount); 309 void updateLogicalWidthForAlignment(const ETextAlign&, const RootInlineBox*, BidiRun* trailingSpaceRun, float& logicalLeft, float& totalLogicalWidth, float& availableLogicalWidth, int expansionOpportunityCount);
307 void checkForPaginationLogicalHeightChange(LayoutUnit& pageLogicalHeight, bo ol& pageLogicalHeightChanged, bool& hasSpecifiedPageLogicalHeight); 310 void checkForPaginationLogicalHeightChange(LayoutUnit& pageLogicalHeight, bo ol& pageLogicalHeightChanged, bool& hasSpecifiedPageLogicalHeight);
308 bool shouldRelayoutForPagination(LayoutUnit& pageLogicalHeight, LayoutUnit l ayoutOverflowLogicalBottom) const; 311 bool shouldRelayoutForPagination(LayoutUnit& pageLogicalHeight, LayoutUnit l ayoutOverflowLogicalBottom) const;
309 void setColumnCountAndHeight(unsigned count, LayoutUnit pageLogicalHeight); 312 void setColumnCountAndHeight(unsigned count, LayoutUnit pageLogicalHeight);
310 313
311 public: 314 public:
312 struct FloatWithRect { 315 struct FloatWithRect {
313 FloatWithRect(RenderBox* f) 316 FloatWithRect(RenderBox* f)
314 : object(f) 317 : object(f)
315 , rect(LayoutRect(f->x() - f->marginLeft(), f->y() - f->marginTop(), f->width() + f->marginWidth(), f->height() + f->marginHeight())) 318 , rect(LayoutRect(f->x() - f->marginLeft(), f->y() - f->marginTop(), f->width() + f->marginWidth(), f->height() + f->marginHeight()))
(...skipping 173 matching lines...)
489 492
490 // END METHODS DEFINED IN RenderBlockLineLayout 493 // END METHODS DEFINED IN RenderBlockLineLayout
491 494
492 }; 495 };
493 496
494 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderBlockFlow, isRenderBlockFlow()); 497 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderBlockFlow, isRenderBlockFlow());
495 498
496 } // namespace WebCore 499 } // namespace WebCore
497 500
498 #endif // RenderBlockFlow_h 501 #endif // RenderBlockFlow_h
OLDNEW

Powered by Google App Engine