Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(431)

Side by Side Diff: Source/core/layout/style/GridResolvedPosition.h

Issue 1045723009: Move core/layout/style to core/style (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase. Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef GridResolvedPosition_h
6 #define GridResolvedPosition_h
7
8 #include "core/layout/style/GridPosition.h"
9
10 namespace blink {
11
12 struct GridSpan;
13 class LayoutBox;
14 class ComputedStyle;
15
16 enum GridPositionSide {
17 ColumnStartSide,
18 ColumnEndSide,
19 RowStartSide,
20 RowEndSide
21 };
22
23 enum GridTrackSizingDirection {
24 ForColumns,
25 ForRows
26 };
27
28 // This class represents an index into one of the dimensions of the grid array.
29 // Wraps a size_t integer just for the purpose of knowing what we manipulate in the grid code.
30 class GridResolvedPosition {
31 public:
32 static GridResolvedPosition adjustGridPositionForAfterEndSide(size_t resolve dPosition)
33 {
34 return resolvedPosition ? GridResolvedPosition(resolvedPosition - 1) : G ridResolvedPosition(0);
35 }
36
37 static GridResolvedPosition adjustGridPositionForSide(size_t resolvedPositio n, GridPositionSide side)
38 {
39 // An item finishing on the N-th line belongs to the N-1-th cell.
40 if (side == ColumnEndSide || side == RowEndSide)
41 return adjustGridPositionForAfterEndSide(resolvedPosition);
42
43 return GridResolvedPosition(resolvedPosition);
44 }
45
46 static void initialAndFinalPositionsFromStyle(const ComputedStyle&, const La youtBox&, GridTrackSizingDirection, GridPosition &initialPosition, GridPosition &finalPosition);
47 static GridSpan resolveGridPositionsFromAutoPlacementPosition(const Computed Style&, const LayoutBox&, GridTrackSizingDirection, const GridResolvedPosition&) ;
48 static PassOwnPtr<GridSpan> resolveGridPositionsFromStyle(const ComputedStyl e&, const LayoutBox&, GridTrackSizingDirection);
49 static GridResolvedPosition resolveNamedGridLinePositionFromStyle(const Comp utedStyle&, const GridPosition&, GridPositionSide);
50 static GridResolvedPosition resolveGridPositionFromStyle(const ComputedStyle &, const GridPosition&, GridPositionSide);
51 static PassOwnPtr<GridSpan> resolveGridPositionAgainstOppositePosition(const ComputedStyle&, const GridResolvedPosition& resolvedOppositePosition, const Gri dPosition&, GridPositionSide);
52 static PassOwnPtr<GridSpan> resolveNamedGridLinePositionAgainstOppositePosit ion(const ComputedStyle&, const GridResolvedPosition& resolvedOppositePosition, const GridPosition&, GridPositionSide);
53
54 GridResolvedPosition(size_t position)
55 : m_integerPosition(position)
56 {
57 }
58
59 GridResolvedPosition(const GridPosition& position, GridPositionSide side)
60 {
61 ASSERT(position.integerPosition());
62 size_t integerPosition = position.integerPosition() - 1;
63
64 m_integerPosition = adjustGridPositionForSide(integerPosition, side).toI nt();
65 }
66
67 GridResolvedPosition& operator*()
68 {
69 return *this;
70 }
71
72 GridResolvedPosition& operator++()
73 {
74 m_integerPosition++;
75 return *this;
76 }
77
78 bool operator==(const GridResolvedPosition& other) const
79 {
80 return m_integerPosition == other.m_integerPosition;
81 }
82
83 bool operator!=(const GridResolvedPosition& other) const
84 {
85 return m_integerPosition != other.m_integerPosition;
86 }
87
88 bool operator<(const GridResolvedPosition& other) const
89 {
90 return m_integerPosition < other.m_integerPosition;
91 }
92
93 bool operator>(const GridResolvedPosition& other) const
94 {
95 return m_integerPosition > other.m_integerPosition;
96 }
97
98 bool operator<=(const GridResolvedPosition& other) const
99 {
100 return m_integerPosition <= other.m_integerPosition;
101 }
102
103 bool operator>=(const GridResolvedPosition& other) const
104 {
105 return m_integerPosition >= other.m_integerPosition;
106 }
107
108 size_t toInt() const
109 {
110 return m_integerPosition;
111 }
112
113 GridResolvedPosition next() const
114 {
115 return GridResolvedPosition(m_integerPosition + 1);
116 }
117
118 static size_t explicitGridColumnCount(const ComputedStyle&);
119 static size_t explicitGridRowCount(const ComputedStyle&);
120
121 private:
122
123 static size_t explicitGridSizeForSide(const ComputedStyle&, GridPositionSide );
124
125 size_t m_integerPosition;
126 };
127
128 } // namespace blink
129
130 #endif // GridResolvedPosition_h
OLDNEW
« no previous file with comments | « Source/core/layout/style/GridPosition.h ('k') | Source/core/layout/style/GridResolvedPosition.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698