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

Reply via email to