| 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, 2007, 2008, 2012 Apple Inc. All rights reserv
ed. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2012 Apple Inc. All rights reserv
ed. |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 table.set(String("dpi"), CSSPrimitiveValue::CSS_DPI); | 136 table.set(String("dpi"), CSSPrimitiveValue::CSS_DPI); |
| 137 table.set(String("dpcm"), CSSPrimitiveValue::CSS_DPCM); | 137 table.set(String("dpcm"), CSSPrimitiveValue::CSS_DPCM); |
| 138 table.set(String("dppx"), CSSPrimitiveValue::CSS_DPPX); | 138 table.set(String("dppx"), CSSPrimitiveValue::CSS_DPPX); |
| 139 table.set(String("vw"), CSSPrimitiveValue::CSS_VW); | 139 table.set(String("vw"), CSSPrimitiveValue::CSS_VW); |
| 140 table.set(String("vh"), CSSPrimitiveValue::CSS_VH); | 140 table.set(String("vh"), CSSPrimitiveValue::CSS_VH); |
| 141 table.set(String("vmax"), CSSPrimitiveValue::CSS_VMIN); | 141 table.set(String("vmax"), CSSPrimitiveValue::CSS_VMIN); |
| 142 table.set(String("vmin"), CSSPrimitiveValue::CSS_VMAX); | 142 table.set(String("vmin"), CSSPrimitiveValue::CSS_VMAX); |
| 143 return table; | 143 return table; |
| 144 } | 144 } |
| 145 | 145 |
| 146 CSSPrimitiveValue::UnitType CSSPrimitiveValue::calcUnitType() const |
| 147 { |
| 148 CSSCalcExpressionNode* calcExpressionNode = cssCalcValue()->expressionNode()
; |
| 149 if (calcExpressionNode) |
| 150 return calcExpressionNode->primitiveType(); |
| 151 return CSS_UNKNOWN; |
| 152 } |
| 146 | 153 |
| 147 CSSPrimitiveValue::UnitType CSSPrimitiveValue::fromName(const String& unit) | 154 CSSPrimitiveValue::UnitType CSSPrimitiveValue::fromName(const String& unit) |
| 148 { | 155 { |
| 149 DEFINE_STATIC_LOCAL(StringToUnitTable, unitTable, (createStringToUnitTable()
)); | 156 DEFINE_STATIC_LOCAL(StringToUnitTable, unitTable, (createStringToUnitTable()
)); |
| 150 return unitTable.get(unit.lower()); | 157 return unitTable.get(unit.lower()); |
| 151 } | 158 } |
| 152 | 159 |
| 153 CSSPrimitiveValue::UnitCategory CSSPrimitiveValue::unitCategory(UnitType type) | 160 CSSPrimitiveValue::UnitCategory CSSPrimitiveValue::unitCategory(UnitType type) |
| 154 { | 161 { |
| 155 // Here we violate the spec (http://www.w3.org/TR/DOM-Level-2-Style/css.html
#CSS-CSSPrimitiveValue) and allow conversions | 162 // Here we violate the spec (http://www.w3.org/TR/DOM-Level-2-Style/css.html
#CSS-CSSPrimitiveValue) and allow conversions |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 | 216 |
| 210 CSSPrimitiveValue::UnitType CSSPrimitiveValue::primitiveType() const | 217 CSSPrimitiveValue::UnitType CSSPrimitiveValue::primitiveType() const |
| 211 { | 218 { |
| 212 if (m_primitiveUnitType == CSS_PROPERTY_ID || m_primitiveUnitType == CSS_VAL
UE_ID) | 219 if (m_primitiveUnitType == CSS_PROPERTY_ID || m_primitiveUnitType == CSS_VAL
UE_ID) |
| 213 return CSS_IDENT; | 220 return CSS_IDENT; |
| 214 | 221 |
| 215 if (m_primitiveUnitType != CSS_CALC) | 222 if (m_primitiveUnitType != CSS_CALC) |
| 216 return static_cast<UnitType>(m_primitiveUnitType); | 223 return static_cast<UnitType>(m_primitiveUnitType); |
| 217 | 224 |
| 218 switch (m_value.calc->category()) { | 225 switch (m_value.calc->category()) { |
| 226 case CalcAngle: |
| 227 return CSS_DEG; |
| 228 case CalcFrequency: |
| 229 return CSS_HZ; |
| 219 case CalcNumber: | 230 case CalcNumber: |
| 220 return CSS_NUMBER; | 231 return CSS_NUMBER; |
| 221 case CalcPercent: | 232 case CalcPercent: |
| 222 return CSS_PERCENTAGE; | 233 return CSS_PERCENTAGE; |
| 223 case CalcLength: | 234 case CalcLength: |
| 224 return CSS_PX; | 235 return CSS_PX; |
| 225 case CalcPercentNumber: | 236 case CalcPercentNumber: |
| 226 return CSS_CALC_PERCENTAGE_WITH_NUMBER; | 237 return CSS_CALC_PERCENTAGE_WITH_NUMBER; |
| 227 case CalcPercentLength: | 238 case CalcPercentLength: |
| 228 return CSS_CALC_PERCENTAGE_WITH_LENGTH; | 239 return CSS_CALC_PERCENTAGE_WITH_LENGTH; |
| 240 case CalcTime: |
| 241 return CSS_MS; |
| 229 case CalcOther: | 242 case CalcOther: |
| 230 return CSS_UNKNOWN; | 243 return CSS_UNKNOWN; |
| 231 } | 244 } |
| 232 return CSS_UNKNOWN; | 245 return CSS_UNKNOWN; |
| 233 } | 246 } |
| 234 | 247 |
| 235 static const AtomicString& propertyName(CSSPropertyID propertyID) | 248 static const AtomicString& propertyName(CSSPropertyID propertyID) |
| 236 { | 249 { |
| 237 ASSERT_ARG(propertyID, propertyID >= 0); | 250 ASSERT_ARG(propertyID, propertyID >= 0); |
| 238 ASSERT_ARG(propertyID, (propertyID >= firstCSSProperty && propertyID < first
CSSProperty + numCSSProperties)); | 251 ASSERT_ARG(propertyID, (propertyID >= firstCSSProperty && propertyID < first
CSSProperty + numCSSProperties)); |
| (...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 527 case CSS_VALUE_ID: | 540 case CSS_VALUE_ID: |
| 528 break; | 541 break; |
| 529 } | 542 } |
| 530 m_primitiveUnitType = 0; | 543 m_primitiveUnitType = 0; |
| 531 if (m_hasCachedCSSText) { | 544 if (m_hasCachedCSSText) { |
| 532 cssTextCache().remove(this); | 545 cssTextCache().remove(this); |
| 533 m_hasCachedCSSText = false; | 546 m_hasCachedCSSText = false; |
| 534 } | 547 } |
| 535 } | 548 } |
| 536 | 549 |
| 550 double CSSPrimitiveValue::computeSeconds() |
| 551 { |
| 552 ASSERT(isTime() || (isCalculated() && cssCalcValue()->category() == CalcTime
)); |
| 553 UnitType currentType = isCalculated() ? calcUnitType() : static_cast<UnitTyp
e>(m_primitiveUnitType); |
| 554 if (currentType == CSS_S) |
| 555 return getDoubleValue(); |
| 556 if (currentType == CSS_MS) |
| 557 return getDoubleValue() / 1000; |
| 558 ASSERT_NOT_REACHED(); |
| 559 return 0; |
| 560 } |
| 561 |
| 537 double CSSPrimitiveValue::computeDegrees() | 562 double CSSPrimitiveValue::computeDegrees() |
| 538 { | 563 { |
| 539 switch (m_primitiveUnitType) { | 564 ASSERT(isAngle() || (isCalculated() && cssCalcValue()->category() == CalcAng
le)); |
| 565 UnitType currentType = isCalculated() ? calcUnitType() : static_cast<UnitTyp
e>(m_primitiveUnitType); |
| 566 switch (currentType) { |
| 540 case CSS_DEG: | 567 case CSS_DEG: |
| 541 return getDoubleValue(); | 568 return getDoubleValue(); |
| 542 case CSS_RAD: | 569 case CSS_RAD: |
| 543 return rad2deg(getDoubleValue()); | 570 return rad2deg(getDoubleValue()); |
| 544 case CSS_GRAD: | 571 case CSS_GRAD: |
| 545 return grad2deg(getDoubleValue()); | 572 return grad2deg(getDoubleValue()); |
| 546 case CSS_TURN: | 573 case CSS_TURN: |
| 547 return turn2deg(getDoubleValue()); | 574 return turn2deg(getDoubleValue()); |
| 548 default: | 575 default: |
| 549 ASSERT_NOT_REACHED(); | 576 ASSERT_NOT_REACHED(); |
| (...skipping 882 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1432 case CSS_SHAPE: | 1459 case CSS_SHAPE: |
| 1433 visitor->trace(m_value.shape); | 1460 visitor->trace(m_value.shape); |
| 1434 break; | 1461 break; |
| 1435 default: | 1462 default: |
| 1436 break; | 1463 break; |
| 1437 } | 1464 } |
| 1438 CSSValue::traceAfterDispatch(visitor); | 1465 CSSValue::traceAfterDispatch(visitor); |
| 1439 } | 1466 } |
| 1440 | 1467 |
| 1441 } // namespace WebCore | 1468 } // namespace WebCore |
| OLD | NEW |