| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2015 Google Inc. All rights reserved. | 3 * Copyright (C) 2015 Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 474 } else { | 474 } else { |
| 475 // Normalization failed because the stop set is coincident. | 475 // Normalization failed because the stop set is coincident. |
| 476 } | 476 } |
| 477 } else { | 477 } else { |
| 478 // No normalization required, just add the current stops. | 478 // No normalization required, just add the current stops. |
| 479 for (const auto& stop : stops) | 479 for (const auto& stop : stops) |
| 480 gradient->addColorStop(stop.offset, stop.color); | 480 gradient->addColorStop(stop.offset, stop.color); |
| 481 } | 481 } |
| 482 } | 482 } |
| 483 | 483 |
| 484 static float positionFromValue(CSSValue* value, const CSSToLengthConversionData&
conversionData, const IntSize& size, bool isHorizontal) | 484 static float positionFromValue(const CSSValue* value, const CSSToLengthConversio
nData& conversionData, const IntSize& size, bool isHorizontal) |
| 485 { | 485 { |
| 486 int origin = 0; | 486 int origin = 0; |
| 487 int sign = 1; | 487 int sign = 1; |
| 488 int edgeDistance = isHorizontal ? size.width() : size.height(); | 488 int edgeDistance = isHorizontal ? size.width() : size.height(); |
| 489 | 489 |
| 490 // In this case the center of the gradient is given relative to an edge in t
he form of: | 490 // In this case the center of the gradient is given relative to an edge in t
he form of: |
| 491 // [ top | bottom | right | left ] [ <percentage> | <length> ]. | 491 // [ top | bottom | right | left ] [ <percentage> | <length> ]. |
| 492 if (value->isValuePair()) { | 492 if (value->isValuePair()) { |
| 493 CSSValuePair& pair = toCSSValuePair(*value); | 493 const CSSValuePair& pair = toCSSValuePair(*value); |
| 494 CSSValueID originID = toCSSPrimitiveValue(pair.first()).getValueID(); | 494 CSSValueID originID = toCSSPrimitiveValue(pair.first()).getValueID(); |
| 495 value = &pair.second(); | 495 value = &pair.second(); |
| 496 | 496 |
| 497 if (originID == CSSValueRight || originID == CSSValueBottom) { | 497 if (originID == CSSValueRight || originID == CSSValueBottom) { |
| 498 // For right/bottom, the offset is relative to the far edge. | 498 // For right/bottom, the offset is relative to the far edge. |
| 499 origin = edgeDistance; | 499 origin = edgeDistance; |
| 500 sign = -1; | 500 sign = -1; |
| 501 } | 501 } |
| 502 } | 502 } |
| 503 | 503 |
| 504 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); | 504 const CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); |
| 505 | 505 |
| 506 if (primitiveValue->isNumber()) | 506 if (primitiveValue->isNumber()) |
| 507 return origin + sign * primitiveValue->getFloatValue() * conversionData.
zoom(); | 507 return origin + sign * primitiveValue->getFloatValue() * conversionData.
zoom(); |
| 508 | 508 |
| 509 if (primitiveValue->isPercentage()) | 509 if (primitiveValue->isPercentage()) |
| 510 return origin + sign * primitiveValue->getFloatValue() / 100.f * edgeDis
tance; | 510 return origin + sign * primitiveValue->getFloatValue() / 100.f * edgeDis
tance; |
| 511 | 511 |
| 512 if (primitiveValue->isCalculatedPercentageWithLength()) | 512 if (primitiveValue->isCalculatedPercentageWithLength()) |
| 513 return origin + sign * primitiveValue->cssCalcValue()->toCalcValue(conve
rsionData)->evaluate(edgeDistance); | 513 return origin + sign * primitiveValue->cssCalcValue()->toCalcValue(conve
rsionData)->evaluate(edgeDistance); |
| 514 | 514 |
| (...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1222 visitor->trace(m_firstRadius); | 1222 visitor->trace(m_firstRadius); |
| 1223 visitor->trace(m_secondRadius); | 1223 visitor->trace(m_secondRadius); |
| 1224 visitor->trace(m_shape); | 1224 visitor->trace(m_shape); |
| 1225 visitor->trace(m_sizingBehavior); | 1225 visitor->trace(m_sizingBehavior); |
| 1226 visitor->trace(m_endHorizontalSize); | 1226 visitor->trace(m_endHorizontalSize); |
| 1227 visitor->trace(m_endVerticalSize); | 1227 visitor->trace(m_endVerticalSize); |
| 1228 CSSGradientValue::traceAfterDispatch(visitor); | 1228 CSSGradientValue::traceAfterDispatch(visitor); |
| 1229 } | 1229 } |
| 1230 | 1230 |
| 1231 } // namespace blink | 1231 } // namespace blink |
| OLD | NEW |