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 1596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1607 else | 1607 else |
1608 end = m_rowPositions[endLine] - m_rowPositions[0] + paddingBefore(); | 1608 end = m_rowPositions[endLine] - m_rowPositions[0] + paddingBefore(); |
1609 | 1609 |
1610 // These vectors store line positions including gaps, but we shouldn't c
onsider them for the edges of the grid. | 1610 // These vectors store line positions including gaps, but we shouldn't c
onsider them for the edges of the grid. |
1611 if (endLine > firstExplicitLine && endLine < lastExplicitLine) { | 1611 if (endLine > firstExplicitLine && endLine < lastExplicitLine) { |
1612 end -= guttersSize(direction, 2); | 1612 end -= guttersSize(direction, 2); |
1613 end -= isForColumns ? m_offsetBetweenColumns : m_offsetBetweenRows; | 1613 end -= isForColumns ? m_offsetBetweenColumns : m_offsetBetweenRows; |
1614 } | 1614 } |
1615 } | 1615 } |
1616 | 1616 |
1617 LayoutUnit alignmentOffset = isForColumns ? m_columnPositions[0] - borderAnd
PaddingStart() : m_rowPositions[0] - borderAndPaddingBefore(); | 1617 LayoutUnit alignmentOffset = isForColumns ? m_columnPositions[0] - borderAnd
PaddingLogicalLeft() : m_rowPositions[0] - borderAndPaddingBefore(); |
1618 if (isForColumns && !styleRef().isLeftToRightDirection()) | 1618 if (isForColumns && !styleRef().isLeftToRightDirection()) |
1619 alignmentOffset = contentLogicalWidth() - (m_columnPositions[m_columnPos
itions.size() - 1] - borderAndPaddingStart()); | 1619 alignmentOffset = contentLogicalWidth() - (m_columnPositions[m_columnPos
itions.size() - 1] - borderAndPaddingLogicalLeft()); |
1620 | 1620 |
1621 if (!startIsAuto) | 1621 if (!startIsAuto) |
1622 start += alignmentOffset; | 1622 start += alignmentOffset; |
1623 if (!endIsAuto) | 1623 if (!endIsAuto) |
1624 end += alignmentOffset; | 1624 end += alignmentOffset; |
1625 | 1625 |
1626 breadth = end - start; | 1626 breadth = end - start; |
1627 offset = start; | 1627 offset = start; |
1628 | 1628 |
1629 if (isForColumns && !styleRef().isLeftToRightDirection() && !child.styleRef(
).hasStaticInlinePosition(child.isHorizontalWritingMode())) { | 1629 if (isForColumns && !styleRef().isLeftToRightDirection() && !child.styleRef(
).hasStaticInlinePosition(child.isHorizontalWritingMode())) { |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1698 // The grid container's frame elements (border, padding and <content-positio
n> offset) are sensible to the | 1698 // The grid container's frame elements (border, padding and <content-positio
n> offset) are sensible to the |
1699 // inline-axis flow direction. However, column lines positions are 'directio
n' unaware. This simplification | 1699 // inline-axis flow direction. However, column lines positions are 'directio
n' unaware. This simplification |
1700 // allows us to use the same indexes to identify the columns independently o
n the inline-axis direction. | 1700 // allows us to use the same indexes to identify the columns independently o
n the inline-axis direction. |
1701 unsigned numberOfTracks = sizingData.columnTracks.size(); | 1701 unsigned numberOfTracks = sizingData.columnTracks.size(); |
1702 unsigned numberOfLines = numberOfTracks + 1; | 1702 unsigned numberOfLines = numberOfTracks + 1; |
1703 unsigned lastLine = numberOfLines - 1; | 1703 unsigned lastLine = numberOfLines - 1; |
1704 unsigned nextToLastLine = numberOfLines - 2; | 1704 unsigned nextToLastLine = numberOfLines - 2; |
1705 ContentAlignmentData offset = computeContentPositionAndDistributionOffset(Fo
rColumns, sizingData.freeSpaceForDirection(ForColumns), numberOfTracks); | 1705 ContentAlignmentData offset = computeContentPositionAndDistributionOffset(Fo
rColumns, sizingData.freeSpaceForDirection(ForColumns), numberOfTracks); |
1706 LayoutUnit trackGap = guttersSize(ForColumns, 2); | 1706 LayoutUnit trackGap = guttersSize(ForColumns, 2); |
1707 m_columnPositions.resize(numberOfLines); | 1707 m_columnPositions.resize(numberOfLines); |
1708 m_columnPositions[0] = borderAndPaddingStart() + offset.positionOffset; | 1708 m_columnPositions[0] = borderAndPaddingLogicalLeft() + offset.positionOffset
; |
1709 for (unsigned i = 0; i < nextToLastLine; ++i) | 1709 for (unsigned i = 0; i < nextToLastLine; ++i) |
1710 m_columnPositions[i + 1] = m_columnPositions[i] + offset.distributionOff
set + sizingData.columnTracks[i].baseSize() + trackGap; | 1710 m_columnPositions[i + 1] = m_columnPositions[i] + offset.distributionOff
set + sizingData.columnTracks[i].baseSize() + trackGap; |
1711 m_columnPositions[lastLine] = m_columnPositions[nextToLastLine] + sizingData
.columnTracks[nextToLastLine].baseSize(); | 1711 m_columnPositions[lastLine] = m_columnPositions[nextToLastLine] + sizingData
.columnTracks[nextToLastLine].baseSize(); |
1712 m_offsetBetweenColumns = offset.distributionOffset; | 1712 m_offsetBetweenColumns = offset.distributionOffset; |
1713 | 1713 |
1714 numberOfTracks = sizingData.rowTracks.size(); | 1714 numberOfTracks = sizingData.rowTracks.size(); |
1715 numberOfLines = numberOfTracks + 1; | 1715 numberOfLines = numberOfTracks + 1; |
1716 lastLine = numberOfLines - 1; | 1716 lastLine = numberOfLines - 1; |
1717 nextToLastLine = numberOfLines - 2; | 1717 nextToLastLine = numberOfLines - 2; |
1718 offset = computeContentPositionAndDistributionOffset(ForRows, sizingData.fre
eSpaceForDirection(ForRows), numberOfTracks); | 1718 offset = computeContentPositionAndDistributionOffset(ForRows, sizingData.fre
eSpaceForDirection(ForRows), numberOfTracks); |
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2118 } | 2118 } |
2119 | 2119 |
2120 ASSERT_NOT_REACHED(); | 2120 ASSERT_NOT_REACHED(); |
2121 return {LayoutUnit(), LayoutUnit()}; | 2121 return {LayoutUnit(), LayoutUnit()}; |
2122 } | 2122 } |
2123 | 2123 |
2124 LayoutUnit LayoutGrid::translateRTLCoordinate(LayoutUnit coordinate) const | 2124 LayoutUnit LayoutGrid::translateRTLCoordinate(LayoutUnit coordinate) const |
2125 { | 2125 { |
2126 ASSERT(!styleRef().isLeftToRightDirection()); | 2126 ASSERT(!styleRef().isLeftToRightDirection()); |
2127 | 2127 |
2128 LayoutUnit alignmentOffset = m_columnPositions[0] - borderAndPaddingStart(); | 2128 LayoutUnit alignmentOffset = m_columnPositions[0]; |
2129 LayoutUnit rightGridEdgePosition = m_columnPositions[m_columnPositions.size(
) - 1]; | 2129 LayoutUnit rightGridEdgePosition = m_columnPositions[m_columnPositions.size(
) - 1]; |
2130 return borderAndPaddingLogicalLeft() + rightGridEdgePosition + alignmentOffs
et - coordinate; | 2130 return rightGridEdgePosition + alignmentOffset - coordinate; |
2131 } | 2131 } |
2132 | 2132 |
2133 LayoutPoint LayoutGrid::findChildLogicalPosition(const LayoutBox& child, GridSiz
ingData& sizingData) const | 2133 LayoutPoint LayoutGrid::findChildLogicalPosition(const LayoutBox& child, GridSiz
ingData& sizingData) const |
2134 { | 2134 { |
2135 LayoutUnit rowAxisOffset = rowAxisOffsetForChild(child, sizingData); | 2135 LayoutUnit rowAxisOffset = rowAxisOffsetForChild(child, sizingData); |
2136 // We stored m_columnPosition's data ignoring the direction, hence we might
need now | 2136 // We stored m_columnPosition's data ignoring the direction, hence we might
need now |
2137 // to translate positions from RTL to LTR, as it's more convenient for paint
ing. | 2137 // to translate positions from RTL to LTR, as it's more convenient for paint
ing. |
2138 if (!style()->isLeftToRightDirection()) | 2138 if (!style()->isLeftToRightDirection()) |
2139 rowAxisOffset = translateRTLCoordinate(rowAxisOffset) - child.logicalWid
th(); | 2139 rowAxisOffset = translateRTLCoordinate(rowAxisOffset) - child.logicalWid
th(); |
2140 | 2140 |
2141 return LayoutPoint(rowAxisOffset, columnAxisOffsetForChild(child, sizingData
)); | 2141 return LayoutPoint(rowAxisOffset, columnAxisOffsetForChild(child, sizingData
)); |
2142 } | 2142 } |
2143 | 2143 |
2144 void LayoutGrid::paintChildren(const PaintInfo& paintInfo, const LayoutPoint& pa
intOffset) const | 2144 void LayoutGrid::paintChildren(const PaintInfo& paintInfo, const LayoutPoint& pa
intOffset) const |
2145 { | 2145 { |
2146 GridPainter(*this).paintChildren(paintInfo, paintOffset); | 2146 GridPainter(*this).paintChildren(paintInfo, paintOffset); |
2147 } | 2147 } |
2148 | 2148 |
2149 } // namespace blink | 2149 } // namespace blink |
OLD | NEW |