| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 2 * Copyright (C) Research In Motion Limited 2011. All rights reserved. |
| 3 * | 3 * |
| 4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
| 5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
| 6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
| 7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
| 8 * | 8 * |
| 9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 #include "core/svg/ColorDistance.h" | 25 #include "core/svg/ColorDistance.h" |
| 26 #include "core/svg/SVGAnimateElement.h" | 26 #include "core/svg/SVGAnimateElement.h" |
| 27 | 27 |
| 28 namespace blink { | 28 namespace blink { |
| 29 | 29 |
| 30 String SVGColorProperty::valueAsString() const | 30 String SVGColorProperty::valueAsString() const |
| 31 { | 31 { |
| 32 return m_styleColor.isCurrentColor() ? "currentColor" : m_styleColor.color()
.serializedAsCSSComponentValue(); | 32 return m_styleColor.isCurrentColor() ? "currentColor" : m_styleColor.color()
.serializedAsCSSComponentValue(); |
| 33 } | 33 } |
| 34 | 34 |
| 35 PassRefPtr<SVGPropertyBase> SVGColorProperty::cloneForAnimation(const String&) c
onst | 35 PassRefPtrWillBeRawPtr<SVGPropertyBase> SVGColorProperty::cloneForAnimation(cons
t String&) const |
| 36 { | 36 { |
| 37 // SVGAnimatedColor is deprecated. So No SVG DOM animation. | 37 // SVGAnimatedColor is deprecated. So No SVG DOM animation. |
| 38 ASSERT_NOT_REACHED(); | 38 ASSERT_NOT_REACHED(); |
| 39 return nullptr; | 39 return nullptr; |
| 40 } | 40 } |
| 41 | 41 |
| 42 static inline Color fallbackColorForCurrentColor(SVGElement* targetElement) | 42 static inline Color fallbackColorForCurrentColor(SVGElement* targetElement) |
| 43 { | 43 { |
| 44 ASSERT(targetElement); | 44 ASSERT(targetElement); |
| 45 if (RenderObject* targetRenderer = targetElement->renderer()) | 45 if (RenderObject* targetRenderer = targetElement->renderer()) |
| 46 return targetRenderer->style()->visitedDependentColor(CSSPropertyColor); | 46 return targetRenderer->style()->visitedDependentColor(CSSPropertyColor); |
| 47 else | 47 else |
| 48 return Color::transparent; | 48 return Color::transparent; |
| 49 } | 49 } |
| 50 | 50 |
| 51 void SVGColorProperty::add(PassRefPtrWillBeRawPtr<SVGPropertyBase> other, SVGEle
ment* contextElement) | 51 void SVGColorProperty::add(PassRefPtrWillBeRawPtr<SVGPropertyBase> other, SVGEle
ment* contextElement) |
| 52 { | 52 { |
| 53 ASSERT(contextElement); | 53 ASSERT(contextElement); |
| 54 | 54 |
| 55 Color fallbackColor = fallbackColorForCurrentColor(contextElement); | 55 Color fallbackColor = fallbackColorForCurrentColor(contextElement); |
| 56 Color fromColor = toSVGColorProperty(other)->m_styleColor.resolve(fallbackCo
lor); | 56 Color fromColor = toSVGColorProperty(other)->m_styleColor.resolve(fallbackCo
lor); |
| 57 Color toColor = m_styleColor.resolve(fallbackColor); | 57 Color toColor = m_styleColor.resolve(fallbackColor); |
| 58 m_styleColor = StyleColor(ColorDistance::addColors(fromColor, toColor)); | 58 m_styleColor = StyleColor(ColorDistance::addColors(fromColor, toColor)); |
| 59 } | 59 } |
| 60 | 60 |
| 61 void SVGColorProperty::calculateAnimatedValue(SVGAnimationElement* animationElem
ent, float percentage, unsigned repeatCount, PassRefPtr<SVGPropertyBase> fromVal
ue, PassRefPtr<SVGPropertyBase> toValue, PassRefPtr<SVGPropertyBase> toAtEndOfDu
rationValue, SVGElement* contextElement) | 61 void SVGColorProperty::calculateAnimatedValue(SVGAnimationElement* animationElem
ent, float percentage, unsigned repeatCount, PassRefPtrWillBeRawPtr<SVGPropertyB
ase> fromValue, PassRefPtrWillBeRawPtr<SVGPropertyBase> toValue, PassRefPtrWillB
eRawPtr<SVGPropertyBase> toAtEndOfDurationValue, SVGElement* contextElement) |
| 62 { | 62 { |
| 63 StyleColor fromStyleColor = toSVGColorProperty(fromValue)->m_styleColor; | 63 StyleColor fromStyleColor = toSVGColorProperty(fromValue)->m_styleColor; |
| 64 StyleColor toStyleColor = toSVGColorProperty(toValue)->m_styleColor; | 64 StyleColor toStyleColor = toSVGColorProperty(toValue)->m_styleColor; |
| 65 StyleColor toAtEndOfDurationStyleColor = toSVGColorProperty(toAtEndOfDuratio
nValue)->m_styleColor; | 65 StyleColor toAtEndOfDurationStyleColor = toSVGColorProperty(toAtEndOfDuratio
nValue)->m_styleColor; |
| 66 | 66 |
| 67 // Apply currentColor rules. | 67 // Apply currentColor rules. |
| 68 ASSERT(contextElement); | 68 ASSERT(contextElement); |
| 69 Color fallbackColor = fallbackColorForCurrentColor(contextElement); | 69 Color fallbackColor = fallbackColorForCurrentColor(contextElement); |
| 70 Color fromColor = fromStyleColor.resolve(fallbackColor); | 70 Color fromColor = fromStyleColor.resolve(fallbackColor); |
| 71 Color toColor = toStyleColor.resolve(fallbackColor); | 71 Color toColor = toStyleColor.resolve(fallbackColor); |
| 72 Color toAtEndOfDurationColor = toAtEndOfDurationStyleColor.resolve(fallbackC
olor); | 72 Color toAtEndOfDurationColor = toAtEndOfDurationStyleColor.resolve(fallbackC
olor); |
| 73 Color animatedColor = m_styleColor.resolve(fallbackColor); | 73 Color animatedColor = m_styleColor.resolve(fallbackColor); |
| 74 | 74 |
| 75 ASSERT(animationElement); | 75 ASSERT(animationElement); |
| 76 float animatedRed = animatedColor.red(); | 76 float animatedRed = animatedColor.red(); |
| 77 animationElement->animateAdditiveNumber(percentage, repeatCount, fromColor.r
ed(), toColor.red(), toAtEndOfDurationColor.red(), animatedRed); | 77 animationElement->animateAdditiveNumber(percentage, repeatCount, fromColor.r
ed(), toColor.red(), toAtEndOfDurationColor.red(), animatedRed); |
| 78 | 78 |
| 79 float animatedGreen = animatedColor.green(); | 79 float animatedGreen = animatedColor.green(); |
| 80 animationElement->animateAdditiveNumber(percentage, repeatCount, fromColor.g
reen(), toColor.green(), toAtEndOfDurationColor.green(), animatedGreen); | 80 animationElement->animateAdditiveNumber(percentage, repeatCount, fromColor.g
reen(), toColor.green(), toAtEndOfDurationColor.green(), animatedGreen); |
| 81 | 81 |
| 82 float animatedBlue = animatedColor.blue(); | 82 float animatedBlue = animatedColor.blue(); |
| 83 animationElement->animateAdditiveNumber(percentage, repeatCount, fromColor.b
lue(), toColor.blue(), toAtEndOfDurationColor.blue(), animatedBlue); | 83 animationElement->animateAdditiveNumber(percentage, repeatCount, fromColor.b
lue(), toColor.blue(), toAtEndOfDurationColor.blue(), animatedBlue); |
| 84 | 84 |
| 85 float animatedAlpha = animatedColor.alpha(); | 85 float animatedAlpha = animatedColor.alpha(); |
| 86 animationElement->animateAdditiveNumber(percentage, repeatCount, fromColor.a
lpha(), toColor.alpha(), toAtEndOfDurationColor.alpha(), animatedAlpha); | 86 animationElement->animateAdditiveNumber(percentage, repeatCount, fromColor.a
lpha(), toColor.alpha(), toAtEndOfDurationColor.alpha(), animatedAlpha); |
| 87 | 87 |
| 88 m_styleColor = StyleColor(makeRGBA(roundf(animatedRed), roundf(animatedGreen
), roundf(animatedBlue), roundf(animatedAlpha))); | 88 m_styleColor = StyleColor(makeRGBA(roundf(animatedRed), roundf(animatedGreen
), roundf(animatedBlue), roundf(animatedAlpha))); |
| 89 } | 89 } |
| 90 | 90 |
| 91 float SVGColorProperty::calculateDistance(PassRefPtr<SVGPropertyBase> toValue, S
VGElement* contextElement) | 91 float SVGColorProperty::calculateDistance(PassRefPtrWillBeRawPtr<SVGPropertyBase
> toValue, SVGElement* contextElement) |
| 92 { | 92 { |
| 93 ASSERT(contextElement); | 93 ASSERT(contextElement); |
| 94 Color fallbackColor = fallbackColorForCurrentColor(contextElement); | 94 Color fallbackColor = fallbackColorForCurrentColor(contextElement); |
| 95 | 95 |
| 96 Color fromColor = m_styleColor.resolve(fallbackColor); | 96 Color fromColor = m_styleColor.resolve(fallbackColor); |
| 97 Color toColor = toSVGColorProperty(toValue)->m_styleColor.resolve(fallbackCo
lor); | 97 Color toColor = toSVGColorProperty(toValue)->m_styleColor.resolve(fallbackCo
lor); |
| 98 return ColorDistance::distance(fromColor, toColor); | 98 return ColorDistance::distance(fromColor, toColor); |
| 99 } | 99 } |
| 100 | 100 |
| 101 } | 101 } |
| OLD | NEW |