Changeset 271375 in webkit
- Timestamp:
- Jan 11, 2021 1:11:38 PM (18 months ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
rendering/RenderBlock.cpp (modified) (1 diff)
-
rendering/RenderBox.cpp (modified) (5 diffs)
-
rendering/RenderBox.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r271373 r271375 1 2021-01-11 Rob Buis <rbuis@igalia.com> 2 3 Take aspect-ratio into account for percentage resolution 4 https://bugs.webkit.org/show_bug.cgi?id=220143 5 6 Reviewed by Darin Adler. 7 8 Address review feedback that I misinterpreted and did not 9 include in r271293. 10 11 * rendering/RenderBlock.cpp: 12 (WebCore::RenderBlock::availableLogicalHeightForPercentageComputation const): 13 * rendering/RenderBox.cpp: 14 (WebCore::inlineSizeFromAspectRatio): 15 (WebCore::RenderBox::computeLogicalHeight const): 16 (WebCore::RenderBox::availableLogicalHeightUsing const): 17 (WebCore::RenderBox::computePositionedLogicalHeightUsing const): 18 (WebCore::RenderBox::computeLogicalWidthFromAspectRatio const): 19 * rendering/RenderBox.h: 20 (WebCore::RenderBox::blockSizeFromAspectRatio): 21 1 22 2021-01-11 Devin Rousso <drousso@apple.com> 2 23 -
trunk/Source/WebCore/rendering/RenderBlock.cpp
r271293 r271375 3209 3209 availableHeight = std::max(0_lu, constrainContentBoxLogicalHeightByMinMax(contentBoxHeight - scrollbarLogicalHeight(), WTF::nullopt)); 3210 3210 } else if (shouldComputeLogicalHeightFromAspectRatio()) { 3211 availableHeight = blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), style().logicalAspectRatio(), style().boxSizing(), logicalWidth());3211 availableHeight = blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), LayoutUnit(style().logicalAspectRatio()), style().boxSizing(), logicalWidth()); 3212 3212 } else if (styleToUse.logicalHeight().isPercentOrCalculated() && !isOutOfFlowPositionedWithSpecifiedHeight) { 3213 3213 Optional<LayoutUnit> heightWithScrollbar = computePercentageLogicalHeight(styleToUse.logicalHeight()); -
trunk/Source/WebCore/rendering/RenderBox.cpp
r271293 r271375 2436 2436 } 2437 2437 2438 static LayoutUnit inlineSizeFromAspectRatio(LayoutUnit borderPaddingInlineSum, LayoutUnit borderPaddingBlockSum, doubleaspectRatio, BoxSizing boxSizing, LayoutUnit blockSize)2438 static LayoutUnit inlineSizeFromAspectRatio(LayoutUnit borderPaddingInlineSum, LayoutUnit borderPaddingBlockSum, LayoutUnit aspectRatio, BoxSizing boxSizing, LayoutUnit blockSize) 2439 2439 { 2440 2440 if (boxSizing == BoxSizing::BorderBox) … … 2897 2897 LayoutUnit intrinsicHeight = computedValues.m_extent - borderAndPaddingLogicalHeight(); 2898 2898 if (shouldComputeLogicalHeightFromAspectRatio()) 2899 heightResult = blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), style().logicalAspectRatio(), style().boxSizing(), logicalWidth());2899 heightResult = blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), LayoutUnit(style().logicalAspectRatio()), style().boxSizing(), logicalWidth()); 2900 2900 else 2901 2901 heightResult = computeLogicalHeightUsing(MainOrPreferredSize, style().logicalHeight(), intrinsicHeight).valueOr(computedValues.m_extent); … … 3308 3308 3309 3309 if (shouldComputeLogicalHeightFromAspectRatio()) 3310 return blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), style().logicalAspectRatio(), style().boxSizing(), logicalWidth());3310 return blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), LayoutUnit(style().logicalAspectRatio()), style().boxSizing(), logicalWidth()); 3311 3311 3312 3312 if (h.isPercentOrCalculated() && isOutOfFlowPositioned() && !isRenderFragmentedFlow()) { … … 4070 4070 resolvedLogicalHeight = computeIntrinsicLogicalContentHeightUsing(logicalHeightLength, contentLogicalHeight, bordersPlusPadding).value(); 4071 4071 else if (fromAspectRatio) { 4072 resolvedLogicalHeight = blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), style().logicalAspectRatio(), style().boxSizing(), logicalWidth());4072 resolvedLogicalHeight = blockSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), LayoutUnit(style().logicalAspectRatio()), style().boxSizing(), logicalWidth()); 4073 4073 resolvedLogicalHeight = std::max(LayoutUnit(), resolvedLogicalHeight - bordersPlusPadding); 4074 4074 } else … … 5028 5028 LayoutUnit logicalHeightforAspectRatio = computedValues.m_extent; 5029 5029 5030 auto logicalWidth = inlineSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), style().logicalAspectRatio(), style().boxSizing(), logicalHeightforAspectRatio);5030 auto logicalWidth = inlineSizeFromAspectRatio(horizontalBorderAndPaddingExtent(), verticalBorderAndPaddingExtent(), LayoutUnit(style().logicalAspectRatio()), style().boxSizing(), logicalHeightforAspectRatio); 5031 5031 5032 5032 LayoutUnit containerWidthInInlineDirection = std::max<LayoutUnit>(0, containingBlockLogicalWidthForContentInFragment(fragment)); -
trunk/Source/WebCore/rendering/RenderBox.h
r271293 r271375 702 702 LayoutUnit computeLogicalWidthFromAspectRatio(RenderFragmentContainer* = nullptr) const; 703 703 704 static LayoutUnit blockSizeFromAspectRatio(LayoutUnit borderPaddingInlineSum, LayoutUnit borderPaddingBlockSum, doubleaspectRatio, BoxSizing boxSizing, LayoutUnit inlineSize)704 static LayoutUnit blockSizeFromAspectRatio(LayoutUnit borderPaddingInlineSum, LayoutUnit borderPaddingBlockSum, LayoutUnit aspectRatio, BoxSizing boxSizing, LayoutUnit inlineSize) 705 705 { 706 706 if (boxSizing == BoxSizing::BorderBox) 707 return inlineSize / LayoutUnit(aspectRatio);708 return ((inlineSize - borderPaddingInlineSum) / LayoutUnit(aspectRatio)) + borderPaddingBlockSum;707 return inlineSize / aspectRatio; 708 return ((inlineSize - borderPaddingInlineSum) / aspectRatio) + borderPaddingBlockSum; 709 709 } 710 710
Note: See TracChangeset
for help on using the changeset viewer.