Chromium Code Reviews| 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 20 matching lines...) Expand all Loading... | |
| 31 #ifndef GridTrackSize_h | 31 #ifndef GridTrackSize_h |
| 32 #define GridTrackSize_h | 32 #define GridTrackSize_h |
| 33 | 33 |
| 34 #include "core/style/GridLength.h" | 34 #include "core/style/GridLength.h" |
| 35 #include "wtf/Allocator.h" | 35 #include "wtf/Allocator.h" |
| 36 | 36 |
| 37 namespace blink { | 37 namespace blink { |
| 38 | 38 |
| 39 enum GridTrackSizeType { | 39 enum GridTrackSizeType { |
| 40 LengthTrackSizing, | 40 LengthTrackSizing, |
| 41 MinMaxTrackSizing | 41 MinMaxTrackSizing, |
| 42 FitContentTrackSizing | |
| 42 }; | 43 }; |
| 43 | 44 |
| 45 // This class represents a <track-size> from the spec. Althought there are 3 dif ferent types of | |
| 46 // <track-size> there is always an equivalent minmax() representation that could represent any of | |
| 47 // them. The only special case is fit-content(argument) which is similar to minm ax(auto,max-content) | |
|
Manuel Rego
2016/08/31 07:24:29
Nit: Missing space after "auto,".
svillar
2016/08/31 09:50:04
Acknowledged.
| |
| 48 // except that the track size is clamped at argument if it is greater than the a uto minimum. At the | |
| 49 // GridTrackSize level we don't need to worry about clamping so we treat that ca se exactly as | |
| 50 // minmax(auto, max-content) althought we store the argument for later use in m_ maxTrackBreadth. | |
| 44 class GridTrackSize { | 51 class GridTrackSize { |
| 45 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); | 52 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); |
| 46 public: | 53 public: |
| 47 GridTrackSize(const GridLength& length) | 54 GridTrackSize(const GridLength& length, GridTrackSizeType trackSizeType = Le ngthTrackSizing) |
| 48 : m_type(LengthTrackSizing) | 55 : m_type(trackSizeType) |
| 49 , m_minTrackBreadth(length) | 56 , m_minTrackBreadth(trackSizeType == FitContentTrackSizing ? Length(Auto ) : length) |
| 50 , m_maxTrackBreadth(length) | 57 , m_maxTrackBreadth(length) |
| 51 , m_minTrackBreadthIsMaxContent(false) | |
| 52 , m_maxTrackBreadthIsMaxContent(false) | |
| 53 { | 58 { |
| 59 DCHECK(trackSizeType == LengthTrackSizing || trackSizeType == FitContent TrackSizing); | |
| 54 cacheMinMaxTrackBreadthTypes(); | 60 cacheMinMaxTrackBreadthTypes(); |
| 55 } | 61 } |
| 56 | 62 |
| 57 GridTrackSize(const GridLength& minTrackBreadth, const GridLength& maxTrackB readth) | 63 GridTrackSize(const GridLength& minTrackBreadth, const GridLength& maxTrackB readth) |
| 58 : m_type(MinMaxTrackSizing) | 64 : m_type(MinMaxTrackSizing) |
| 59 , m_minTrackBreadth(minTrackBreadth) | 65 , m_minTrackBreadth(minTrackBreadth) |
| 60 , m_maxTrackBreadth(maxTrackBreadth) | 66 , m_maxTrackBreadth(maxTrackBreadth) |
| 61 , m_minTrackBreadthIsMaxContent(false) | |
| 62 , m_maxTrackBreadthIsMaxContent(false) | |
| 63 { | 67 { |
| 64 cacheMinMaxTrackBreadthTypes(); | 68 cacheMinMaxTrackBreadthTypes(); |
| 65 } | 69 } |
| 66 | 70 |
| 67 const GridLength& length() const | 71 GridLength length() const |
| 68 { | 72 { |
| 69 ASSERT(m_type == LengthTrackSizing); | 73 DCHECK(m_type == LengthTrackSizing || m_type == FitContentTrackSizing); |
| 70 ASSERT(m_minTrackBreadth == m_maxTrackBreadth); | 74 DCHECK(m_minTrackBreadth == m_maxTrackBreadth || m_type == FitContentTra ckSizing); |
| 71 const GridLength& minTrackBreadth = m_minTrackBreadth; | 75 return m_maxTrackBreadth; |
| 72 return minTrackBreadth; | |
| 73 } | 76 } |
| 74 | 77 |
| 75 const GridLength& minTrackBreadth() const { return m_minTrackBreadth; } | 78 GridLength minTrackBreadth() const { return m_minTrackBreadth; } |
| 76 | 79 GridLength maxTrackBreadth() const { return !isFitContent() ? m_maxTrackBrea dth : GridLength(Length(MaxContent)); } |
|
cbiesinger
2016/08/29 20:07:07
please don't use negation like that, it's harder t
| |
| 77 const GridLength& maxTrackBreadth() const { return m_maxTrackBreadth; } | |
| 78 | 80 |
| 79 GridTrackSizeType type() const { return m_type; } | 81 GridTrackSizeType type() const { return m_type; } |
| 80 | 82 |
| 81 bool isContentSized() const { return m_minTrackBreadth.isContentSized() || m _maxTrackBreadth.isContentSized(); } | 83 bool isContentSized() const { return m_minTrackBreadth.isContentSized() || m _maxTrackBreadth.isContentSized(); } |
| 84 bool isFitContent() const { return m_type == FitContentTrackSizing; } | |
| 82 | 85 |
| 83 bool operator==(const GridTrackSize& other) const | 86 bool operator==(const GridTrackSize& other) const |
| 84 { | 87 { |
| 85 return m_type == other.m_type && m_minTrackBreadth == other.m_minTrackBr eadth && m_maxTrackBreadth == other.m_maxTrackBreadth; | 88 return m_type == other.m_type && m_minTrackBreadth == other.m_minTrackBr eadth && m_maxTrackBreadth == other.m_maxTrackBreadth; |
| 86 } | 89 } |
| 87 | 90 |
| 88 void cacheMinMaxTrackBreadthTypes() | 91 void cacheMinMaxTrackBreadthTypes() |
| 89 { | 92 { |
| 90 m_minTrackBreadthIsAuto = minTrackBreadth().isLength() && minTrackBreadt h().length().isAuto(); | 93 m_minTrackBreadthIsAuto = minTrackBreadth().isLength() && minTrackBreadt h().length().isAuto(); |
| 91 m_minTrackBreadthIsMinContent = minTrackBreadth().isLength() && minTrack Breadth().length().isMinContent(); | 94 m_minTrackBreadthIsMinContent = minTrackBreadth().isLength() && minTrack Breadth().length().isMinContent(); |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 104 bool hasMinOrMaxContentMaxTrackBreadth() const { return m_maxTrackBreadthIsM axContent || m_maxTrackBreadthIsMinContent; } | 107 bool hasMinOrMaxContentMaxTrackBreadth() const { return m_maxTrackBreadthIsM axContent || m_maxTrackBreadthIsMinContent; } |
| 105 bool hasMaxContentMaxTrackBreadth() const { return m_maxTrackBreadthIsMaxCon tent; } | 108 bool hasMaxContentMaxTrackBreadth() const { return m_maxTrackBreadthIsMaxCon tent; } |
| 106 bool hasMaxContentOrAutoMaxTrackBreadth() const { return m_maxTrackBreadthIs MaxContent || m_maxTrackBreadthIsAuto; } | 109 bool hasMaxContentOrAutoMaxTrackBreadth() const { return m_maxTrackBreadthIs MaxContent || m_maxTrackBreadthIsAuto; } |
| 107 bool hasMinContentMaxTrackBreadth() const { return m_maxTrackBreadthIsMinCon tent; } | 110 bool hasMinContentMaxTrackBreadth() const { return m_maxTrackBreadthIsMinCon tent; } |
| 108 bool hasMaxContentMinTrackBreadthAndMaxContentMaxTrackBreadth() const { retu rn m_minTrackBreadthIsMaxContent && m_maxTrackBreadthIsMaxContent; } | 111 bool hasMaxContentMinTrackBreadthAndMaxContentMaxTrackBreadth() const { retu rn m_minTrackBreadthIsMaxContent && m_maxTrackBreadthIsMaxContent; } |
| 109 bool hasAutoOrMinContentMinTrackBreadthAndIntrinsicMaxTrackBreadth() const { return (m_minTrackBreadthIsMinContent || m_minTrackBreadthIsAuto) && (m_maxTrac kBreadthIsMaxContent || m_maxTrackBreadthIsMinContent || m_maxTrackBreadthIsAuto ); } | 112 bool hasAutoOrMinContentMinTrackBreadthAndIntrinsicMaxTrackBreadth() const { return (m_minTrackBreadthIsMinContent || m_minTrackBreadthIsAuto) && (m_maxTrac kBreadthIsMaxContent || m_maxTrackBreadthIsMinContent || m_maxTrackBreadthIsAuto ); } |
| 110 | 113 |
| 111 private: | 114 private: |
| 112 GridTrackSizeType m_type; | 115 GridTrackSizeType m_type; |
| 113 GridLength m_minTrackBreadth; | 116 GridLength m_minTrackBreadth; |
| 114 GridLength m_maxTrackBreadth; | 117 GridLength m_maxTrackBreadth; |
|
Manuel Rego
2016/08/31 07:24:29
Probably it's good adding a comment to explain tha
svillar
2016/08/31 09:50:04
As you know it's in the policy of the project not
cbiesinger
2016/08/31 15:18:44
FWIW, I really don't think that's the policy in bl
| |
| 115 bool m_minTrackBreadthIsAuto; | 118 bool m_minTrackBreadthIsAuto; |
| 116 bool m_minTrackBreadthIsMaxContent; | 119 bool m_minTrackBreadthIsMaxContent; |
| 117 bool m_minTrackBreadthIsMinContent; | 120 bool m_minTrackBreadthIsMinContent; |
| 118 bool m_maxTrackBreadthIsAuto; | 121 bool m_maxTrackBreadthIsAuto; |
| 119 bool m_maxTrackBreadthIsMaxContent; | 122 bool m_maxTrackBreadthIsMaxContent; |
| 120 bool m_maxTrackBreadthIsMinContent; | 123 bool m_maxTrackBreadthIsMinContent; |
| 121 }; | 124 }; |
| 122 | 125 |
| 123 } // namespace blink | 126 } // namespace blink |
| 124 | 127 |
| 125 #endif // GridTrackSize_h | 128 #endif // GridTrackSize_h |
| OLD | NEW |