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

Side by Side Diff: Source/core/css/CSSPrimitiveValue.h

Issue 1304993002: Change Rect and Quad to be CSSValues (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@split_counter_out_attempt_3
Patch Set: Created 5 years, 4 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
OLDNEW
1 /* 1 /*
2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.
4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 23 matching lines...) Expand all
34 #include "wtf/text/StringHash.h" 34 #include "wtf/text/StringHash.h"
35 35
36 namespace blink { 36 namespace blink {
37 37
38 class CSSBasicShape; 38 class CSSBasicShape;
39 class CSSCalcValue; 39 class CSSCalcValue;
40 class CSSToLengthConversionData; 40 class CSSToLengthConversionData;
41 class Length; 41 class Length;
42 class LengthSize; 42 class LengthSize;
43 class Pair; 43 class Pair;
44 class Quad;
45 class RGBColor; 44 class RGBColor;
46 class Rect;
47 class ComputedStyle; 45 class ComputedStyle;
48 46
49 // Dimension calculations are imprecise, often resulting in values of e.g. 47 // Dimension calculations are imprecise, often resulting in values of e.g.
50 // 44.99998. We need to go ahead and round if we're really close to the next 48 // 44.99998. We need to go ahead and round if we're really close to the next
51 // integer value. 49 // integer value.
52 template<typename T> inline T roundForImpreciseConversion(double value) 50 template<typename T> inline T roundForImpreciseConversion(double value)
53 { 51 {
54 value += (value < 0) ? -0.01 : +0.01; 52 value += (value < 0) ? -0.01 : +0.01;
55 return ((value > std::numeric_limits<T>::max()) || (value < std::numeric_lim its<T>::min())) ? 0 : static_cast<T>(value); 53 return ((value > std::numeric_limits<T>::max()) || (value < std::numeric_lim its<T>::min())) ? 0 : static_cast<T>(value);
56 } 54 }
(...skipping 30 matching lines...) Expand all
87 Radians, 85 Radians,
88 Gradians, 86 Gradians,
89 Turns, 87 Turns,
90 Milliseconds, 88 Milliseconds,
91 Seconds, 89 Seconds,
92 Hertz, 90 Hertz,
93 Kilohertz, 91 Kilohertz,
94 CustomIdentifier, 92 CustomIdentifier,
95 URI, 93 URI,
96 Attribute, 94 Attribute,
97 Rect,
98 RGBColor, 95 RGBColor,
99 ViewportWidth, 96 ViewportWidth,
100 ViewportHeight, 97 ViewportHeight,
101 ViewportMin, 98 ViewportMin,
102 ViewportMax, 99 ViewportMax,
103 DotsPerPixel, 100 DotsPerPixel,
104 DotsPerInch, 101 DotsPerInch,
105 DotsPerCentimeter, 102 DotsPerCentimeter,
106 Fraction, 103 Fraction,
107 Integer, 104 Integer,
108 Pair, 105 Pair,
109 Rems, 106 Rems,
110 Chs, 107 Chs,
111 Shape, 108 Shape,
112 Quad,
113 Calc, 109 Calc,
114 CalcPercentageWithNumber, 110 CalcPercentageWithNumber,
115 CalcPercentageWithLength, 111 CalcPercentageWithLength,
116 String, 112 String,
117 PropertyID, 113 PropertyID,
118 ValueID, 114 ValueID,
119 QuirkyEms, 115 QuirkyEms,
120 }; 116 };
121 117
122 enum LengthUnitType { 118 enum LengthUnitType {
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 static bool isViewportPercentageLength(UnitType type) { return type >= UnitT ype::ViewportWidth && type <= UnitType::ViewportMax; } 174 static bool isViewportPercentageLength(UnitType type) { return type >= UnitT ype::ViewportWidth && type <= UnitType::ViewportMax; }
179 static bool isLength(UnitType type) 175 static bool isLength(UnitType type)
180 { 176 {
181 return (type >= UnitType::Ems && type <= UnitType::Picas) || type == Uni tType::Rems || type == UnitType::Chs || isViewportPercentageLength(type); 177 return (type >= UnitType::Ems && type <= UnitType::Picas) || type == Uni tType::Rems || type == UnitType::Chs || isViewportPercentageLength(type);
182 } 178 }
183 bool isLength() const { return isLength(typeWithCalcResolved()); } 179 bool isLength() const { return isLength(typeWithCalcResolved()); }
184 bool isNumber() const { return typeWithCalcResolved() == UnitType::Number || typeWithCalcResolved() == UnitType::Integer; } 180 bool isNumber() const { return typeWithCalcResolved() == UnitType::Number || typeWithCalcResolved() == UnitType::Integer; }
185 bool isPercentage() const { return typeWithCalcResolved() == UnitType::Perce ntage; } 181 bool isPercentage() const { return typeWithCalcResolved() == UnitType::Perce ntage; }
186 bool isPropertyID() const { return type() == UnitType::PropertyID; } 182 bool isPropertyID() const { return type() == UnitType::PropertyID; }
187 bool isPx() const { return typeWithCalcResolved() == UnitType::Pixels; } 183 bool isPx() const { return typeWithCalcResolved() == UnitType::Pixels; }
188 bool isQuad() const { return type() == UnitType::Quad; }
189 bool isRect() const { return type() == UnitType::Rect; }
190 bool isRGBColor() const { return type() == UnitType::RGBColor; } 184 bool isRGBColor() const { return type() == UnitType::RGBColor; }
191 bool isShape() const { return type() == UnitType::Shape; } 185 bool isShape() const { return type() == UnitType::Shape; }
192 bool isString() const { return type() == UnitType::String; } 186 bool isString() const { return type() == UnitType::String; }
193 bool isTime() const { return type() == UnitType::Seconds || type() == UnitTy pe::Milliseconds; } 187 bool isTime() const { return type() == UnitType::Seconds || type() == UnitTy pe::Milliseconds; }
194 bool isURI() const { return type() == UnitType::URI; } 188 bool isURI() const { return type() == UnitType::URI; }
195 bool isCalculated() const { return type() == UnitType::Calc; } 189 bool isCalculated() const { return type() == UnitType::Calc; }
196 bool isCalculatedPercentageWithNumber() const { return typeWithCalcResolved( ) == UnitType::CalcPercentageWithNumber; } 190 bool isCalculatedPercentageWithNumber() const { return typeWithCalcResolved( ) == UnitType::CalcPercentageWithNumber; }
197 bool isCalculatedPercentageWithLength() const { return typeWithCalcResolved( ) == UnitType::CalcPercentageWithLength; } 191 bool isCalculatedPercentageWithLength() const { return typeWithCalcResolved( ) == UnitType::CalcPercentageWithLength; }
198 static bool isDotsPerInch(UnitType type) { return type == UnitType::DotsPerI nch; } 192 static bool isDotsPerInch(UnitType type) { return type == UnitType::DotsPerI nch; }
199 static bool isDotsPerPixel(UnitType type) { return type == UnitType::DotsPer Pixel; } 193 static bool isDotsPerPixel(UnitType type) { return type == UnitType::DotsPer Pixel; }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 255
262 // Converts to a Length (Fixed, Percent or Calculated) 256 // Converts to a Length (Fixed, Percent or Calculated)
263 Length convertToLength(const CSSToLengthConversionData&); 257 Length convertToLength(const CSSToLengthConversionData&);
264 258
265 double getDoubleValue() const; 259 double getDoubleValue() const;
266 float getFloatValue() const { return getValue<float>(); } 260 float getFloatValue() const { return getValue<float>(); }
267 int getIntValue() const { return getValue<int>(); } 261 int getIntValue() const { return getValue<int>(); }
268 template<typename T> inline T getValue() const { return clampTo<T>(getDouble Value()); } 262 template<typename T> inline T getValue() const { return clampTo<T>(getDouble Value()); }
269 263
270 String getStringValue() const; 264 String getStringValue() const;
271
272 Rect* getRectValue() const { ASSERT(isRect()); return m_value.rect; }
273 Quad* getQuadValue() const { ASSERT(isQuad()); return m_value.quad; }
274 RGBA32 getRGBA32Value() const { ASSERT(isRGBColor()); return m_value.rgbcolo r; } 265 RGBA32 getRGBA32Value() const { ASSERT(isRGBColor()); return m_value.rgbcolo r; }
275 266
276 // TODO(timloh): Add isPair() and update callers so we can ASSERT(isPair()) 267 // TODO(timloh): Add isPair() and update callers so we can ASSERT(isPair())
277 Pair* getPairValue() const { return type() != UnitType::Pair ? 0 : m_value.p air; } 268 Pair* getPairValue() const { return type() != UnitType::Pair ? 0 : m_value.p air; }
278 269
279 CSSBasicShape* getShapeValue() const { ASSERT(isShape()); return m_value.sha pe; } 270 CSSBasicShape* getShapeValue() const { ASSERT(isShape()); return m_value.sha pe; }
280 CSSCalcValue* cssCalcValue() const { ASSERT(isCalculated()); return m_value. calc; } 271 CSSCalcValue* cssCalcValue() const { ASSERT(isCalculated()); return m_value. calc; }
281 CSSPropertyID getPropertyID() const { ASSERT(isPropertyID()); return m_value .propertyID; } 272 CSSPropertyID getPropertyID() const { ASSERT(isPropertyID()); return m_value .propertyID; }
282 273
283 CSSValueID getValueID() const { return type() == UnitType::ValueID ? m_value .valueID : CSSValueInvalid; } 274 CSSValueID getValueID() const { return type() == UnitType::ValueID ? m_value .valueID : CSSValueInvalid; }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 init(val); 313 init(val);
323 } 314 }
324 315
325 static void create(int); // compile-time guard 316 static void create(int); // compile-time guard
326 static void create(unsigned); // compile-time guard 317 static void create(unsigned); // compile-time guard
327 template<typename T> operator T*(); // compile-time guard 318 template<typename T> operator T*(); // compile-time guard
328 319
329 void init(UnitType); 320 void init(UnitType);
330 void init(const Length&); 321 void init(const Length&);
331 void init(const LengthSize&, const ComputedStyle&); 322 void init(const LengthSize&, const ComputedStyle&);
332 void init(PassRefPtrWillBeRawPtr<Rect>);
333 void init(PassRefPtrWillBeRawPtr<Pair>); 323 void init(PassRefPtrWillBeRawPtr<Pair>);
334 void init(PassRefPtrWillBeRawPtr<Quad>);
335 void init(PassRefPtrWillBeRawPtr<CSSBasicShape>); 324 void init(PassRefPtrWillBeRawPtr<CSSBasicShape>);
336 void init(PassRefPtrWillBeRawPtr<CSSCalcValue>); 325 void init(PassRefPtrWillBeRawPtr<CSSCalcValue>);
337 326
338 double computeLengthDouble(const CSSToLengthConversionData&); 327 double computeLengthDouble(const CSSToLengthConversionData&);
339 328
340 inline UnitType type() const { return static_cast<UnitType>(m_primitiveUnitT ype); } 329 inline UnitType type() const { return static_cast<UnitType>(m_primitiveUnitT ype); }
341 330
342 union { 331 union {
343 CSSPropertyID propertyID; 332 CSSPropertyID propertyID;
344 CSSValueID valueID; 333 CSSValueID valueID;
345 double num; 334 double num;
346 StringImpl* string; 335 StringImpl* string;
347 RGBA32 rgbcolor; 336 RGBA32 rgbcolor;
348 // FIXME: oilpan: Should be members, but no support for members in union s. Just trace the raw ptr for now. 337 // FIXME: oilpan: Should be members, but no support for members in union s. Just trace the raw ptr for now.
349 CSSBasicShape* shape; 338 CSSBasicShape* shape;
350 CSSCalcValue* calc; 339 CSSCalcValue* calc;
351 Pair* pair; 340 Pair* pair;
352 Rect* rect;
353 Quad* quad;
354 } m_value; 341 } m_value;
355 }; 342 };
356 343
357 typedef CSSPrimitiveValue::CSSLengthArray CSSLengthArray; 344 typedef CSSPrimitiveValue::CSSLengthArray CSSLengthArray;
358 typedef CSSPrimitiveValue::CSSLengthTypeArray CSSLengthTypeArray; 345 typedef CSSPrimitiveValue::CSSLengthTypeArray CSSLengthTypeArray;
359 346
360 DEFINE_CSS_VALUE_TYPE_CASTS(CSSPrimitiveValue, isPrimitiveValue()); 347 DEFINE_CSS_VALUE_TYPE_CASTS(CSSPrimitiveValue, isPrimitiveValue());
361 348
362 } // namespace blink 349 } // namespace blink
363 350
364 #endif // CSSPrimitiveValue_h 351 #endif // CSSPrimitiveValue_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698