| OLD | NEW |
| 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 Loading... |
| 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 |
| OLD | NEW |