| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 1052 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1063 return isHorizontalFlow() && child.style()->height().isAuto(); | 1063 return isHorizontalFlow() && child.style()->height().isAuto(); |
| 1064 } | 1064 } |
| 1065 | 1065 |
| 1066 void LayoutFlexibleBox::layoutAndPlaceChildren(LayoutUnit& crossAxisOffset, cons
t OrderedFlexItemList& children, const Vector<LayoutUnit, 16>& childSizes, Layou
tUnit availableFreeSpace, bool relayoutChildren, Vector<LineContext>& lineContex
ts) | 1066 void LayoutFlexibleBox::layoutAndPlaceChildren(LayoutUnit& crossAxisOffset, cons
t OrderedFlexItemList& children, const Vector<LayoutUnit, 16>& childSizes, Layou
tUnit availableFreeSpace, bool relayoutChildren, Vector<LineContext>& lineContex
ts) |
| 1067 { | 1067 { |
| 1068 ASSERT(childSizes.size() == children.size()); | 1068 ASSERT(childSizes.size() == children.size()); |
| 1069 | 1069 |
| 1070 size_t numberOfChildrenForJustifyContent = numberOfInFlowPositionedChildren(
children); | 1070 size_t numberOfChildrenForJustifyContent = numberOfInFlowPositionedChildren(
children); |
| 1071 LayoutUnit autoMarginOffset = autoMarginOffsetInMainAxis(children, available
FreeSpace); | 1071 LayoutUnit autoMarginOffset = autoMarginOffsetInMainAxis(children, available
FreeSpace); |
| 1072 LayoutUnit mainAxisOffset = flowAwareBorderStart() + flowAwarePaddingStart()
; | 1072 LayoutUnit mainAxisOffset = flowAwareBorderStart() + flowAwarePaddingStart()
; |
| 1073 mainAxisOffset += initialJustifyContentOffset(availableFreeSpace, style()->j
ustifyContent(), style()->justifyContentDistribution(), numberOfChildrenForJusti
fyContent); | 1073 mainAxisOffset += initialJustifyContentOffset(availableFreeSpace, style()->j
ustifyContentPosition(), style()->justifyContentDistribution(), numberOfChildren
ForJustifyContent); |
| 1074 if (style()->flexDirection() == FlowRowReverse) | 1074 if (style()->flexDirection() == FlowRowReverse) |
| 1075 mainAxisOffset += isHorizontalFlow() ? verticalScrollbarWidth() : horizo
ntalScrollbarHeight(); | 1075 mainAxisOffset += isHorizontalFlow() ? verticalScrollbarWidth() : horizo
ntalScrollbarHeight(); |
| 1076 | 1076 |
| 1077 LayoutUnit totalMainExtent = mainAxisExtent(); | 1077 LayoutUnit totalMainExtent = mainAxisExtent(); |
| 1078 LayoutUnit maxAscent = 0, maxDescent = 0; // Used when align-items: baseline
. | 1078 LayoutUnit maxAscent = 0, maxDescent = 0; // Used when align-items: baseline
. |
| 1079 LayoutUnit maxChildCrossAxisExtent = 0; | 1079 LayoutUnit maxChildCrossAxisExtent = 0; |
| 1080 size_t seenInFlowPositionedChildren = 0; | 1080 size_t seenInFlowPositionedChildren = 0; |
| 1081 bool shouldFlipMainAxis = !isColumnFlow() && !isLeftToRightFlow(); | 1081 bool shouldFlipMainAxis = !isColumnFlow() && !isLeftToRightFlow(); |
| 1082 for (size_t i = 0; i < children.size(); ++i) { | 1082 for (size_t i = 0; i < children.size(); ++i) { |
| 1083 LayoutBox* child = children[i]; | 1083 LayoutBox* child = children[i]; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1154 crossAxisOffset += maxChildCrossAxisExtent; | 1154 crossAxisOffset += maxChildCrossAxisExtent; |
| 1155 } | 1155 } |
| 1156 | 1156 |
| 1157 void LayoutFlexibleBox::layoutColumnReverse(const OrderedFlexItemList& children,
LayoutUnit crossAxisOffset, LayoutUnit availableFreeSpace) | 1157 void LayoutFlexibleBox::layoutColumnReverse(const OrderedFlexItemList& children,
LayoutUnit crossAxisOffset, LayoutUnit availableFreeSpace) |
| 1158 { | 1158 { |
| 1159 // This is similar to the logic in layoutAndPlaceChildren, except we place t
he children | 1159 // This is similar to the logic in layoutAndPlaceChildren, except we place t
he children |
| 1160 // starting from the end of the flexbox. We also don't need to layout anythi
ng since we're | 1160 // starting from the end of the flexbox. We also don't need to layout anythi
ng since we're |
| 1161 // just moving the children to a new position. | 1161 // just moving the children to a new position. |
| 1162 size_t numberOfChildrenForJustifyContent = numberOfInFlowPositionedChildren(
children); | 1162 size_t numberOfChildrenForJustifyContent = numberOfInFlowPositionedChildren(
children); |
| 1163 LayoutUnit mainAxisOffset = logicalHeight() - flowAwareBorderEnd() - flowAwa
rePaddingEnd(); | 1163 LayoutUnit mainAxisOffset = logicalHeight() - flowAwareBorderEnd() - flowAwa
rePaddingEnd(); |
| 1164 mainAxisOffset -= initialJustifyContentOffset(availableFreeSpace, style()->j
ustifyContent(), style()->justifyContentDistribution(), numberOfChildrenForJusti
fyContent); | 1164 mainAxisOffset -= initialJustifyContentOffset(availableFreeSpace, style()->j
ustifyContentPosition(), style()->justifyContentDistribution(), numberOfChildren
ForJustifyContent); |
| 1165 mainAxisOffset -= isHorizontalFlow() ? verticalScrollbarWidth() : horizontal
ScrollbarHeight(); | 1165 mainAxisOffset -= isHorizontalFlow() ? verticalScrollbarWidth() : horizontal
ScrollbarHeight(); |
| 1166 | 1166 |
| 1167 size_t seenInFlowPositionedChildren = 0; | 1167 size_t seenInFlowPositionedChildren = 0; |
| 1168 for (size_t i = 0; i < children.size(); ++i) { | 1168 for (size_t i = 0; i < children.size(); ++i) { |
| 1169 LayoutBox* child = children[i]; | 1169 LayoutBox* child = children[i]; |
| 1170 | 1170 |
| 1171 if (child->isOutOfFlowPositioned()) { | 1171 if (child->isOutOfFlowPositioned()) { |
| 1172 child->layer()->setStaticBlockPosition(mainAxisOffset); | 1172 child->layer()->setStaticBlockPosition(mainAxisOffset); |
| 1173 continue; | 1173 continue; |
| 1174 } | 1174 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1223 } | 1223 } |
| 1224 | 1224 |
| 1225 if (style()->alignContent() == ContentPositionFlexStart) | 1225 if (style()->alignContent() == ContentPositionFlexStart) |
| 1226 return; | 1226 return; |
| 1227 | 1227 |
| 1228 LayoutUnit availableCrossAxisSpace = crossAxisContentExtent(); | 1228 LayoutUnit availableCrossAxisSpace = crossAxisContentExtent(); |
| 1229 for (size_t i = 0; i < lineContexts.size(); ++i) | 1229 for (size_t i = 0; i < lineContexts.size(); ++i) |
| 1230 availableCrossAxisSpace -= lineContexts[i].crossAxisExtent; | 1230 availableCrossAxisSpace -= lineContexts[i].crossAxisExtent; |
| 1231 | 1231 |
| 1232 LayoutBox* child = m_orderIterator.first(); | 1232 LayoutBox* child = m_orderIterator.first(); |
| 1233 LayoutUnit lineOffset = initialAlignContentOffset(availableCrossAxisSpace, s
tyle()->alignContent(), style()->alignContentDistribution(), lineContexts.size()
); | 1233 LayoutUnit lineOffset = initialAlignContentOffset(availableCrossAxisSpace, s
tyle()->alignContentPosition(), style()->alignContentDistribution(), lineContext
s.size()); |
| 1234 for (unsigned lineNumber = 0; lineNumber < lineContexts.size(); ++lineNumber
) { | 1234 for (unsigned lineNumber = 0; lineNumber < lineContexts.size(); ++lineNumber
) { |
| 1235 lineContexts[lineNumber].crossAxisOffset += lineOffset; | 1235 lineContexts[lineNumber].crossAxisOffset += lineOffset; |
| 1236 for (size_t childNumber = 0; childNumber < lineContexts[lineNumber].numb
erOfChildren; ++childNumber, child = m_orderIterator.next()) | 1236 for (size_t childNumber = 0; childNumber < lineContexts[lineNumber].numb
erOfChildren; ++childNumber, child = m_orderIterator.next()) |
| 1237 adjustAlignmentForChild(*child, lineOffset); | 1237 adjustAlignmentForChild(*child, lineOffset); |
| 1238 | 1238 |
| 1239 if (style()->alignContentDistribution() == ContentDistributionStretch &&
availableCrossAxisSpace > 0) | 1239 if (style()->alignContentDistribution() == ContentDistributionStretch &&
availableCrossAxisSpace > 0) |
| 1240 lineContexts[lineNumber].crossAxisExtent += availableCrossAxisSpace
/ static_cast<unsigned>(lineContexts.size()); | 1240 lineContexts[lineNumber].crossAxisExtent += availableCrossAxisSpace
/ static_cast<unsigned>(lineContexts.size()); |
| 1241 | 1241 |
| 1242 lineOffset += alignContentSpaceBetweenChildren(availableCrossAxisSpace,
style()->alignContentDistribution(), lineContexts.size()); | 1242 lineOffset += alignContentSpaceBetweenChildren(availableCrossAxisSpace,
style()->alignContentDistribution(), lineContexts.size()); |
| 1243 } | 1243 } |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1406 ASSERT(child); | 1406 ASSERT(child); |
| 1407 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE
xtent; | 1407 LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisE
xtent; |
| 1408 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset
- crossAxisStartEdge; | 1408 LayoutUnit originalOffset = lineContexts[lineNumber].crossAxisOffset
- crossAxisStartEdge; |
| 1409 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi
sExtent; | 1409 LayoutUnit newOffset = contentExtent - originalOffset - lineCrossAxi
sExtent; |
| 1410 adjustAlignmentForChild(*child, newOffset - originalOffset); | 1410 adjustAlignmentForChild(*child, newOffset - originalOffset); |
| 1411 } | 1411 } |
| 1412 } | 1412 } |
| 1413 } | 1413 } |
| 1414 | 1414 |
| 1415 } | 1415 } |
| OLD | NEW |