| OLD | NEW |
| 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 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 DotsPerPixel, | 94 DotsPerPixel, |
| 95 DotsPerInch, | 95 DotsPerInch, |
| 96 DotsPerCentimeter, | 96 DotsPerCentimeter, |
| 97 Fraction, | 97 Fraction, |
| 98 Integer, | 98 Integer, |
| 99 Rems, | 99 Rems, |
| 100 Chs, | 100 Chs, |
| 101 Calc, | 101 Calc, |
| 102 CalcPercentageWithNumber, | 102 CalcPercentageWithNumber, |
| 103 CalcPercentageWithLength, | 103 CalcPercentageWithLength, |
| 104 PropertyID, | |
| 105 ValueID, | 104 ValueID, |
| 106 | 105 |
| 107 // This value is used to handle quirky margins in reflow roots (body, td
, and th) like WinIE. | 106 // This value is used to handle quirky margins in reflow roots (body, td
, and th) like WinIE. |
| 108 // The basic idea is that a stylesheet can use the value __qem (for quir
ky em) instead of em. | 107 // The basic idea is that a stylesheet can use the value __qem (for quir
ky em) instead of em. |
| 109 // When the quirky value is used, if you're in quirks mode, the margin w
ill collapse away | 108 // When the quirky value is used, if you're in quirks mode, the margin w
ill collapse away |
| 110 // inside a table cell. This quirk is specified in the HTML spec but our
impl is different. | 109 // inside a table cell. This quirk is specified in the HTML spec but our
impl is different. |
| 111 // TODO: Remove this. crbug.com/443952 | 110 // TODO: Remove this. crbug.com/443952 |
| 112 QuirkyEms, | 111 QuirkyEms, |
| 113 }; | 112 }; |
| 114 | 113 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 bool isQuirkyEms() const { return type() == UnitType::QuirkyEms; } | 168 bool isQuirkyEms() const { return type() == UnitType::QuirkyEms; } |
| 170 bool isViewportPercentageLength() const { return isViewportPercentageLength(
type()); } | 169 bool isViewportPercentageLength() const { return isViewportPercentageLength(
type()); } |
| 171 static bool isViewportPercentageLength(UnitType type) { return type >= UnitT
ype::ViewportWidth && type <= UnitType::ViewportMax; } | 170 static bool isViewportPercentageLength(UnitType type) { return type >= UnitT
ype::ViewportWidth && type <= UnitType::ViewportMax; } |
| 172 static bool isLength(UnitType type) | 171 static bool isLength(UnitType type) |
| 173 { | 172 { |
| 174 return (type >= UnitType::Ems && type <= UnitType::Picas) || type == Uni
tType::QuirkyEms || type == UnitType::Rems || type == UnitType::Chs || isViewpor
tPercentageLength(type); | 173 return (type >= UnitType::Ems && type <= UnitType::Picas) || type == Uni
tType::QuirkyEms || type == UnitType::Rems || type == UnitType::Chs || isViewpor
tPercentageLength(type); |
| 175 } | 174 } |
| 176 bool isLength() const { return isLength(typeWithCalcResolved()); } | 175 bool isLength() const { return isLength(typeWithCalcResolved()); } |
| 177 bool isNumber() const { return typeWithCalcResolved() == UnitType::Number ||
typeWithCalcResolved() == UnitType::Integer; } | 176 bool isNumber() const { return typeWithCalcResolved() == UnitType::Number ||
typeWithCalcResolved() == UnitType::Integer; } |
| 178 bool isPercentage() const { return typeWithCalcResolved() == UnitType::Perce
ntage; } | 177 bool isPercentage() const { return typeWithCalcResolved() == UnitType::Perce
ntage; } |
| 179 bool isPropertyID() const { return type() == UnitType::PropertyID; } | |
| 180 bool isPx() const { return typeWithCalcResolved() == UnitType::Pixels; } | 178 bool isPx() const { return typeWithCalcResolved() == UnitType::Pixels; } |
| 181 bool isRGBColor() const { return type() == UnitType::RGBColor; } | 179 bool isRGBColor() const { return type() == UnitType::RGBColor; } |
| 182 bool isTime() const { return type() == UnitType::Seconds || type() == UnitTy
pe::Milliseconds; } | 180 bool isTime() const { return type() == UnitType::Seconds || type() == UnitTy
pe::Milliseconds; } |
| 183 bool isCalculated() const { return type() == UnitType::Calc; } | 181 bool isCalculated() const { return type() == UnitType::Calc; } |
| 184 bool isCalculatedPercentageWithNumber() const { return typeWithCalcResolved(
) == UnitType::CalcPercentageWithNumber; } | 182 bool isCalculatedPercentageWithNumber() const { return typeWithCalcResolved(
) == UnitType::CalcPercentageWithNumber; } |
| 185 bool isCalculatedPercentageWithLength() const { return typeWithCalcResolved(
) == UnitType::CalcPercentageWithLength; } | 183 bool isCalculatedPercentageWithLength() const { return typeWithCalcResolved(
) == UnitType::CalcPercentageWithLength; } |
| 186 static bool isDotsPerInch(UnitType type) { return type == UnitType::DotsPerI
nch; } | 184 static bool isDotsPerInch(UnitType type) { return type == UnitType::DotsPerI
nch; } |
| 187 static bool isDotsPerPixel(UnitType type) { return type == UnitType::DotsPer
Pixel; } | 185 static bool isDotsPerPixel(UnitType type) { return type == UnitType::DotsPer
Pixel; } |
| 188 static bool isDotsPerCentimeter(UnitType type) { return type == UnitType::Do
tsPerCentimeter; } | 186 static bool isDotsPerCentimeter(UnitType type) { return type == UnitType::Do
tsPerCentimeter; } |
| 189 static bool isResolution(UnitType type) { return type >= UnitType::DotsPerPi
xel && type <= UnitType::DotsPerCentimeter; } | 187 static bool isResolution(UnitType type) { return type >= UnitType::DotsPerPi
xel && type <= UnitType::DotsPerCentimeter; } |
| 190 bool isFlex() const { return typeWithCalcResolved() == UnitType::Fraction; } | 188 bool isFlex() const { return typeWithCalcResolved() == UnitType::Fraction; } |
| 191 bool isValueID() const { return type() == UnitType::ValueID; } | 189 bool isValueID() const { return type() == UnitType::ValueID; } |
| 192 bool colorIsDerivedFromElement() const; | 190 bool colorIsDerivedFromElement() const; |
| 193 | 191 |
| 194 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createIdentifier(CSSValueID
valueID) | 192 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createIdentifier(CSSValueID
valueID) |
| 195 { | 193 { |
| 196 return adoptRefWillBeNoop(new CSSPrimitiveValue(valueID)); | 194 return adoptRefWillBeNoop(new CSSPrimitiveValue(valueID)); |
| 197 } | 195 } |
| 198 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createIdentifier(CSSPropert
yID propertyID) | |
| 199 { | |
| 200 return adoptRefWillBeNoop(new CSSPrimitiveValue(propertyID)); | |
| 201 } | |
| 202 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createColor(RGBA32 rgbValue
) | 196 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> createColor(RGBA32 rgbValue
) |
| 203 { | 197 { |
| 204 return adoptRefWillBeNoop(new CSSPrimitiveValue(rgbValue)); | 198 return adoptRefWillBeNoop(new CSSPrimitiveValue(rgbValue)); |
| 205 } | 199 } |
| 206 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> create(double value, UnitTy
pe type) | 200 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> create(double value, UnitTy
pe type) |
| 207 { | 201 { |
| 208 return adoptRefWillBeNoop(new CSSPrimitiveValue(value, type)); | 202 return adoptRefWillBeNoop(new CSSPrimitiveValue(value, type)); |
| 209 } | 203 } |
| 210 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> create(const Length& value,
float zoom) | 204 static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> create(const Length& value,
float zoom) |
| 211 { | 205 { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 232 Length convertToLength(const CSSToLengthConversionData&) const; | 226 Length convertToLength(const CSSToLengthConversionData&) const; |
| 233 | 227 |
| 234 double getDoubleValue() const; | 228 double getDoubleValue() const; |
| 235 float getFloatValue() const { return getValue<float>(); } | 229 float getFloatValue() const { return getValue<float>(); } |
| 236 int getIntValue() const { return getValue<int>(); } | 230 int getIntValue() const { return getValue<int>(); } |
| 237 template<typename T> inline T getValue() const { return clampTo<T>(getDouble
Value()); } | 231 template<typename T> inline T getValue() const { return clampTo<T>(getDouble
Value()); } |
| 238 | 232 |
| 239 RGBA32 getRGBA32Value() const { ASSERT(isRGBColor()); return m_value.rgbcolo
r; } | 233 RGBA32 getRGBA32Value() const { ASSERT(isRGBColor()); return m_value.rgbcolo
r; } |
| 240 | 234 |
| 241 CSSCalcValue* cssCalcValue() const { ASSERT(isCalculated()); return m_value.
calc; } | 235 CSSCalcValue* cssCalcValue() const { ASSERT(isCalculated()); return m_value.
calc; } |
| 242 CSSPropertyID getPropertyID() const { ASSERT(isPropertyID()); return m_value
.propertyID; } | |
| 243 | 236 |
| 244 CSSValueID getValueID() const { return type() == UnitType::ValueID ? m_value
.valueID : CSSValueInvalid; } | 237 CSSValueID getValueID() const { return type() == UnitType::ValueID ? m_value
.valueID : CSSValueInvalid; } |
| 245 | 238 |
| 246 template<typename T> inline operator T() const; // Defined in CSSPrimitiveVa
lueMappings.h | 239 template<typename T> inline operator T() const; // Defined in CSSPrimitiveVa
lueMappings.h |
| 247 | 240 |
| 248 static const char* unitTypeToString(UnitType); | 241 static const char* unitTypeToString(UnitType); |
| 249 String customCSSText() const; | 242 String customCSSText() const; |
| 250 | 243 |
| 251 bool equals(const CSSPrimitiveValue&) const; | 244 bool equals(const CSSPrimitiveValue&) const; |
| 252 | 245 |
| 253 DECLARE_TRACE_AFTER_DISPATCH(); | 246 DECLARE_TRACE_AFTER_DISPATCH(); |
| 254 | 247 |
| 255 static UnitType canonicalUnitTypeForCategory(UnitCategory); | 248 static UnitType canonicalUnitTypeForCategory(UnitCategory); |
| 256 static double conversionToCanonicalUnitsScaleFactor(UnitType); | 249 static double conversionToCanonicalUnitsScaleFactor(UnitType); |
| 257 | 250 |
| 258 // Returns true and populates lengthUnitType, if unitType is a length unit.
Otherwise, returns false. | 251 // Returns true and populates lengthUnitType, if unitType is a length unit.
Otherwise, returns false. |
| 259 static bool unitTypeToLengthUnitType(UnitType, LengthUnitType&); | 252 static bool unitTypeToLengthUnitType(UnitType, LengthUnitType&); |
| 260 static UnitType lengthUnitTypeToUnitType(LengthUnitType); | 253 static UnitType lengthUnitTypeToUnitType(LengthUnitType); |
| 261 | 254 |
| 262 private: | 255 private: |
| 263 CSSPrimitiveValue(CSSValueID); | 256 CSSPrimitiveValue(CSSValueID); |
| 264 CSSPrimitiveValue(CSSPropertyID); | |
| 265 CSSPrimitiveValue(RGBA32 color); | 257 CSSPrimitiveValue(RGBA32 color); |
| 266 CSSPrimitiveValue(const Length&, float zoom); | 258 CSSPrimitiveValue(const Length&, float zoom); |
| 267 CSSPrimitiveValue(double, UnitType); | 259 CSSPrimitiveValue(double, UnitType); |
| 268 | 260 |
| 269 template<typename T> CSSPrimitiveValue(T); // Defined in CSSPrimitiveValueMa
ppings.h | 261 template<typename T> CSSPrimitiveValue(T); // Defined in CSSPrimitiveValueMa
ppings.h |
| 270 template<typename T> CSSPrimitiveValue(T* val) | 262 template<typename T> CSSPrimitiveValue(T* val) |
| 271 : CSSValue(PrimitiveClass) | 263 : CSSValue(PrimitiveClass) |
| 272 { | 264 { |
| 273 init(PassRefPtrWillBeRawPtr<T>(val)); | 265 init(PassRefPtrWillBeRawPtr<T>(val)); |
| 274 } | 266 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 285 | 277 |
| 286 void init(UnitType); | 278 void init(UnitType); |
| 287 void init(const Length&); | 279 void init(const Length&); |
| 288 void init(PassRefPtrWillBeRawPtr<CSSCalcValue>); | 280 void init(PassRefPtrWillBeRawPtr<CSSCalcValue>); |
| 289 | 281 |
| 290 double computeLengthDouble(const CSSToLengthConversionData&) const; | 282 double computeLengthDouble(const CSSToLengthConversionData&) const; |
| 291 | 283 |
| 292 inline UnitType type() const { return static_cast<UnitType>(m_primitiveUnitT
ype); } | 284 inline UnitType type() const { return static_cast<UnitType>(m_primitiveUnitT
ype); } |
| 293 | 285 |
| 294 union { | 286 union { |
| 295 CSSPropertyID propertyID; | |
| 296 CSSValueID valueID; | 287 CSSValueID valueID; |
| 297 double num; | 288 double num; |
| 298 RGBA32 rgbcolor; | 289 RGBA32 rgbcolor; |
| 299 // FIXME: oilpan: Should be a member, but no support for members in unio
ns. Just trace the raw ptr for now. | 290 // FIXME: oilpan: Should be a member, but no support for members in unio
ns. Just trace the raw ptr for now. |
| 300 CSSCalcValue* calc; | 291 CSSCalcValue* calc; |
| 301 } m_value; | 292 } m_value; |
| 302 }; | 293 }; |
| 303 | 294 |
| 304 using CSSLengthArray = CSSPrimitiveValue::CSSLengthArray; | 295 using CSSLengthArray = CSSPrimitiveValue::CSSLengthArray; |
| 305 using CSSLengthTypeArray = CSSPrimitiveValue::CSSLengthTypeArray; | 296 using CSSLengthTypeArray = CSSPrimitiveValue::CSSLengthTypeArray; |
| 306 | 297 |
| 307 DEFINE_CSS_VALUE_TYPE_CASTS(CSSPrimitiveValue, isPrimitiveValue()); | 298 DEFINE_CSS_VALUE_TYPE_CASTS(CSSPrimitiveValue, isPrimitiveValue()); |
| 308 | 299 |
| 309 } // namespace blink | 300 } // namespace blink |
| 310 | 301 |
| 311 #endif // CSSPrimitiveValue_h | 302 #endif // CSSPrimitiveValue_h |
| OLD | NEW |