| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2006, 2008 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2006, 2008 Nikolas Zimmermann <zimmermann@kde.org> |
| 3 * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org> |
| 4 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 4 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| 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 30 matching lines...) Expand all Loading... |
| 41 if (entries.isEmpty()) { | 41 if (entries.isEmpty()) { |
| 42 entries.append(std::make_pair(SVGSpreadMethodUnknown, emptyString())); | 42 entries.append(std::make_pair(SVGSpreadMethodUnknown, emptyString())); |
| 43 entries.append(std::make_pair(SVGSpreadMethodPad, "pad")); | 43 entries.append(std::make_pair(SVGSpreadMethodPad, "pad")); |
| 44 entries.append(std::make_pair(SVGSpreadMethodReflect, "reflect")); | 44 entries.append(std::make_pair(SVGSpreadMethodReflect, "reflect")); |
| 45 entries.append(std::make_pair(SVGSpreadMethodRepeat, "repeat")); | 45 entries.append(std::make_pair(SVGSpreadMethodRepeat, "repeat")); |
| 46 } | 46 } |
| 47 return entries; | 47 return entries; |
| 48 } | 48 } |
| 49 | 49 |
| 50 // Animated property definitions | 50 // Animated property definitions |
| 51 DEFINE_ANIMATED_TRANSFORM_LIST(SVGGradientElement, SVGNames::gradientTransformAt
tr, GradientTransform, gradientTransform) | |
| 52 | |
| 53 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGGradientElement) | 51 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGGradientElement) |
| 54 REGISTER_LOCAL_ANIMATED_PROPERTY(gradientTransform) | |
| 55 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) | 52 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) |
| 56 END_REGISTER_ANIMATED_PROPERTIES | 53 END_REGISTER_ANIMATED_PROPERTIES |
| 57 | 54 |
| 58 SVGGradientElement::SVGGradientElement(const QualifiedName& tagName, Document& d
ocument) | 55 SVGGradientElement::SVGGradientElement(const QualifiedName& tagName, Document& d
ocument) |
| 59 : SVGElement(tagName, document) | 56 : SVGElement(tagName, document) |
| 60 , SVGURIReference(this) | 57 , SVGURIReference(this) |
| 58 , m_gradientTransform(SVGAnimatedTransformList::create(this, SVGNames::gradi
entTransformAttr, SVGTransformList::create())) |
| 61 , m_spreadMethod(SVGAnimatedEnumeration<SVGSpreadMethodType>::create(this, S
VGNames::spreadMethodAttr, SVGSpreadMethodPad)) | 59 , m_spreadMethod(SVGAnimatedEnumeration<SVGSpreadMethodType>::create(this, S
VGNames::spreadMethodAttr, SVGSpreadMethodPad)) |
| 62 , m_gradientUnits(SVGAnimatedEnumeration<SVGUnitTypes::SVGUnitType>::create(
this, SVGNames::gradientUnitsAttr, SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
)) | 60 , m_gradientUnits(SVGAnimatedEnumeration<SVGUnitTypes::SVGUnitType>::create(
this, SVGNames::gradientUnitsAttr, SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX
)) |
| 63 { | 61 { |
| 64 ScriptWrappable::init(this); | 62 ScriptWrappable::init(this); |
| 63 addToPropertyMap(m_gradientTransform); |
| 65 addToPropertyMap(m_spreadMethod); | 64 addToPropertyMap(m_spreadMethod); |
| 66 addToPropertyMap(m_gradientUnits); | 65 addToPropertyMap(m_gradientUnits); |
| 67 registerAnimatedPropertiesForSVGGradientElement(); | 66 registerAnimatedPropertiesForSVGGradientElement(); |
| 68 } | 67 } |
| 69 | 68 |
| 70 bool SVGGradientElement::isSupportedAttribute(const QualifiedName& attrName) | 69 bool SVGGradientElement::isSupportedAttribute(const QualifiedName& attrName) |
| 71 { | 70 { |
| 72 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ()); | 71 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ()); |
| 73 if (supportedAttributes.isEmpty()) { | 72 if (supportedAttributes.isEmpty()) { |
| 74 SVGURIReference::addSupportedAttributes(supportedAttributes); | 73 SVGURIReference::addSupportedAttributes(supportedAttributes); |
| 75 supportedAttributes.add(SVGNames::gradientUnitsAttr); | 74 supportedAttributes.add(SVGNames::gradientUnitsAttr); |
| 76 supportedAttributes.add(SVGNames::gradientTransformAttr); | 75 supportedAttributes.add(SVGNames::gradientTransformAttr); |
| 77 supportedAttributes.add(SVGNames::spreadMethodAttr); | 76 supportedAttributes.add(SVGNames::spreadMethodAttr); |
| 78 } | 77 } |
| 79 return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName); | 78 return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName); |
| 80 } | 79 } |
| 81 | 80 |
| 82 void SVGGradientElement::parseAttribute(const QualifiedName& name, const AtomicS
tring& value) | 81 void SVGGradientElement::parseAttribute(const QualifiedName& name, const AtomicS
tring& value) |
| 83 { | 82 { |
| 84 if (!isSupportedAttribute(name)) { | 83 if (!isSupportedAttribute(name)) { |
| 85 SVGElement::parseAttribute(name, value); | 84 SVGElement::parseAttribute(name, value); |
| 86 return; | 85 return; |
| 87 } | 86 } |
| 88 | 87 |
| 89 if (name == SVGNames::gradientTransformAttr) { | |
| 90 SVGTransformList newList; | |
| 91 newList.parse(value); | |
| 92 detachAnimatedGradientTransformListWrappers(newList.size()); | |
| 93 setGradientTransformBaseValue(newList); | |
| 94 return; | |
| 95 } | |
| 96 | |
| 97 SVGParsingError parseError = NoError; | 88 SVGParsingError parseError = NoError; |
| 98 | 89 |
| 99 if (name == SVGNames::gradientUnitsAttr) | 90 if (name == SVGNames::gradientTransformAttr) |
| 91 m_gradientTransform->setBaseValueAsString(value, parseError); |
| 92 else if (name == SVGNames::gradientUnitsAttr) |
| 100 m_gradientUnits->setBaseValueAsString(value, parseError); | 93 m_gradientUnits->setBaseValueAsString(value, parseError); |
| 101 else if (name == SVGNames::spreadMethodAttr) | 94 else if (name == SVGNames::spreadMethodAttr) |
| 102 m_spreadMethod->setBaseValueAsString(value, parseError); | 95 m_spreadMethod->setBaseValueAsString(value, parseError); |
| 103 else if (SVGURIReference::parseAttribute(name, value, parseError)) { | 96 else if (SVGURIReference::parseAttribute(name, value, parseError)) { |
| 104 } else | 97 } else |
| 105 ASSERT_NOT_REACHED(); | 98 ASSERT_NOT_REACHED(); |
| 106 | 99 |
| 107 reportAttributeParsingError(parseError, name, value); | 100 reportAttributeParsingError(parseError, name, value); |
| 108 } | 101 } |
| 109 | 102 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 float r, g, b, a; | 148 float r, g, b, a; |
| 156 color.getRGBA(r, g, b, a); | 149 color.getRGBA(r, g, b, a); |
| 157 | 150 |
| 158 stops.append(Gradient::ColorStop(offset, r, g, b, a)); | 151 stops.append(Gradient::ColorStop(offset, r, g, b, a)); |
| 159 } | 152 } |
| 160 | 153 |
| 161 return stops; | 154 return stops; |
| 162 } | 155 } |
| 163 | 156 |
| 164 } | 157 } |
| OLD | NEW |