⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 136146 in webkit


Ignore:
Timestamp:
Nov 29, 2012, 12:11:06 PM (14 years ago)
Author:
hyatt@apple.com
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):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r136145 r136146  
     12012-11-29  David Hyatt  <hyatt@apple.com>
     2
     3        [New Multicolumn] Add minimum column height tracking and forced break tracking to column sets.
     4        https://bugs.webkit.org/show_bug.cgi?id=103657
     5
     6        Reviewed by Simon Fraser.
     7
     8        * rendering/RenderMultiColumnSet.cpp:
     9        (WebCore::RenderMultiColumnSet::RenderMultiColumnSet):
     10        * rendering/RenderMultiColumnSet.h:
     11        (WebCore::RenderMultiColumnSet::updateMinimumColumnHeight):
     12        (WebCore::RenderMultiColumnSet::minimumColumnHeight):
     13        (RenderMultiColumnSet):
     14        (WebCore::RenderMultiColumnSet::forcedBreaksCount):
     15        (WebCore::RenderMultiColumnSet::forcedBreakOffset):
     16        (WebCore::RenderMultiColumnSet::maximumDistanceBetweenForcedBreaks):
     17        (WebCore::RenderMultiColumnSet::clearForcedBreaks):
     18        (WebCore::RenderMultiColumnSet::addForcedBreak):
     19
    1202012-11-29  Pavel Feldman  <pfeldman@chromium.org>
    221
  • trunk/Source/WebCore/rendering/RenderMultiColumnSet.cpp

    r133779 r136146  
    4242    , m_computedColumnWidth(0)
    4343    , m_computedColumnHeight(0)
     44    , m_minimumColumnHeight(0)
     45    , m_forcedBreaksCount(0)
     46    , m_maximumDistanceBetweenForcedBreaks(0)
     47    , m_forcedBreakOffset(0)
    4448{
    4549}
  • trunk/Source/WebCore/rendering/RenderMultiColumnSet.h

    r131351 r136146  
    6262    }
    6363
     64    void updateMinimumColumnHeight(LayoutUnit height) { m_minimumColumnHeight = std::max(height, m_minimumColumnHeight); }
     65    LayoutUnit minimumColumnHeight() const { return m_minimumColumnHeight; }
     66
     67    unsigned forcedBreaksCount() const { return m_forcedBreaksCount; }
     68    LayoutUnit forcedBreakOffset() const { return m_forcedBreakOffset; }
     69    LayoutUnit maximumDistanceBetweenForcedBreaks() const { return m_maximumDistanceBetweenForcedBreaks; }
     70    void clearForcedBreaks()
     71    {
     72        m_forcedBreaksCount = 0;
     73        m_maximumDistanceBetweenForcedBreaks = 0;
     74        m_forcedBreakOffset = 0;
     75    }
     76    void addForcedBreak(LayoutUnit offsetFromFirstPage)
     77    {
     78        ASSERT(!computedColumnHeight());
     79        LayoutUnit distanceFromLastBreak = offsetFromFirstPage - m_forcedBreakOffset;
     80        if (!distanceFromLastBreak)
     81            return;
     82        m_forcedBreaksCount++;
     83        m_maximumDistanceBetweenForcedBreaks = std::max(m_maximumDistanceBetweenForcedBreaks, distanceFromLastBreak);
     84        m_forcedBreakOffset = offsetFromFirstPage;
     85    }
     86
    6487private:
    6588    virtual void updateLogicalWidth() OVERRIDE;
    … …  
    97120    LayoutUnit m_computedColumnWidth;
    98121    LayoutUnit m_computedColumnHeight;
     122   
     123    // The following variables are used when balancing the column set.
     124    LayoutUnit m_minimumColumnHeight;
     125    unsigned m_forcedBreaksCount; // FIXME: We will ultimately need to cache more information to balance around forced breaks properly.
     126    LayoutUnit m_maximumDistanceBetweenForcedBreaks;
     127    LayoutUnit m_forcedBreakOffset;
    99128};
    100129
Note: See TracChangeset for help on using the changeset viewer.