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

Side by Side Diff: Source/core/rendering/style/GridTrackSize.h

Issue 28053003: [CSS Grid Layout] Cache track breadth min/max content types (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@lognsearch
Patch Set: Created 7 years, 2 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 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 24 matching lines...) Expand all
35 35
36 namespace WebCore { 36 namespace WebCore {
37 37
38 enum GridTrackSizeType { 38 enum GridTrackSizeType {
39 LengthTrackSizing, 39 LengthTrackSizing,
40 MinMaxTrackSizing 40 MinMaxTrackSizing
41 }; 41 };
42 42
43 class GridTrackSize { 43 class GridTrackSize {
44 public: 44 public:
45 GridTrackSize(LengthType type = Undefined) 45 GridTrackSize()
46 : m_type(LengthTrackSizing)
47 , m_minTrackBreadth(Undefined)
48 , m_maxTrackBreadth(Undefined)
49 , m_minTrackBreadthIsMinOrMaxContent(false)
50 , m_minTrackBreadthIsMaxContent(false)
51 , m_maxTrackBreadthIsMinOrMaxContent(false)
52 , m_maxTrackBreadthIsMaxContent(false)
53 {
54 // Someone has to set a valid lenght type through setLength or
55 // setMinMax before using the object.
56 }
57
58 GridTrackSize(LengthType type)
46 : m_type(LengthTrackSizing) 59 : m_type(LengthTrackSizing)
47 , m_minTrackBreadth(type) 60 , m_minTrackBreadth(type)
48 , m_maxTrackBreadth(type) 61 , m_maxTrackBreadth(type)
62 , m_minTrackBreadthIsMinOrMaxContent(false)
63 , m_minTrackBreadthIsMaxContent(false)
64 , m_maxTrackBreadthIsMinOrMaxContent(false)
65 , m_maxTrackBreadthIsMaxContent(false)
49 { 66 {
67 ASSERT(type != Undefined);
68
69 cacheMinMaxTrackBreadthTypes();
50 } 70 }
51 71
52 const GridLength& length() const 72 const GridLength& length() const
53 { 73 {
54 ASSERT(m_type == LengthTrackSizing); 74 ASSERT(m_type == LengthTrackSizing);
55 ASSERT(m_minTrackBreadth == m_maxTrackBreadth); 75 ASSERT(m_minTrackBreadth == m_maxTrackBreadth);
56 const GridLength& minTrackBreadth = m_minTrackBreadth; 76 const GridLength& minTrackBreadth = m_minTrackBreadth;
57 ASSERT(!minTrackBreadth.isLength() || !minTrackBreadth.length().isUndefi ned()); 77 ASSERT(!minTrackBreadth.isLength() || !minTrackBreadth.length().isUndefi ned());
58 return minTrackBreadth; 78 return minTrackBreadth;
59 } 79 }
60 80
61 void setLength(const GridLength& length) 81 void setLength(const GridLength& length)
62 { 82 {
63 m_type = LengthTrackSizing; 83 m_type = LengthTrackSizing;
64 m_minTrackBreadth = length; 84 m_minTrackBreadth = length;
65 m_maxTrackBreadth = length; 85 m_maxTrackBreadth = length;
86
87 cacheMinMaxTrackBreadthTypes();
66 } 88 }
67 89
68 const GridLength& minTrackBreadth() const 90 const GridLength& minTrackBreadth() const
69 { 91 {
70 ASSERT(!m_minTrackBreadth.isLength() || !m_minTrackBreadth.length().isUn defined()); 92 ASSERT(!m_minTrackBreadth.isLength() || !m_minTrackBreadth.length().isUn defined());
71 if (m_minTrackBreadth.isLength() && m_minTrackBreadth.length().isAuto()) { 93 if (m_minTrackBreadth.isLength() && m_minTrackBreadth.length().isAuto()) {
72 DEFINE_STATIC_LOCAL(GridLength, minContent, (MinContent)); 94 DEFINE_STATIC_LOCAL(GridLength, minContent, (MinContent));
73 return minContent; 95 return minContent;
74 } 96 }
75 return m_minTrackBreadth; 97 return m_minTrackBreadth;
76 } 98 }
77 99
78 const GridLength& maxTrackBreadth() const 100 const GridLength& maxTrackBreadth() const
79 { 101 {
80 ASSERT(!m_maxTrackBreadth.isLength() || !m_maxTrackBreadth.length().isUn defined()); 102 ASSERT(!m_maxTrackBreadth.isLength() || !m_maxTrackBreadth.length().isUn defined());
81 if (m_maxTrackBreadth.isLength() && m_maxTrackBreadth.length().isAuto()) { 103 if (m_maxTrackBreadth.isLength() && m_maxTrackBreadth.length().isAuto()) {
82 DEFINE_STATIC_LOCAL(GridLength, maxContent, (MaxContent)); 104 DEFINE_STATIC_LOCAL(GridLength, maxContent, (MaxContent));
83 return maxContent; 105 return maxContent;
84 } 106 }
85 return m_maxTrackBreadth; 107 return m_maxTrackBreadth;
86 } 108 }
87 109
88 void setMinMax(const GridLength& minTrackBreadth, const GridLength& maxTrack Breadth) 110 void setMinMax(const GridLength& minTrackBreadth, const GridLength& maxTrack Breadth)
89 { 111 {
90 m_type = MinMaxTrackSizing; 112 m_type = MinMaxTrackSizing;
91 m_minTrackBreadth = minTrackBreadth; 113 m_minTrackBreadth = minTrackBreadth;
92 m_maxTrackBreadth = maxTrackBreadth; 114 m_maxTrackBreadth = maxTrackBreadth;
115
116 cacheMinMaxTrackBreadthTypes();
93 } 117 }
94 118
95 GridTrackSizeType type() const { return m_type; } 119 GridTrackSizeType type() const { return m_type; }
96 120
97 bool isContentSized() const { return m_minTrackBreadth.isContentSized() || m _maxTrackBreadth.isContentSized(); } 121 bool isContentSized() const { return m_minTrackBreadth.isContentSized() || m _maxTrackBreadth.isContentSized(); }
98 122
99 bool operator==(const GridTrackSize& other) const 123 bool operator==(const GridTrackSize& other) const
100 { 124 {
101 return m_type == other.m_type && m_minTrackBreadth == other.m_minTrackBr eadth && m_maxTrackBreadth == other.m_maxTrackBreadth; 125 return m_type == other.m_type && m_minTrackBreadth == other.m_minTrackBr eadth && m_maxTrackBreadth == other.m_maxTrackBreadth;
102 } 126 }
103 127
104 bool hasMinOrMaxContentMinTrackBreadth() const { return minTrackBreadth().is Length() && (minTrackBreadth().length().isMinContent() || minTrackBreadth().leng th().isMaxContent()); } 128 void cacheMinMaxTrackBreadthTypes()
105 bool hasMaxContentMinTrackBreadth() const { return minTrackBreadth().isLengt h() && minTrackBreadth().length().isMaxContent(); } 129 {
106 bool hasMinOrMaxContentMaxTrackBreadth() const { return maxTrackBreadth().is Length() && (maxTrackBreadth().length().isMinContent() || maxTrackBreadth().leng th().isMaxContent()); } 130 m_minTrackBreadthIsMaxContent = minTrackBreadth().isLength() && minTrack Breadth().length().isMaxContent();
107 bool hasMaxContentMaxTrackBreadth() const { return maxTrackBreadth().isLengt h() && maxTrackBreadth().length().isMaxContent(); } 131 m_minTrackBreadthIsMinOrMaxContent = m_minTrackBreadthIsMaxContent || (m inTrackBreadth().isLength() && minTrackBreadth().length().isMinContent());
132 m_maxTrackBreadthIsMaxContent = maxTrackBreadth().isLength() && maxTrack Breadth().length().isMaxContent();
133 m_maxTrackBreadthIsMinOrMaxContent = m_maxTrackBreadthIsMaxContent || (m axTrackBreadth().isLength() && maxTrackBreadth().length().isMinContent());
134 }
135
136 bool hasMinOrMaxContentMinTrackBreadth() const { return m_minTrackBreadthIsM inOrMaxContent; }
137 bool hasMaxContentMinTrackBreadth() const { return m_minTrackBreadthIsMaxCon tent; }
138 bool hasMinOrMaxContentMaxTrackBreadth() const { return m_maxTrackBreadthIsM inOrMaxContent; }
139 bool hasMaxContentMaxTrackBreadth() const { return m_maxTrackBreadthIsMaxCon tent; }
108 140
109 private: 141 private:
110 GridTrackSizeType m_type; 142 GridTrackSizeType m_type;
111 GridLength m_minTrackBreadth; 143 GridLength m_minTrackBreadth;
112 GridLength m_maxTrackBreadth; 144 GridLength m_maxTrackBreadth;
145 bool m_minTrackBreadthIsMinOrMaxContent;
146 bool m_minTrackBreadthIsMaxContent;
147 bool m_maxTrackBreadthIsMinOrMaxContent;
148 bool m_maxTrackBreadthIsMaxContent;
113 }; 149 };
114 150
115 } // namespace WebCore 151 } // namespace WebCore
116 152
117 #endif // GridTrackSize_h 153 #endif // GridTrackSize_h
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698