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 14 matching lines...) Expand all Loading... |
25 | 25 |
26 #ifndef LayoutGrid_h | 26 #ifndef LayoutGrid_h |
27 #define LayoutGrid_h | 27 #define LayoutGrid_h |
28 | 28 |
29 #include "core/layout/LayoutBlock.h" | 29 #include "core/layout/LayoutBlock.h" |
30 #include "core/layout/OrderIterator.h" | 30 #include "core/layout/OrderIterator.h" |
31 #include "core/style/GridResolvedPosition.h" | 31 #include "core/style/GridResolvedPosition.h" |
32 | 32 |
33 namespace blink { | 33 namespace blink { |
34 | 34 |
| 35 struct ContentAlignmentData; |
35 struct GridCoordinate; | 36 struct GridCoordinate; |
36 struct GridSpan; | 37 struct GridSpan; |
37 class GridTrack; | 38 class GridTrack; |
38 | 39 |
39 enum TrackSizeComputationPhase { | 40 enum TrackSizeComputationPhase { |
40 ResolveIntrinsicMinimums, | 41 ResolveIntrinsicMinimums, |
41 ResolveMaxContentMinimums, | 42 ResolveMaxContentMinimums, |
42 ResolveIntrinsicMaximums, | 43 ResolveIntrinsicMaximums, |
43 ResolveMaxContentMaximums, | 44 ResolveMaxContentMaximums, |
44 MaximizeTracks, | 45 MaximizeTracks, |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 PassOwnPtr<GridCoordinate> createEmptyGridAreaAtSpecifiedPositionsOutsideGri
d(const LayoutBox&, GridTrackSizingDirection, const GridSpan& specifiedPositions
) const; | 121 PassOwnPtr<GridCoordinate> createEmptyGridAreaAtSpecifiedPositionsOutsideGri
d(const LayoutBox&, GridTrackSizingDirection, const GridSpan& specifiedPositions
) const; |
121 void placeSpecifiedMajorAxisItemsOnGrid(const Vector<LayoutBox*>&); | 122 void placeSpecifiedMajorAxisItemsOnGrid(const Vector<LayoutBox*>&); |
122 void placeAutoMajorAxisItemsOnGrid(const Vector<LayoutBox*>&); | 123 void placeAutoMajorAxisItemsOnGrid(const Vector<LayoutBox*>&); |
123 void placeAutoMajorAxisItemOnGrid(LayoutBox&, std::pair<size_t, size_t>& aut
oPlacementCursor); | 124 void placeAutoMajorAxisItemOnGrid(LayoutBox&, std::pair<size_t, size_t>& aut
oPlacementCursor); |
124 GridTrackSizingDirection autoPlacementMajorAxisDirection() const; | 125 GridTrackSizingDirection autoPlacementMajorAxisDirection() const; |
125 GridTrackSizingDirection autoPlacementMinorAxisDirection() const; | 126 GridTrackSizingDirection autoPlacementMinorAxisDirection() const; |
126 | 127 |
127 void layoutGridItems(); | 128 void layoutGridItems(); |
128 void layoutPositionedObjects(bool relayoutChildren, PositionedLayoutBehavior
= DefaultLayout); | 129 void layoutPositionedObjects(bool relayoutChildren, PositionedLayoutBehavior
= DefaultLayout); |
129 void offsetAndBreadthForPositionedChild(const LayoutBox&, GridTrackSizingDir
ection, bool startIsAuto, bool endIsAuto, LayoutUnit& offset, LayoutUnit& breadt
h); | 130 void offsetAndBreadthForPositionedChild(const LayoutBox&, GridTrackSizingDir
ection, bool startIsAuto, bool endIsAuto, LayoutUnit& offset, LayoutUnit& breadt
h); |
130 void populateGridPositions(const GridSizingData&); | 131 void populateGridPositions(GridSizingData&, LayoutUnit availableSpaceForColu
mns, LayoutUnit availableSpaceForRows); |
131 | 132 |
132 typedef struct GridItemsSpanGroupRange GridItemsSpanGroupRange; | 133 typedef struct GridItemsSpanGroupRange GridItemsSpanGroupRange; |
133 LayoutUnit currentItemSizeForTrackSizeComputationPhase(TrackSizeComputationP
hase, LayoutBox&, GridTrackSizingDirection, Vector<GridTrack>& columnTracks); | 134 LayoutUnit currentItemSizeForTrackSizeComputationPhase(TrackSizeComputationP
hase, LayoutBox&, GridTrackSizingDirection, Vector<GridTrack>& columnTracks); |
134 void resolveContentBasedTrackSizingFunctionsForNonSpanningItems(GridTrackSiz
ingDirection, const GridCoordinate&, LayoutBox& gridItem, GridTrack&, Vector<Gri
dTrack>& columnTracks); | 135 void resolveContentBasedTrackSizingFunctionsForNonSpanningItems(GridTrackSiz
ingDirection, const GridCoordinate&, LayoutBox& gridItem, GridTrack&, Vector<Gri
dTrack>& columnTracks); |
135 template <TrackSizeComputationPhase> void resolveContentBasedTrackSizingFunc
tionsForItems(GridTrackSizingDirection, GridSizingData&, const GridItemsSpanGrou
pRange&); | 136 template <TrackSizeComputationPhase> void resolveContentBasedTrackSizingFunc
tionsForItems(GridTrackSizingDirection, GridSizingData&, const GridItemsSpanGrou
pRange&); |
136 template <TrackSizeComputationPhase> void distributeSpaceToTracks(Vector<Gri
dTrack*>&, const Vector<GridTrack*>* growBeyondGrowthLimitsTracks, GridSizingDat
a&, LayoutUnit& availableLogicalSpace); | 137 template <TrackSizeComputationPhase> void distributeSpaceToTracks(Vector<Gri
dTrack*>&, const Vector<GridTrack*>* growBeyondGrowthLimitsTracks, GridSizingDat
a&, LayoutUnit& availableLogicalSpace); |
137 | 138 |
138 double computeNormalizedFractionBreadth(Vector<GridTrack>&, const GridSpan&
tracksSpan, GridTrackSizingDirection, LayoutUnit availableLogicalSpace) const; | 139 double computeNormalizedFractionBreadth(Vector<GridTrack>&, const GridSpan&
tracksSpan, GridTrackSizingDirection, LayoutUnit availableLogicalSpace) const; |
139 | 140 |
140 GridTrackSize gridTrackSize(GridTrackSizingDirection, size_t) const; | 141 GridTrackSize gridTrackSize(GridTrackSizingDirection, size_t) const; |
141 | 142 |
142 LayoutUnit logicalHeightForChild(LayoutBox&, Vector<GridTrack>&); | 143 LayoutUnit logicalHeightForChild(LayoutBox&, Vector<GridTrack>&); |
143 LayoutUnit minContentForChild(LayoutBox&, GridTrackSizingDirection, Vector<G
ridTrack>& columnTracks); | 144 LayoutUnit minContentForChild(LayoutBox&, GridTrackSizingDirection, Vector<G
ridTrack>& columnTracks); |
144 LayoutUnit maxContentForChild(LayoutBox&, GridTrackSizingDirection, Vector<G
ridTrack>& columnTracks); | 145 LayoutUnit maxContentForChild(LayoutBox&, GridTrackSizingDirection, Vector<G
ridTrack>& columnTracks); |
145 GridAxisPosition columnAxisPositionForChild(const LayoutBox&) const; | 146 GridAxisPosition columnAxisPositionForChild(const LayoutBox&) const; |
146 GridAxisPosition rowAxisPositionForChild(const LayoutBox&) const; | 147 GridAxisPosition rowAxisPositionForChild(const LayoutBox&) const; |
147 LayoutUnit columnPositionForChild(const LayoutBox&) const; | 148 LayoutUnit rowAxisOffsetForChild(const LayoutBox&) const; |
148 LayoutUnit rowPositionForChild(const LayoutBox&) const; | 149 LayoutUnit columnAxisOffsetForChild(const LayoutBox&) const; |
149 void computeContentPositionAndDistributionRowOffset(LayoutUnit availableFree
Space, GridSizingData&) const; | 150 ContentAlignmentData computeContentPositionAndDistributionOffset(GridTrackSi
zingDirection, LayoutUnit availableFreeSpace, unsigned numberOfGridTracks) const
; |
150 void computeContentPositionAndDistributionColumnOffset(LayoutUnit availableF
reeSpace, GridSizingData&) const; | |
151 LayoutPoint findChildLogicalPosition(const LayoutBox&, GridSizingData&) cons
t; | 151 LayoutPoint findChildLogicalPosition(const LayoutBox&, GridSizingData&) cons
t; |
152 GridCoordinate cachedGridCoordinate(const LayoutBox&) const; | 152 GridCoordinate cachedGridCoordinate(const LayoutBox&) const; |
153 | 153 |
154 LayoutUnit gridAreaBreadthForChild(const LayoutBox& child, GridTrackSizingDi
rection, const Vector<GridTrack>&) const; | 154 LayoutUnit gridAreaBreadthForChild(const LayoutBox& child, GridTrackSizingDi
rection, const Vector<GridTrack>&) const; |
| 155 LayoutUnit gridAreaBreadthForChildIncludingAlignmentOffsets(const LayoutBox&
, GridTrackSizingDirection, const GridSizingData&) const; |
| 156 |
| 157 void applyStretchAlignmentToTracksIfNeeded(GridTrackSizingDirection, GridSiz
ingData&, LayoutUnit availableSpace); |
155 | 158 |
156 virtual void paintChildren(const PaintInfo&, const LayoutPoint&) override; | 159 virtual void paintChildren(const PaintInfo&, const LayoutPoint&) override; |
157 bool allowedToStretchLogicalHeightForChild(const LayoutBox& child) const; | 160 bool allowedToStretchLogicalHeightForChild(const LayoutBox& child) const; |
158 bool needToStretchChildLogicalHeight(const LayoutBox&) const; | 161 bool needToStretchChildLogicalHeight(const LayoutBox&) const; |
159 LayoutUnit childIntrinsicHeight(const LayoutBox&) const; | 162 LayoutUnit childIntrinsicHeight(const LayoutBox&) const; |
160 LayoutUnit childIntrinsicWidth(const LayoutBox&) const; | 163 LayoutUnit childIntrinsicWidth(const LayoutBox&) const; |
161 LayoutUnit intrinsicLogicalHeightForChild(const LayoutBox&) const; | 164 LayoutUnit intrinsicLogicalHeightForChild(const LayoutBox&) const; |
162 LayoutUnit marginLogicalHeightForChild(const LayoutBox&) const; | 165 LayoutUnit marginLogicalHeightForChild(const LayoutBox&) const; |
163 LayoutUnit computeMarginLogicalHeightForChild(const LayoutBox&) const; | 166 LayoutUnit computeMarginLogicalHeightForChild(const LayoutBox&) const; |
164 LayoutUnit availableAlignmentSpaceForChildBeforeStretching(LayoutUnit gridAr
eaBreadthForChild, const LayoutBox&) const; | 167 LayoutUnit availableAlignmentSpaceForChildBeforeStretching(LayoutUnit gridAr
eaBreadthForChild, const LayoutBox&) const; |
(...skipping 28 matching lines...) Expand all Loading... |
193 OrderIterator m_orderIterator; | 196 OrderIterator m_orderIterator; |
194 Vector<LayoutBox*> m_gridItemsOverflowingGridArea; | 197 Vector<LayoutBox*> m_gridItemsOverflowingGridArea; |
195 HashMap<const LayoutBox*, size_t> m_gridItemsIndexesMap; | 198 HashMap<const LayoutBox*, size_t> m_gridItemsIndexesMap; |
196 }; | 199 }; |
197 | 200 |
198 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutGrid, isLayoutGrid()); | 201 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutGrid, isLayoutGrid()); |
199 | 202 |
200 } // namespace blink | 203 } // namespace blink |
201 | 204 |
202 #endif // LayoutGrid_h | 205 #endif // LayoutGrid_h |
OLD | NEW |