Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde .org> | 2 * Copyright (C) 2004, 2005, 2006, 2007, 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 2009-2010. All rights reserved. | 4 * Copyright (C) Research In Motion Limited 2009-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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 50 | 50 |
| 51 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGMarkerElement) | 51 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGMarkerElement) |
| 52 REGISTER_LOCAL_ANIMATED_PROPERTY(markerUnits) | 52 REGISTER_LOCAL_ANIMATED_PROPERTY(markerUnits) |
| 53 REGISTER_LOCAL_ANIMATED_PROPERTY(orientAngle) | 53 REGISTER_LOCAL_ANIMATED_PROPERTY(orientAngle) |
| 54 REGISTER_LOCAL_ANIMATED_PROPERTY(orientType) | 54 REGISTER_LOCAL_ANIMATED_PROPERTY(orientType) |
| 55 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) | 55 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) |
| 56 END_REGISTER_ANIMATED_PROPERTIES | 56 END_REGISTER_ANIMATED_PROPERTIES |
| 57 | 57 |
| 58 inline SVGMarkerElement::SVGMarkerElement(Document& document) | 58 inline SVGMarkerElement::SVGMarkerElement(Document& document) |
| 59 : SVGElement(SVGNames::markerTag, document) | 59 : SVGElement(SVGNames::markerTag, document) |
| 60 , SVGFitToViewBox(this) | |
| 60 , m_refX(SVGAnimatedLength::create(this, SVGNames::refXAttr, SVGLength::crea te(LengthModeWidth))) | 61 , m_refX(SVGAnimatedLength::create(this, SVGNames::refXAttr, SVGLength::crea te(LengthModeWidth))) |
| 61 , m_refY(SVGAnimatedLength::create(this, SVGNames::refXAttr, SVGLength::crea te(LengthModeWidth))) | 62 , m_refY(SVGAnimatedLength::create(this, SVGNames::refXAttr, SVGLength::crea te(LengthModeWidth))) |
| 62 , m_markerWidth(SVGAnimatedLength::create(this, SVGNames::markerWidthAttr, S VGLength::create(LengthModeWidth))) | 63 , m_markerWidth(SVGAnimatedLength::create(this, SVGNames::markerWidthAttr, S VGLength::create(LengthModeWidth))) |
| 63 , m_markerHeight(SVGAnimatedLength::create(this, SVGNames::markerHeightAttr, SVGLength::create(LengthModeHeight))) | 64 , m_markerHeight(SVGAnimatedLength::create(this, SVGNames::markerHeightAttr, SVGLength::create(LengthModeHeight))) |
| 64 , m_viewBox(SVGAnimatedRect::create(this, SVGNames::viewBoxAttr)) | |
| 65 , m_preserveAspectRatio(SVGAnimatedPreserveAspectRatio::create(this, SVGName s::preserveAspectRatioAttr, SVGPreserveAspectRatio::create())) | |
| 66 , m_orientType(SVGMarkerOrientAngle) | 65 , m_orientType(SVGMarkerOrientAngle) |
| 67 , m_markerUnits(SVGMarkerUnitsStrokeWidth) | 66 , m_markerUnits(SVGMarkerUnitsStrokeWidth) |
| 68 { | 67 { |
| 69 ScriptWrappable::init(this); | 68 ScriptWrappable::init(this); |
| 70 | 69 |
| 71 // Spec: If the markerWidth/markerHeight attribute is not specified, the eff ect is as if a value of "3" were specified. | 70 // Spec: If the markerWidth/markerHeight attribute is not specified, the eff ect is as if a value of "3" were specified. |
| 72 m_markerWidth->setDefaultValueAsString("3"); | 71 m_markerWidth->setDefaultValueAsString("3"); |
| 73 m_markerHeight->setDefaultValueAsString("3"); | 72 m_markerHeight->setDefaultValueAsString("3"); |
| 74 | 73 |
| 75 addToPropertyMap(m_refX); | 74 addToPropertyMap(m_refX); |
| 76 addToPropertyMap(m_refY); | 75 addToPropertyMap(m_refY); |
| 77 addToPropertyMap(m_markerWidth); | 76 addToPropertyMap(m_markerWidth); |
| 78 addToPropertyMap(m_markerHeight); | 77 addToPropertyMap(m_markerHeight); |
| 79 addToPropertyMap(m_viewBox); | |
| 80 | 78 |
| 81 addToPropertyMap(m_preserveAspectRatio); | |
| 82 registerAnimatedPropertiesForSVGMarkerElement(); | 79 registerAnimatedPropertiesForSVGMarkerElement(); |
| 83 } | 80 } |
| 84 | 81 |
| 85 PassRefPtr<SVGMarkerElement> SVGMarkerElement::create(Document& document) | 82 PassRefPtr<SVGMarkerElement> SVGMarkerElement::create(Document& document) |
| 86 { | 83 { |
| 87 return adoptRef(new SVGMarkerElement(document)); | 84 return adoptRef(new SVGMarkerElement(document)); |
| 88 } | 85 } |
| 89 | 86 |
| 90 const AtomicString& SVGMarkerElement::orientTypeIdentifier() | 87 const AtomicString& SVGMarkerElement::orientTypeIdentifier() |
| 91 { | 88 { |
| 92 DEFINE_STATIC_LOCAL(AtomicString, s_identifier, ("SVGOrientType", AtomicStri ng::ConstructFromLiteral)); | 89 DEFINE_STATIC_LOCAL(AtomicString, s_identifier, ("SVGOrientType", AtomicStri ng::ConstructFromLiteral)); |
| 93 return s_identifier; | 90 return s_identifier; |
| 94 } | 91 } |
| 95 | 92 |
| 96 const AtomicString& SVGMarkerElement::orientAngleIdentifier() | 93 const AtomicString& SVGMarkerElement::orientAngleIdentifier() |
| 97 { | 94 { |
| 98 DEFINE_STATIC_LOCAL(AtomicString, s_identifier, ("SVGOrientAngle", AtomicStr ing::ConstructFromLiteral)); | 95 DEFINE_STATIC_LOCAL(AtomicString, s_identifier, ("SVGOrientAngle", AtomicStr ing::ConstructFromLiteral)); |
| 99 return s_identifier; | 96 return s_identifier; |
| 100 } | 97 } |
| 101 | 98 |
| 102 AffineTransform SVGMarkerElement::viewBoxToViewTransform(float viewWidth, float viewHeight) const | 99 AffineTransform SVGMarkerElement::viewBoxToViewTransform(float viewWidth, float viewHeight) const |
| 103 { | 100 { |
| 104 return SVGFitToViewBox::viewBoxToViewTransform(m_viewBox->currentValue()->va lue(), m_preserveAspectRatio->currentValue(), viewWidth, viewHeight); | 101 return SVGFitToViewBox::viewBoxToViewTransform(viewBox()->currentValue()->va lue(), preserveAspectRatio()->currentValue(), viewWidth, viewHeight); |
| 105 } | 102 } |
| 106 | 103 |
| 107 bool SVGMarkerElement::isSupportedAttribute(const QualifiedName& attrName) | 104 bool SVGMarkerElement::isSupportedAttribute(const QualifiedName& attrName) |
| 108 { | 105 { |
| 109 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ()); | 106 DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ()); |
| 110 if (supportedAttributes.isEmpty()) { | 107 if (supportedAttributes.isEmpty()) { |
| 111 SVGFitToViewBox::addSupportedAttributes(supportedAttributes); | 108 SVGFitToViewBox::addSupportedAttributes(supportedAttributes); |
| 112 supportedAttributes.add(SVGNames::markerUnitsAttr); | 109 supportedAttributes.add(SVGNames::markerUnitsAttr); |
| 113 supportedAttributes.add(SVGNames::refXAttr); | 110 supportedAttributes.add(SVGNames::refXAttr); |
| 114 supportedAttributes.add(SVGNames::refYAttr); | 111 supportedAttributes.add(SVGNames::refYAttr); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 137 m_markerWidth->setBaseValueAsString(value, ForbidNegativeLengths, parseE rror); | 134 m_markerWidth->setBaseValueAsString(value, ForbidNegativeLengths, parseE rror); |
| 138 else if (name == SVGNames::markerHeightAttr) | 135 else if (name == SVGNames::markerHeightAttr) |
| 139 m_markerHeight->setBaseValueAsString(value, ForbidNegativeLengths, parse Error); | 136 m_markerHeight->setBaseValueAsString(value, ForbidNegativeLengths, parse Error); |
| 140 else if (name == SVGNames::orientAttr) { | 137 else if (name == SVGNames::orientAttr) { |
| 141 SVGAngle angle; | 138 SVGAngle angle; |
| 142 SVGMarkerOrientType orientType = SVGPropertyTraits<SVGMarkerOrientType>: :fromString(value, angle); | 139 SVGMarkerOrientType orientType = SVGPropertyTraits<SVGMarkerOrientType>: :fromString(value, angle); |
| 143 if (orientType > 0) | 140 if (orientType > 0) |
| 144 setOrientTypeBaseValue(orientType); | 141 setOrientTypeBaseValue(orientType); |
| 145 if (orientType == SVGMarkerOrientAngle) | 142 if (orientType == SVGMarkerOrientAngle) |
| 146 setOrientAngleBaseValue(angle); | 143 setOrientAngleBaseValue(angle); |
| 147 } else if (SVGFitToViewBox::parseAttribute(this, name, value)) { | 144 } else if (SVGFitToViewBox::parseAttribute(name, value, document(), parseErr or)) { |
|
haraken
2014/02/16 23:23:36
kouhei: This might make it a bit more complicated
| |
| 148 } else | 145 } else { |
| 149 ASSERT_NOT_REACHED(); | 146 ASSERT_NOT_REACHED(); |
| 147 } | |
| 150 | 148 |
| 151 reportAttributeParsingError(parseError, name, value); | 149 reportAttributeParsingError(parseError, name, value); |
| 152 } | 150 } |
| 153 | 151 |
| 154 void SVGMarkerElement::svgAttributeChanged(const QualifiedName& attrName) | 152 void SVGMarkerElement::svgAttributeChanged(const QualifiedName& attrName) |
| 155 { | 153 { |
| 156 if (!isSupportedAttribute(attrName)) { | 154 if (!isSupportedAttribute(attrName)) { |
| 157 SVGElement::svgAttributeChanged(attrName); | 155 SVGElement::svgAttributeChanged(attrName); |
| 158 return; | 156 return; |
| 159 } | 157 } |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 242 (ownerType, orientTypePropertyInfo(), ownerType->m_orientType.value); | 240 (ownerType, orientTypePropertyInfo(), ownerType->m_orientType.value); |
| 243 } | 241 } |
| 244 | 242 |
| 245 PassRefPtr<SVGAnimatedEnumerationPropertyTearOff<SVGMarkerOrientType> > SVGMarke rElement::orientType() | 243 PassRefPtr<SVGAnimatedEnumerationPropertyTearOff<SVGMarkerOrientType> > SVGMarke rElement::orientType() |
| 246 { | 244 { |
| 247 m_orientType.shouldSynchronize = true; | 245 m_orientType.shouldSynchronize = true; |
| 248 return static_pointer_cast<SVGAnimatedEnumerationPropertyTearOff<SVGMarkerOr ientType> >(lookupOrCreateOrientTypeWrapper(this)); | 246 return static_pointer_cast<SVGAnimatedEnumerationPropertyTearOff<SVGMarkerOr ientType> >(lookupOrCreateOrientTypeWrapper(this)); |
| 249 } | 247 } |
| 250 | 248 |
| 251 } | 249 } |
| OLD | NEW |