Switch baseline values to LayoutUnits in RenderTableSection.
authorleviw@chromium.org <leviw@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 4 Apr 2012 10:37:36 +0000 (10:37 +0000)
committerleviw@chromium.org <leviw@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 4 Apr 2012 10:37:36 +0000 (10:37 +0000)
https://bugs.webkit.org/show_bug.cgi?id=83017

Reviewed by Julien Chaffraix.

We initially intend to keep table layout on integers post switching the render tree to primarily
use sub-pixel precision. Baseline positions switch to sub-pixel units, and in table layout code are
combined with padding (also sub-pixel), which means we ideally won't truncate their values until
after they're added together. Converting baseline values in RenderTableSection to LayoutUnits.

No new tests. No change in behavior.

* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::calcRowLogicalHeight):
(WebCore::RenderTableSection::layoutRows):
* rendering/RenderTableSection.h:
(RowStruct):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@113162 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderTableSection.cpp
Source/WebCore/rendering/RenderTableSection.h

index 7c480d9..6feec38 100644 (file)
@@ -1,3 +1,23 @@
+2012-04-03  Levi Weintraub  <leviw@chromium.org>
+
+        Switch baseline values to LayoutUnits in RenderTableSection.
+        https://bugs.webkit.org/show_bug.cgi?id=83017
+
+        Reviewed by Julien Chaffraix.
+
+        We initially intend to keep table layout on integers post switching the render tree to primarily
+        use sub-pixel precision. Baseline positions switch to sub-pixel units, and in table layout code are
+        combined with padding (also sub-pixel), which means we ideally won't truncate their values until
+        after they're added together. Converting baseline values in RenderTableSection to LayoutUnits.
+
+        No new tests. No change in behavior.
+
+        * rendering/RenderTableSection.cpp:
+        (WebCore::RenderTableSection::calcRowLogicalHeight):
+        (WebCore::RenderTableSection::layoutRows):
+        * rendering/RenderTableSection.h:
+        (RowStruct):
+
 2012-04-04  Zan Dobersek  <zandobersek@gmail.com>
 
         [GTK] Scrolling doesn't work in WebKit2 since r110185
index 306dda4..1cb1ecd 100644 (file)
@@ -336,7 +336,7 @@ int RenderTableSection::calcRowLogicalHeight()
 
     for (unsigned r = 0; r < m_grid.size(); r++) {
         m_grid[r].baseline = 0;
-        int baselineDescent = 0;
+        LayoutUnit baselineDescent = 0;
 
         // Our base size is the biggest logical height from our cells' styles (excluding row spanning cells).
         m_rowPos[r + 1] = max(m_rowPos[r] + minimumValueForLength(m_grid[r].logicalHeight, 0, viewRenderer), 0);
@@ -377,7 +377,7 @@ int RenderTableSection::calcRowLogicalHeight()
             // find out the baseline
             EVerticalAlign va = cell->style()->verticalAlign();
             if (va == BASELINE || va == TEXT_BOTTOM || va == TEXT_TOP || va == SUPER || va == SUB) {
-                int baselinePosition = cell->cellBaselinePosition();
+                LayoutUnit baselinePosition = cell->cellBaselinePosition();
                 if (baselinePosition > cell->borderBefore() + cell->paddingBefore()) {
                     m_grid[r].baseline = max(m_grid[r].baseline, baselinePosition - cell->intrinsicPaddingBefore());
                     baselineDescent = max(baselineDescent, m_rowPos[cellStartRow] + cellLogicalHeight - (baselinePosition - cell->intrinsicPaddingBefore()));
@@ -388,7 +388,7 @@ int RenderTableSection::calcRowLogicalHeight()
         // do we have baseline aligned elements?
         if (m_grid[r].baseline)
             // increase rowheight if baseline requires
-            m_rowPos[r + 1] = max(m_rowPos[r + 1], m_grid[r].baseline + baselineDescent);
+            m_rowPos[r + 1] = max<int>(m_rowPos[r + 1], m_grid[r].baseline + baselineDescent);
 
         // Add the border-spacing to our final position.
         m_rowPos[r + 1] += m_grid[r].rowRenderer ? spacing : 0;
@@ -620,7 +620,7 @@ void RenderTableSection::layoutRows()
                 // If the baseline moved, we may have to update the data for our row. Find out the new baseline.
                 EVerticalAlign va = cell->style()->verticalAlign();
                 if (va == BASELINE || va == TEXT_BOTTOM || va == TEXT_TOP || va == SUPER || va == SUB) {
-                    int baseline = cell->cellBaselinePosition();
+                    LayoutUnit baseline = cell->cellBaselinePosition();
                     if (baseline > cell->borderBefore() + cell->paddingBefore())
                         m_grid[r].baseline = max(m_grid[r].baseline, baseline);
                 }
@@ -637,7 +637,7 @@ void RenderTableSection::layoutRows()
                 case TEXT_TOP:
                 case TEXT_BOTTOM:
                 case BASELINE: {
-                    int b = cell->cellBaselinePosition();
+                    LayoutUnit b = cell->cellBaselinePosition();
                     if (b > cell->borderBefore() + cell->paddingBefore())
                         intrinsicPaddingBefore = getBaseline(r) - (b - oldIntrinsicPaddingBefore);
                     break;
index ceb187b..9c6869d 100644 (file)
@@ -110,7 +110,7 @@ public:
 
         Row row;
         RenderTableRow* rowRenderer;
-        int baseline;
+        LayoutUnit baseline;
         Length logicalHeight;
     };