Title: [136146] trunk/Source/WebCore
- Revision
- 136146
- Author
- [email protected]
- Date
- 2012-11-29 12:11:06 -0800 (Thu, 29 Nov 2012)
Log Message
[New Multicolumn] Add minimum column height tracking and forced break tracking to column sets.
https://bugs.webkit.org/show_bug.cgi?id=103657
Reviewed by Simon Fraser.
* rendering/RenderMultiColumnSet.cpp:
(WebCore::RenderMultiColumnSet::RenderMultiColumnSet):
* rendering/RenderMultiColumnSet.h:
(WebCore::RenderMultiColumnSet::updateMinimumColumnHeight):
(WebCore::RenderMultiColumnSet::minimumColumnHeight):
(RenderMultiColumnSet):
(WebCore::RenderMultiColumnSet::forcedBreaksCount):
(WebCore::RenderMultiColumnSet::forcedBreakOffset):
(WebCore::RenderMultiColumnSet::maximumDistanceBetweenForcedBreaks):
(WebCore::RenderMultiColumnSet::clearForcedBreaks):
(WebCore::RenderMultiColumnSet::addForcedBreak):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (136145 => 136146)
--- trunk/Source/WebCore/ChangeLog 2012-11-29 20:06:37 UTC (rev 136145)
+++ trunk/Source/WebCore/ChangeLog 2012-11-29 20:11:06 UTC (rev 136146)
@@ -1,3 +1,22 @@
+2012-11-29 David Hyatt <[email protected]>
+
+ [New Multicolumn] Add minimum column height tracking and forced break tracking to column sets.
+ https://bugs.webkit.org/show_bug.cgi?id=103657
+
+ Reviewed by Simon Fraser.
+
+ * rendering/RenderMultiColumnSet.cpp:
+ (WebCore::RenderMultiColumnSet::RenderMultiColumnSet):
+ * rendering/RenderMultiColumnSet.h:
+ (WebCore::RenderMultiColumnSet::updateMinimumColumnHeight):
+ (WebCore::RenderMultiColumnSet::minimumColumnHeight):
+ (RenderMultiColumnSet):
+ (WebCore::RenderMultiColumnSet::forcedBreaksCount):
+ (WebCore::RenderMultiColumnSet::forcedBreakOffset):
+ (WebCore::RenderMultiColumnSet::maximumDistanceBetweenForcedBreaks):
+ (WebCore::RenderMultiColumnSet::clearForcedBreaks):
+ (WebCore::RenderMultiColumnSet::addForcedBreak):
+
2012-11-29 Pavel Feldman <[email protected]>
Web Inspector: introduce fast case for within-chunk edit
Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp (136145 => 136146)
--- trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp 2012-11-29 20:06:37 UTC (rev 136145)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp 2012-11-29 20:11:06 UTC (rev 136146)
@@ -41,6 +41,10 @@
, m_computedColumnCount(1)
, m_computedColumnWidth(0)
, m_computedColumnHeight(0)
+ , m_minimumColumnHeight(0)
+ , m_forcedBreaksCount(0)
+ , m_maximumDistanceBetweenForcedBreaks(0)
+ , m_forcedBreakOffset(0)
{
}
Modified: trunk/Source/WebCore/rendering/RenderMultiColumnSet.h (136145 => 136146)
--- trunk/Source/WebCore/rendering/RenderMultiColumnSet.h 2012-11-29 20:06:37 UTC (rev 136145)
+++ trunk/Source/WebCore/rendering/RenderMultiColumnSet.h 2012-11-29 20:11:06 UTC (rev 136146)
@@ -61,6 +61,29 @@
m_computedColumnHeight = height;
}
+ void updateMinimumColumnHeight(LayoutUnit height) { m_minimumColumnHeight = std::max(height, m_minimumColumnHeight); }
+ LayoutUnit minimumColumnHeight() const { return m_minimumColumnHeight; }
+
+ unsigned forcedBreaksCount() const { return m_forcedBreaksCount; }
+ LayoutUnit forcedBreakOffset() const { return m_forcedBreakOffset; }
+ LayoutUnit maximumDistanceBetweenForcedBreaks() const { return m_maximumDistanceBetweenForcedBreaks; }
+ void clearForcedBreaks()
+ {
+ m_forcedBreaksCount = 0;
+ m_maximumDistanceBetweenForcedBreaks = 0;
+ m_forcedBreakOffset = 0;
+ }
+ void addForcedBreak(LayoutUnit offsetFromFirstPage)
+ {
+ ASSERT(!computedColumnHeight());
+ LayoutUnit distanceFromLastBreak = offsetFromFirstPage - m_forcedBreakOffset;
+ if (!distanceFromLastBreak)
+ return;
+ m_forcedBreaksCount++;
+ m_maximumDistanceBetweenForcedBreaks = std::max(m_maximumDistanceBetweenForcedBreaks, distanceFromLastBreak);
+ m_forcedBreakOffset = offsetFromFirstPage;
+ }
+
private:
virtual void updateLogicalWidth() OVERRIDE;
virtual void updateLogicalHeight() OVERRIDE;
@@ -96,6 +119,12 @@
unsigned m_computedColumnCount;
LayoutUnit m_computedColumnWidth;
LayoutUnit m_computedColumnHeight;
+
+ // The following variables are used when balancing the column set.
+ LayoutUnit m_minimumColumnHeight;
+ unsigned m_forcedBreaksCount; // FIXME: We will ultimately need to cache more information to balance around forced breaks properly.
+ LayoutUnit m_maximumDistanceBetweenForcedBreaks;
+ LayoutUnit m_forcedBreakOffset;
};
} // namespace WebCore
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes