Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 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 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 117 case CSSPrimitiveValue::UnitType::DotsPerPixel: | 117 case CSSPrimitiveValue::UnitType::DotsPerPixel: |
| 118 case CSSPrimitiveValue::UnitType::DotsPerInch: | 118 case CSSPrimitiveValue::UnitType::DotsPerInch: |
| 119 case CSSPrimitiveValue::UnitType::DotsPerCentimeter: | 119 case CSSPrimitiveValue::UnitType::DotsPerCentimeter: |
| 120 case CSSPrimitiveValue::UnitType::Fraction: | 120 case CSSPrimitiveValue::UnitType::Fraction: |
| 121 case CSSPrimitiveValue::UnitType::Integer: | 121 case CSSPrimitiveValue::UnitType::Integer: |
| 122 return true; | 122 return true; |
| 123 case CSSPrimitiveValue::UnitType::Unknown: | 123 case CSSPrimitiveValue::UnitType::Unknown: |
| 124 case CSSPrimitiveValue::UnitType::Calc: | 124 case CSSPrimitiveValue::UnitType::Calc: |
| 125 case CSSPrimitiveValue::UnitType::CalcPercentageWithNumber: | 125 case CSSPrimitiveValue::UnitType::CalcPercentageWithNumber: |
| 126 case CSSPrimitiveValue::UnitType::CalcPercentageWithLength: | 126 case CSSPrimitiveValue::UnitType::CalcPercentageWithLength: |
| 127 case CSSPrimitiveValue::UnitType::CalcLengthWithNumber: | |
| 128 case CSSPrimitiveValue::UnitType::CalcPercentageWithLengthAndNumber: | |
| 127 case CSSPrimitiveValue::UnitType::ValueID: | 129 case CSSPrimitiveValue::UnitType::ValueID: |
| 128 case CSSPrimitiveValue::UnitType::QuirkyEms: | 130 case CSSPrimitiveValue::UnitType::QuirkyEms: |
| 129 return false; | 131 return false; |
| 130 }; | 132 }; |
| 131 ASSERT_NOT_REACHED(); | 133 ASSERT_NOT_REACHED(); |
| 132 return false; | 134 return false; |
| 133 } | 135 } |
| 134 | 136 |
| 135 static String buildCSSText(const String& expression) | 137 static String buildCSSText(const String& expression) |
| 136 { | 138 { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 198 void accumulatePixelsAndPercent(const CSSToLengthConversionData& conversionD ata, PixelsAndPercent& value, float multiplier) const override | 200 void accumulatePixelsAndPercent(const CSSToLengthConversionData& conversionD ata, PixelsAndPercent& value, float multiplier) const override |
| 199 { | 201 { |
| 200 switch (m_category) { | 202 switch (m_category) { |
| 201 case CalcLength: | 203 case CalcLength: |
| 202 value.pixels += m_value->computeLength<float>(conversionData) * mult iplier; | 204 value.pixels += m_value->computeLength<float>(conversionData) * mult iplier; |
| 203 break; | 205 break; |
| 204 case CalcPercent: | 206 case CalcPercent: |
| 205 ASSERT(m_value->isPercentage()); | 207 ASSERT(m_value->isPercentage()); |
| 206 value.percent += m_value->getDoubleValue() * multiplier; | 208 value.percent += m_value->getDoubleValue() * multiplier; |
| 207 break; | 209 break; |
| 210 case CalcNumber: | |
|
alancutter (OOO until 2018)
2016/07/06 07:45:46
This is not true for border-image-width (which doe
| |
| 211 value.pixels += m_value->getDoubleValue() * multiplier; | |
| 212 break; | |
| 208 default: | 213 default: |
| 209 ASSERT_NOT_REACHED(); | 214 ASSERT_NOT_REACHED(); |
| 210 } | 215 } |
| 211 } | 216 } |
| 212 | 217 |
| 213 double doubleValue() const override | 218 double doubleValue() const override |
| 214 { | 219 { |
| 215 if (hasDoubleValue(typeWithCalcResolved())) | 220 if (hasDoubleValue(typeWithCalcResolved())) |
| 216 return m_value->getDoubleValue(); | 221 return m_value->getDoubleValue(); |
| 217 ASSERT_NOT_REACHED(); | 222 ASSERT_NOT_REACHED(); |
| 218 return 0; | 223 return 0; |
| 219 } | 224 } |
| 220 | 225 |
| 221 double computeLengthPx(const CSSToLengthConversionData& conversionData) cons t override | 226 double computeLengthPx(const CSSToLengthConversionData& conversionData) cons t override |
| 222 { | 227 { |
| 223 switch (m_category) { | 228 switch (m_category) { |
| 224 case CalcLength: | 229 case CalcLength: |
| 225 return m_value->computeLength<double>(conversionData); | 230 return m_value->computeLength<double>(conversionData); |
| 226 case CalcNumber: | 231 case CalcNumber: |
| 227 case CalcPercent: | 232 case CalcPercent: |
| 228 return m_value->getDoubleValue(); | 233 return m_value->getDoubleValue(); |
| 229 case CalcAngle: | 234 case CalcAngle: |
| 230 case CalcFrequency: | 235 case CalcFrequency: |
| 231 case CalcPercentLength: | 236 case CalcPercentLength: |
| 232 case CalcPercentNumber: | 237 case CalcPercentNumber: |
| 233 case CalcTime: | 238 case CalcTime: |
| 239 case CalcLengthNumber: | |
| 240 case CalcPercentLengthNumber: | |
| 234 case CalcOther: | 241 case CalcOther: |
| 235 ASSERT_NOT_REACHED(); | 242 ASSERT_NOT_REACHED(); |
| 236 break; | 243 break; |
| 237 } | 244 } |
| 238 ASSERT_NOT_REACHED(); | 245 ASSERT_NOT_REACHED(); |
| 239 return 0; | 246 return 0; |
| 240 } | 247 } |
| 241 | 248 |
| 242 void accumulateLengthArray(CSSLengthArray& lengthArray, double multiplier) c onst override | 249 void accumulateLengthArray(CSSLengthArray& lengthArray, double multiplier) c onst override |
| 243 { | 250 { |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 270 CSSCalcPrimitiveValue(CSSPrimitiveValue* value, bool isInteger) | 277 CSSCalcPrimitiveValue(CSSPrimitiveValue* value, bool isInteger) |
| 271 : CSSCalcExpressionNode(unitCategory(value->typeWithCalcResolved()), isI nteger) | 278 : CSSCalcExpressionNode(unitCategory(value->typeWithCalcResolved()), isI nteger) |
| 272 , m_value(value) | 279 , m_value(value) |
| 273 { | 280 { |
| 274 } | 281 } |
| 275 | 282 |
| 276 Member<CSSPrimitiveValue> m_value; | 283 Member<CSSPrimitiveValue> m_value; |
| 277 }; | 284 }; |
| 278 | 285 |
| 279 static const CalculationCategory addSubtractResult[CalcOther][CalcOther] = { | 286 static const CalculationCategory addSubtractResult[CalcOther][CalcOther] = { |
| 280 // CalcNumber CalcLength CalcPercent CalcPercentNumber CalcPercentLength CalcAngle CalcTime CalcFrequency | 287 // CalcNumber CalcLength CalcPercent CalcPercentNumber CalcPercentLength Cal cAngle CalcTime CalcFrequency CalcLengthNumber CalcPercentLengthNumb er |
| 281 /* CalcNumber */ { CalcNumber, CalcOther, CalcPercentNumbe r, CalcPercentNumber, CalcOther, CalcOther, CalcOther, CalcOther }, | 288 /* CalcNumber */ { CalcNumber, CalcLengthNumber, CalcPercentNumber, CalcPercentNumber, CalcOther, Cal cOther, CalcOther, CalcOther, CalcLengthNumber, CalcPercentLengthNumb er }, |
| 282 /* CalcLength */ { CalcOther, CalcLength, CalcPercentLengt h, CalcOther, CalcPercentLength, CalcOther, CalcOther, CalcOther }, | 289 /* CalcLength */ { CalcLengthNumber, CalcLength, CalcPercentLength, CalcOther, CalcPercentLength, Cal cOther, CalcOther, CalcOther, CalcLengthNumber, CalcPercentLengthNumb er }, |
| 283 /* CalcPercent */ { CalcPercentNumber, CalcPercentLength, CalcPercent, CalcPercentNumber, CalcPercentLength, CalcOther, CalcOther, CalcOther }, | 290 /* CalcPercent */ { CalcPercentNumber, CalcPercentLength, CalcPercent, CalcPercentNumber, CalcPercentLength, Cal cOther, CalcOther, CalcOther, CalcPercentLengthNumber, CalcPercentLengthNumb er }, |
| 284 /* CalcPercentNumber */ { CalcPercentNumber, CalcOther, CalcPercentNumbe r, CalcPercentNumber, CalcOther, CalcOther, CalcOther, CalcOther }, | 291 /* CalcPercentNumber */ { CalcPercentNumber, CalcPercentLengthNumber , CalcPercentNumber, CalcPercentNumber, CalcPercentLengthNumber, Cal cOther, CalcOther, CalcOther, CalcOther, CalcPercentLengthNumb er }, |
| 285 /* CalcPercentLength */ { CalcOther, CalcPercentLength, CalcPercentLengt h, CalcOther, CalcPercentLength, CalcOther, CalcOther, CalcOther }, | 292 /* CalcPercentLength */ { CalcPercentLengthNumber, CalcPercentLength, CalcPercentLength, CalcPercentLengthNumber, CalcPercentLength, Cal cOther, CalcOther, CalcOther, CalcOther, CalcPercentLengthNumb er }, |
| 286 /* CalcAngle */ { CalcOther, CalcOther, CalcOther, CalcOther, CalcOther, CalcAngle, CalcOther, CalcOther }, | 293 /* CalcAngle */ { CalcOther, CalcOther, CalcOther, CalcOther, CalcOther, Cal cAngle, CalcOther, CalcOther, CalcOther, CalcOther }, |
| 287 /* CalcTime */ { CalcOther, CalcOther, CalcOther, CalcOther, CalcOther, CalcOther, CalcTime, CalcOther }, | 294 /* CalcTime */ { CalcOther, CalcOther, CalcOther, CalcOther, CalcOther, Cal cOther, CalcTime, CalcOther, CalcOther, CalcOther }, |
| 288 /* CalcFrequency */ { CalcOther, CalcOther, CalcOther, CalcOther, CalcOther, CalcOther, CalcOther, CalcFrequency } | 295 /* CalcFrequency */ { CalcOther, CalcOther, CalcOther, CalcOther, CalcOther, Cal cOther, CalcOther, CalcFrequency, CalcOther, CalcOther }, |
| 296 /* CalcLengthNumber */ { CalcLengthNumber, CalcLengthNumber, CalcPercentLengthNumber, CalcPercentLengthNumber, CalcPercentLengthNumber, Cal cOther, CalcOther, CalcOther, CalcLengthNumber, CalcPercentLengthNumb er }, | |
| 297 /* CalcPercentLengthNumber */ { CalcPercentLengthNumber, CalcPercentLengthNumber , CalcPercentLengthNumber, CalcPercentLengthNumber, CalcPercentLengthNumber, Cal cOther, CalcOther, CalcOther, CalcPercentLengthNumber, CalcPercentLengthNumb er } | |
| 289 }; | 298 }; |
| 290 | 299 |
| 291 static CalculationCategory determineCategory(const CSSCalcExpressionNode& leftSi de, const CSSCalcExpressionNode& rightSide, CalcOperator op) | 300 static CalculationCategory determineCategory(const CSSCalcExpressionNode& leftSi de, const CSSCalcExpressionNode& rightSide, CalcOperator op) |
| 292 { | 301 { |
| 293 CalculationCategory leftCategory = leftSide.category(); | 302 CalculationCategory leftCategory = leftSide.category(); |
| 294 CalculationCategory rightCategory = rightSide.category(); | 303 CalculationCategory rightCategory = rightSide.category(); |
| 295 | 304 |
| 296 if (leftCategory == CalcOther || rightCategory == CalcOther) | 305 if (leftCategory == CalcOther || rightCategory == CalcOther) |
| 297 return CalcOther; | 306 return CalcOther; |
| 298 | 307 |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 512 return CSSPrimitiveValue::UnitType::Unknown; | 521 return CSSPrimitiveValue::UnitType::Unknown; |
| 513 } | 522 } |
| 514 case CalcAngle: | 523 case CalcAngle: |
| 515 return CSSPrimitiveValue::UnitType::Degrees; | 524 return CSSPrimitiveValue::UnitType::Degrees; |
| 516 case CalcTime: | 525 case CalcTime: |
| 517 return CSSPrimitiveValue::UnitType::Milliseconds; | 526 return CSSPrimitiveValue::UnitType::Milliseconds; |
| 518 case CalcFrequency: | 527 case CalcFrequency: |
| 519 return CSSPrimitiveValue::UnitType::Hertz; | 528 return CSSPrimitiveValue::UnitType::Hertz; |
| 520 case CalcPercentLength: | 529 case CalcPercentLength: |
| 521 case CalcPercentNumber: | 530 case CalcPercentNumber: |
| 531 case CalcLengthNumber: | |
| 532 case CalcPercentLengthNumber: | |
| 522 case CalcOther: | 533 case CalcOther: |
| 523 return CSSPrimitiveValue::UnitType::Unknown; | 534 return CSSPrimitiveValue::UnitType::Unknown; |
| 524 } | 535 } |
| 525 ASSERT_NOT_REACHED(); | 536 ASSERT_NOT_REACHED(); |
| 526 return CSSPrimitiveValue::UnitType::Unknown; | 537 return CSSPrimitiveValue::UnitType::Unknown; |
| 527 } | 538 } |
| 528 | 539 |
| 529 DEFINE_INLINE_VIRTUAL_TRACE() | 540 DEFINE_INLINE_VIRTUAL_TRACE() |
| 530 { | 541 { |
| 531 visitor->trace(m_leftSide); | 542 visitor->trace(m_leftSide); |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 734 | 745 |
| 735 return expression ? new CSSCalcValue(expression, range) : nullptr; | 746 return expression ? new CSSCalcValue(expression, range) : nullptr; |
| 736 } | 747 } |
| 737 | 748 |
| 738 CSSCalcValue* CSSCalcValue::create(CSSCalcExpressionNode* expression, ValueRange range) | 749 CSSCalcValue* CSSCalcValue::create(CSSCalcExpressionNode* expression, ValueRange range) |
| 739 { | 750 { |
| 740 return new CSSCalcValue(expression, range); | 751 return new CSSCalcValue(expression, range); |
| 741 } | 752 } |
| 742 | 753 |
| 743 } // namespace blink | 754 } // namespace blink |
| OLD | NEW |