Title: [271375] trunk/Source/WebCore
Revision
271375
Author
[email protected]
Date
2021-01-11 13:11:38 -0800 (Mon, 11 Jan 2021)

Log Message

Take aspect-ratio into account for percentage resolution
https://bugs.webkit.org/show_bug.cgi?id=220143

Patch by Rob Buis <[email protected]> on 2021-01-11
Reviewed by Darin Adler.

Address review feedback that I misinterpreted and did not
include in r271293.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::availableLogicalHeightForPercentageComputation const):
* rendering/RenderBox.cpp:
(WebCore::inlineSizeFromAspectRatio):
(WebCore::RenderBox::computeLogicalHeight const):
(WebCore::RenderBox::availableLogicalHeightUsing const):
(WebCore::RenderBox::computePositionedLogicalHeightUsing const):
(WebCore::RenderBox::computeLogicalWidthFromAspectRatio const):
* rendering/RenderBox.h:
(WebCore::RenderBox::blockSizeFromAspectRatio):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (271374 => 271375)


--- trunk/Source/WebCore/ChangeLog	2021-01-11 20:20:37 UTC (rev 271374)
+++ trunk/Source/WebCore/ChangeLog	2021-01-11 21:11:38 UTC (rev 271375)
@@ -1,3 +1,24 @@
+2021-01-11  Rob Buis  <[email protected]>
+
+        Take aspect-ratio into account for percentage resolution
+        https://bugs.webkit.org/show_bug.cgi?id=220143
+
+        Reviewed by Darin Adler.
+
+        Address review feedback that I misinterpreted and did not
+        include in r271293.
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::availableLogicalHeightForPercentageComputation const):
+        * rendering/RenderBox.cpp:
+        (WebCore::inlineSizeFromAspectRatio):
+        (WebCore::RenderBox::computeLogicalHeight const):
+        (WebCore::RenderBox::availableLogicalHeightUsing const):
+        (WebCore::RenderBox::computePositionedLogicalHeightUsing const):
+        (WebCore::RenderBox::computeLogicalWidthFromAspectRatio const):
+        * rendering/RenderBox.h:
+        (WebCore::RenderBox::blockSizeFromAspectRatio):
+
 2021-01-11  Devin Rousso  <[email protected]>
 
         Web Inspector: Debugger: allow breakpoint actions to be evaluated as a user gesture

Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (271374 => 271375)


--- trunk/Source/WebCore/rendering/RenderBlock.cpp	2021-01-11 20:20:37 UTC (rev 271374)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp	2021-01-11 21:11:38 UTC (rev 271375)
@@ -3208,7 +3208,7 @@
         LayoutUnit contentBoxHeight = adjustContentBoxLogicalHeightForBoxSizing((LayoutUnit)styleToUse.logicalHeight().value());
         availableHeight = std::max(0_lu, constrainContentBoxLogicalHeightByMinMax(contentBoxHeight - scrollbarLogicalHeight(), WTF::nullopt));
     } else if (shouldComputeLogicalHeightFromAspectRatio()) {
-        availableHeight = blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), style().logicalAspectRatio(), style().boxSizing(), logicalWidth());
+        availableHeight = blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), LayoutUnit(style().logicalAspectRatio()), style().boxSizing(), logicalWidth());
     } else if (styleToUse.logicalHeight().isPercentOrCalculated() && !isOutOfFlowPositionedWithSpecifiedHeight) {
         Optional<LayoutUnit> heightWithScrollbar = computePercentageLogicalHeight(styleToUse.logicalHeight());
         if (heightWithScrollbar) {

Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (271374 => 271375)


--- trunk/Source/WebCore/rendering/RenderBox.cpp	2021-01-11 20:20:37 UTC (rev 271374)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp	2021-01-11 21:11:38 UTC (rev 271375)
@@ -2435,7 +2435,7 @@
     setMarginEnd(computedValues.m_margins.m_end);
 }
 
-static LayoutUnit inlineSizeFromAspectRatio(LayoutUnit borderPaddingInlineSum, LayoutUnit borderPaddingBlockSum, double aspectRatio, BoxSizing boxSizing, LayoutUnit blockSize)
+static LayoutUnit inlineSizeFromAspectRatio(LayoutUnit borderPaddingInlineSum, LayoutUnit borderPaddingBlockSum, LayoutUnit aspectRatio, BoxSizing boxSizing, LayoutUnit blockSize)
 {
     if (boxSizing == BoxSizing::BorderBox)
         return blockSize * LayoutUnit(aspectRatio);
@@ -2896,7 +2896,7 @@
         if (checkMinMaxHeight) {
             LayoutUnit intrinsicHeight = computedValues.m_extent - borderAndPaddingLogicalHeight();
             if (shouldComputeLogicalHeightFromAspectRatio())
-                heightResult = blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), style().logicalAspectRatio(), style().boxSizing(), logicalWidth());
+                heightResult = blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), LayoutUnit(style().logicalAspectRatio()), style().boxSizing(), logicalWidth());
             else
                 heightResult = computeLogicalHeightUsing(MainOrPreferredSize, style().logicalHeight(), intrinsicHeight).valueOr(computedValues.m_extent);
             heightResult = constrainLogicalHeightByMinMax(heightResult, intrinsicHeight);
