OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2011 Apple 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 | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 1610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1621 | 1621 |
1622 breadth = end - start; | 1622 breadth = end - start; |
1623 offset = start; | 1623 offset = start; |
1624 | 1624 |
1625 if (isForColumns && !styleRef().isLeftToRightDirection() && !child.styleRef(
).hasStaticInlinePosition(child.isHorizontalWritingMode())) { | 1625 if (isForColumns && !styleRef().isLeftToRightDirection() && !child.styleRef(
).hasStaticInlinePosition(child.isHorizontalWritingMode())) { |
1626 // If the child doesn't have a static inline position (i.e. "left" and/o
r "right" aren't "auto", | 1626 // If the child doesn't have a static inline position (i.e. "left" and/o
r "right" aren't "auto", |
1627 // we need to calculate the offset from the left (even if we're in RTL). | 1627 // we need to calculate the offset from the left (even if we're in RTL). |
1628 if (endIsAuto) { | 1628 if (endIsAuto) { |
1629 offset = LayoutUnit(); | 1629 offset = LayoutUnit(); |
1630 } else { | 1630 } else { |
1631 alignmentOffset = m_columnPositions[0] - borderAndPaddingStart(); | 1631 offset = translateRTLCoordinate(m_columnPositions[endLine]) - border
Left(); |
1632 LayoutUnit offsetFromLastLine = m_columnPositions[m_columnPositions.
size() - 1] - m_columnPositions[endLine]; | |
1633 offset = paddingLeft() + alignmentOffset + offsetFromLastLine; | |
1634 | 1632 |
1635 if (endLine > firstExplicitLine && endLine < lastExplicitLine) { | 1633 if (endLine > firstExplicitLine && endLine < lastExplicitLine) { |
1636 offset += guttersSize(direction, 2); | 1634 offset += guttersSize(direction, 2); |
1637 offset += isForColumns ? m_offsetBetweenColumns : m_offsetBetwee
nRows; | 1635 offset += isForColumns ? m_offsetBetweenColumns : m_offsetBetwee
nRows; |
1638 } | 1636 } |
1639 } | 1637 } |
1640 } | 1638 } |
1641 | 1639 |
1642 if (child.parent() == this && !startIsAuto) { | 1640 if (child.parent() == this && !startIsAuto) { |
1643 // If column/row start is "auto" the static position has been already se
t in prepareChildForPositionedLayout(). | 1641 // If column/row start is "auto" the static position has been already se
t in prepareChildForPositionedLayout(). |
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2118 return {styleRef().isLeftToRightDirection() ? LayoutUnit() : availab
leFreeSpace, LayoutUnit()}; | 2116 return {styleRef().isLeftToRightDirection() ? LayoutUnit() : availab
leFreeSpace, LayoutUnit()}; |
2119 return {LayoutUnit(), LayoutUnit()}; | 2117 return {LayoutUnit(), LayoutUnit()}; |
2120 case ContentPositionNormal: | 2118 case ContentPositionNormal: |
2121 break; | 2119 break; |
2122 } | 2120 } |
2123 | 2121 |
2124 ASSERT_NOT_REACHED(); | 2122 ASSERT_NOT_REACHED(); |
2125 return {LayoutUnit(), LayoutUnit()}; | 2123 return {LayoutUnit(), LayoutUnit()}; |
2126 } | 2124 } |
2127 | 2125 |
| 2126 LayoutUnit LayoutGrid::translateRTLCoordinate(LayoutUnit coordinate) const |
| 2127 { |
| 2128 ASSERT(!styleRef().isLeftToRightDirection()); |
| 2129 |
| 2130 LayoutUnit alignmentOffset = m_columnPositions[0] - borderAndPaddingStart(); |
| 2131 LayoutUnit rightGridEdgePosition = m_columnPositions[m_columnPositions.size(
) - 1]; |
| 2132 return borderAndPaddingLogicalLeft() + rightGridEdgePosition + alignmentOffs
et - coordinate; |
| 2133 } |
| 2134 |
2128 LayoutPoint LayoutGrid::findChildLogicalPosition(const LayoutBox& child, GridSiz
ingData& sizingData) const | 2135 LayoutPoint LayoutGrid::findChildLogicalPosition(const LayoutBox& child, GridSiz
ingData& sizingData) const |
2129 { | 2136 { |
2130 LayoutUnit rowAxisOffset = rowAxisOffsetForChild(child, sizingData); | 2137 LayoutUnit rowAxisOffset = rowAxisOffsetForChild(child, sizingData); |
2131 // We stored m_columnPosition's data ignoring the direction, hence we might
need now | 2138 // We stored m_columnPosition's data ignoring the direction, hence we might
need now |
2132 // to translate positions from RTL to LTR, as it's more convenient for paint
ing. | 2139 // to translate positions from RTL to LTR, as it's more convenient for paint
ing. |
2133 if (!style()->isLeftToRightDirection()) { | 2140 if (!style()->isLeftToRightDirection()) |
2134 LayoutUnit alignmentOffset = m_columnPositions[0] - borderAndPaddingSta
rt(); | 2141 rowAxisOffset = translateRTLCoordinate(rowAxisOffset) - child.logicalWid
th(); |
2135 LayoutUnit rightGridEdgePosition = m_columnPositions[m_columnPositions.s
ize() - 1] + alignmentOffset + borderAndPaddingLogicalLeft(); | |
2136 rowAxisOffset = rightGridEdgePosition - (rowAxisOffset + child.logicalWi
dth()); | |
2137 } | |
2138 | 2142 |
2139 return LayoutPoint(rowAxisOffset, columnAxisOffsetForChild(child, sizingData
)); | 2143 return LayoutPoint(rowAxisOffset, columnAxisOffsetForChild(child, sizingData
)); |
2140 } | 2144 } |
2141 | 2145 |
2142 void LayoutGrid::paintChildren(const PaintInfo& paintInfo, const LayoutPoint& pa
intOffset) const | 2146 void LayoutGrid::paintChildren(const PaintInfo& paintInfo, const LayoutPoint& pa
intOffset) const |
2143 { | 2147 { |
2144 GridPainter(*this).paintChildren(paintInfo, paintOffset); | 2148 GridPainter(*this).paintChildren(paintInfo, paintOffset); |
2145 } | 2149 } |
2146 | 2150 |
2147 } // namespace blink | 2151 } // namespace blink |
OLD | NEW |