@@ -3307,7 +3307,7 @@
     }
 
     if (shouldComputeLogicalHeightFromAspectRatio())
-        return blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), style().logicalAspectRatio(), style().boxSizing(), logicalWidth());
+        return blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), LayoutUnit(style().logicalAspectRatio()), style().boxSizing(), logicalWidth());
 
     if (h.isPercentOrCalculated() && isOutOfFlowPositioned() && !isRenderFragmentedFlow()) {
         // FIXME: This is wrong if the containingBlock has a perpendicular writing mode.
@@ -4069,7 +4069,7 @@
         if (logicalHeightLength.isIntrinsic())
             resolvedLogicalHeight = computeIntrinsicLogicalContentHeightUsing(logicalHeightLength, contentLogicalHeight, bordersPlusPadding).value();
         else if (fromAspectRatio) {
-            resolvedLogicalHeight = blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), style().logicalAspectRatio() , style().boxSizing(), logicalWidth());
+            resolvedLogicalHeight = blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), LayoutUnit(style().logicalAspectRatio()), style().boxSizing(), logicalWidth());
             resolvedLogicalHeight = std::max(LayoutUnit(), resolvedLogicalHeight - bordersPlusPadding);
         } else
             resolvedLogicalHeight = adjustContentBoxLogicalHeightForBoxSizing(valueForLength(logicalHeightLength, containerLogicalHeight));
@@ -5027,7 +5027,7 @@
     auto computedValues = computeLogicalHeight(logicalHeight(), logicalTop());
     LayoutUnit logicalHeightforAspectRatio = computedValues.m_extent;
 
-    auto logicalWidth = inlineSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), style().logicalAspectRatio(), style().boxSizing(), logicalHeightforAspectRatio);
+    auto logicalWidth = inlineSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), LayoutUnit(style().logicalAspectRatio()), style().boxSizing(), logicalHeightforAspectRatio);
 
     LayoutUnit containerWidthInInlineDirection = std::max<LayoutUnit>(0, containingBlockLogicalWidthForContentInFragment(fragment));
     return constrainLogicalWidthInFragmentByMinMax(logicalWidth, containerWidthInInlineDirection, *containingBlock(), fragment);

Modified: trunk/Source/WebCore/rendering/RenderBox.h (271374 => 271375)


--- trunk/Source/WebCore/rendering/RenderBox.h	2021-01-11 20:20:37 UTC (rev 271374)
+++ trunk/Source/WebCore/rendering/RenderBox.h	2021-01-11 21:11:38 UTC (rev 271375)
@@ -701,11 +701,11 @@
     bool shouldComputeLogicalWidthFromAspectRatioAndInsets() const;
     LayoutUnit computeLogicalWidthFromAspectRatio(RenderFragmentContainer* = nullptr) const;
 
-    static LayoutUnit blockSizeFromAspectRatio(LayoutUnit borderPaddingInlineSum, LayoutUnit borderPaddingBlockSum, double aspectRatio, BoxSizing boxSizing, LayoutUnit inlineSize)
+    static LayoutUnit blockSizeFromAspectRatio(LayoutUnit borderPaddingInlineSum, LayoutUnit borderPaddingBlockSum, LayoutUnit aspectRatio, BoxSizing boxSizing, LayoutUnit inlineSize)
     {
         if (boxSizing == BoxSizing::BorderBox)
-            return inlineSize / LayoutUnit(aspectRatio);
-        return ((inlineSize - borderPaddingInlineSum) / LayoutUnit(aspectRatio)) + borderPaddingBlockSum;
+            return inlineSize / aspectRatio;
+        return ((inlineSize - borderPaddingInlineSum) / aspectRatio) + borderPaddingBlockSum;
     }
 
 private:
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to