Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(257)

Side by Side Diff: Source/core/svg/SVGMarkerElement.cpp

Issue 112003003: [SVG] SVGLength{,List} migration to new SVG property impl. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebaselined Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 27 matching lines...) Expand all
38 PropertyIsReadWrite, 38 PropertyIsReadWrite,
39 SVGNames::orientAttr, 39 SVGNames::orientAttr,
40 orientTypeIdentifier(), 40 orientTypeIdentifier(),
41 &SVGMarkerElement::synchronizeOrien tType, 41 &SVGMarkerElement::synchronizeOrien tType,
42 &SVGMarkerElement::lookupOrCreateOr ientTypeWrapper); 42 &SVGMarkerElement::lookupOrCreateOr ientTypeWrapper);
43 } 43 }
44 return s_propertyInfo; 44 return s_propertyInfo;
45 } 45 }
46 46
47 // Animated property definitions 47 // Animated property definitions
48 DEFINE_ANIMATED_LENGTH(SVGMarkerElement, SVGNames::refXAttr, RefX, refX)
49 DEFINE_ANIMATED_LENGTH(SVGMarkerElement, SVGNames::refYAttr, RefY, refY)
50 DEFINE_ANIMATED_LENGTH(SVGMarkerElement, SVGNames::markerWidthAttr, MarkerWidth, markerWidth)
51 DEFINE_ANIMATED_LENGTH(SVGMarkerElement, SVGNames::markerHeightAttr, MarkerHeigh t, markerHeight)
52 DEFINE_ANIMATED_ENUMERATION(SVGMarkerElement, SVGNames::markerUnitsAttr, MarkerU nits, markerUnits, SVGMarkerUnitsType) 48 DEFINE_ANIMATED_ENUMERATION(SVGMarkerElement, SVGNames::markerUnitsAttr, MarkerU nits, markerUnits, SVGMarkerUnitsType)
53 DEFINE_ANIMATED_ANGLE_AND_ENUMERATION(SVGMarkerElement, SVGNames::orientAttr, or ientAngleIdentifier(), OrientAngle, orientAngle) 49 DEFINE_ANIMATED_ANGLE_AND_ENUMERATION(SVGMarkerElement, SVGNames::orientAttr, or ientAngleIdentifier(), OrientAngle, orientAngle)
54 DEFINE_ANIMATED_BOOLEAN(SVGMarkerElement, SVGNames::externalResourcesRequiredAtt r, ExternalResourcesRequired, externalResourcesRequired) 50 DEFINE_ANIMATED_BOOLEAN(SVGMarkerElement, SVGNames::externalResourcesRequiredAtt r, ExternalResourcesRequired, externalResourcesRequired)
55 DEFINE_ANIMATED_RECT(SVGMarkerElement, SVGNames::viewBoxAttr, ViewBox, viewBox) 51 DEFINE_ANIMATED_RECT(SVGMarkerElement, SVGNames::viewBoxAttr, ViewBox, viewBox)
56 DEFINE_ANIMATED_PRESERVEASPECTRATIO(SVGMarkerElement, SVGNames::preserveAspectRa tioAttr, PreserveAspectRatio, preserveAspectRatio) 52 DEFINE_ANIMATED_PRESERVEASPECTRATIO(SVGMarkerElement, SVGNames::preserveAspectRa tioAttr, PreserveAspectRatio, preserveAspectRatio)
57 53
58 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGMarkerElement) 54 BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGMarkerElement)
59 REGISTER_LOCAL_ANIMATED_PROPERTY(refX)
60 REGISTER_LOCAL_ANIMATED_PROPERTY(refY)
61 REGISTER_LOCAL_ANIMATED_PROPERTY(markerWidth)
62 REGISTER_LOCAL_ANIMATED_PROPERTY(markerHeight)
63 REGISTER_LOCAL_ANIMATED_PROPERTY(markerUnits) 55 REGISTER_LOCAL_ANIMATED_PROPERTY(markerUnits)
64 REGISTER_LOCAL_ANIMATED_PROPERTY(orientAngle) 56 REGISTER_LOCAL_ANIMATED_PROPERTY(orientAngle)
65 REGISTER_LOCAL_ANIMATED_PROPERTY(orientType) 57 REGISTER_LOCAL_ANIMATED_PROPERTY(orientType)
66 REGISTER_LOCAL_ANIMATED_PROPERTY(externalResourcesRequired) 58 REGISTER_LOCAL_ANIMATED_PROPERTY(externalResourcesRequired)
67 REGISTER_LOCAL_ANIMATED_PROPERTY(viewBox) 59 REGISTER_LOCAL_ANIMATED_PROPERTY(viewBox)
68 REGISTER_LOCAL_ANIMATED_PROPERTY(preserveAspectRatio) 60 REGISTER_LOCAL_ANIMATED_PROPERTY(preserveAspectRatio)
69 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement) 61 REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement)
70 END_REGISTER_ANIMATED_PROPERTIES 62 END_REGISTER_ANIMATED_PROPERTIES
71 63
72 inline SVGMarkerElement::SVGMarkerElement(Document& document) 64 inline SVGMarkerElement::SVGMarkerElement(Document& document)
73 : SVGElement(SVGNames::markerTag, document) 65 : SVGElement(SVGNames::markerTag, document)
66 , m_refX(SVGAnimatedLength::create(this, SVGNames::refXAttr, SVGLength::crea te(LengthModeWidth)))
67 , m_refY(SVGAnimatedLength::create(this, SVGNames::refXAttr, SVGLength::crea te(LengthModeWidth)))
68 , m_markerWidth(SVGAnimatedLength::create(this, SVGNames::markerWidthAttr, S VGLength::create(LengthModeWidth)))
69 , m_markerHeight(SVGAnimatedLength::create(this, SVGNames::markerHeightAttr, SVGLength::create(LengthModeHeight)))
74 , m_orientType(SVGMarkerOrientAngle) 70 , m_orientType(SVGMarkerOrientAngle)
75 , m_refX(LengthModeWidth)
76 , m_refY(LengthModeHeight)
77 , m_markerWidth(LengthModeWidth, "3")
78 , m_markerHeight(LengthModeHeight, "3")
79 , m_markerUnits(SVGMarkerUnitsStrokeWidth) 71 , m_markerUnits(SVGMarkerUnitsStrokeWidth)
80 { 72 {
73 ScriptWrappable::init(this);
74
81 // Spec: If the markerWidth/markerHeight attribute is not specified, the eff ect is as if a value of "3" were specified. 75 // Spec: If the markerWidth/markerHeight attribute is not specified, the eff ect is as if a value of "3" were specified.
82 ScriptWrappable::init(this); 76 m_markerWidth->setDefaultValueAsString("3");
77 m_markerHeight->setDefaultValueAsString("3");
78
79 addToPropertyMap(m_refX);
80 addToPropertyMap(m_refY);
81 addToPropertyMap(m_markerWidth);
82 addToPropertyMap(m_markerHeight);
83
83 registerAnimatedPropertiesForSVGMarkerElement(); 84 registerAnimatedPropertiesForSVGMarkerElement();
84 } 85 }
85 86
86 PassRefPtr<SVGMarkerElement> SVGMarkerElement::create(Document& document) 87 PassRefPtr<SVGMarkerElement> SVGMarkerElement::create(Document& document)
87 { 88 {
88 return adoptRef(new SVGMarkerElement(document)); 89 return adoptRef(new SVGMarkerElement(document));
89 } 90 }
90 91
91 const AtomicString& SVGMarkerElement::orientTypeIdentifier() 92 const AtomicString& SVGMarkerElement::orientTypeIdentifier()
92 { 93 {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 { 126 {
126 SVGParsingError parseError = NoError; 127 SVGParsingError parseError = NoError;
127 128
128 if (!isSupportedAttribute(name)) 129 if (!isSupportedAttribute(name))
129 SVGElement::parseAttribute(name, value); 130 SVGElement::parseAttribute(name, value);
130 else if (name == SVGNames::markerUnitsAttr) { 131 else if (name == SVGNames::markerUnitsAttr) {
131 SVGMarkerUnitsType propertyValue = SVGPropertyTraits<SVGMarkerUnitsType> ::fromString(value); 132 SVGMarkerUnitsType propertyValue = SVGPropertyTraits<SVGMarkerUnitsType> ::fromString(value);
132 if (propertyValue > 0) 133 if (propertyValue > 0)
133 setMarkerUnitsBaseValue(propertyValue); 134 setMarkerUnitsBaseValue(propertyValue);
134 } else if (name == SVGNames::refXAttr) 135 } else if (name == SVGNames::refXAttr)
135 setRefXBaseValue(SVGLength::construct(LengthModeWidth, value, parseError )); 136 m_refX->setBaseValueAsString(value, AllowNegativeLengths, parseError);
136 else if (name == SVGNames::refYAttr) 137 else if (name == SVGNames::refYAttr)
137 setRefYBaseValue(SVGLength::construct(LengthModeHeight, value, parseErro r)); 138 m_refY->setBaseValueAsString(value, AllowNegativeLengths, parseError);
138 else if (name == SVGNames::markerWidthAttr) 139 else if (name == SVGNames::markerWidthAttr)
139 setMarkerWidthBaseValue(SVGLength::construct(LengthModeWidth, value, par seError)); 140 m_markerWidth->setBaseValueAsString(value, ForbidNegativeLengths, parseE rror);
140 else if (name == SVGNames::markerHeightAttr) 141 else if (name == SVGNames::markerHeightAttr)
141 setMarkerHeightBaseValue(SVGLength::construct(LengthModeHeight, value, p arseError)); 142 m_markerHeight->setBaseValueAsString(value, ForbidNegativeLengths, parse Error);
142 else if (name == SVGNames::orientAttr) { 143 else if (name == SVGNames::orientAttr) {
143 SVGAngle angle; 144 SVGAngle angle;
144 SVGMarkerOrientType orientType = SVGPropertyTraits<SVGMarkerOrientType>: :fromString(value, angle); 145 SVGMarkerOrientType orientType = SVGPropertyTraits<SVGMarkerOrientType>: :fromString(value, angle);
145 if (orientType > 0) 146 if (orientType > 0)
146 setOrientTypeBaseValue(orientType); 147 setOrientTypeBaseValue(orientType);
147 if (orientType == SVGMarkerOrientAngle) 148 if (orientType == SVGMarkerOrientAngle)
148 setOrientAngleBaseValue(angle); 149 setOrientAngleBaseValue(angle);
149 } else if (SVGExternalResourcesRequired::parseAttribute(name, value) 150 } else if (SVGExternalResourcesRequired::parseAttribute(name, value)
150 || SVGFitToViewBox::parseAttribute(this, name, value)) { 151 || SVGFitToViewBox::parseAttribute(this, name, value)) {
151 } else 152 } else
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 svgAttributeChanged(orientAnglePropertyInfo()->attributeName); 210 svgAttributeChanged(orientAnglePropertyInfo()->attributeName);
210 } 211 }
211 212
212 RenderObject* SVGMarkerElement::createRenderer(RenderStyle*) 213 RenderObject* SVGMarkerElement::createRenderer(RenderStyle*)
213 { 214 {
214 return new RenderSVGResourceMarker(this); 215 return new RenderSVGResourceMarker(this);
215 } 216 }
216 217
217 bool SVGMarkerElement::selfHasRelativeLengths() const 218 bool SVGMarkerElement::selfHasRelativeLengths() const
218 { 219 {
219 return refXCurrentValue().isRelative() 220 return m_refX->currentValue()->isRelative()
220 || refYCurrentValue().isRelative() 221 || m_refY->currentValue()->isRelative()
221 || markerWidthCurrentValue().isRelative() 222 || m_markerWidth->currentValue()->isRelative()
222 || markerHeightCurrentValue().isRelative(); 223 || m_markerHeight->currentValue()->isRelative();
223 } 224 }
224 225
225 void SVGMarkerElement::synchronizeOrientType(SVGElement* contextElement) 226 void SVGMarkerElement::synchronizeOrientType(SVGElement* contextElement)
226 { 227 {
227 ASSERT(contextElement); 228 ASSERT(contextElement);
228 SVGMarkerElement* ownerType = toSVGMarkerElement(contextElement); 229 SVGMarkerElement* ownerType = toSVGMarkerElement(contextElement);
229 if (!ownerType->m_orientType.shouldSynchronize) 230 if (!ownerType->m_orientType.shouldSynchronize)
230 return; 231 return;
231 232
232 // If orient is not auto, the previous call to synchronizeOrientAngle alread y set the orientAttr to the right angle. 233 // If orient is not auto, the previous call to synchronizeOrientAngle alread y set the orientAttr to the right angle.
(...skipping 12 matching lines...) Expand all
245 (ownerType, orientTypePropertyInfo(), ownerType->m_orientType.value); 246 (ownerType, orientTypePropertyInfo(), ownerType->m_orientType.value);
246 } 247 }
247 248
248 PassRefPtr<SVGAnimatedEnumerationPropertyTearOff<SVGMarkerOrientType> > SVGMarke rElement::orientType() 249 PassRefPtr<SVGAnimatedEnumerationPropertyTearOff<SVGMarkerOrientType> > SVGMarke rElement::orientType()
249 { 250 {
250 m_orientType.shouldSynchronize = true; 251 m_orientType.shouldSynchronize = true;
251 return static_pointer_cast<SVGAnimatedEnumerationPropertyTearOff<SVGMarkerOr ientType> >(lookupOrCreateOrientTypeWrapper(this)); 252 return static_pointer_cast<SVGAnimatedEnumerationPropertyTearOff<SVGMarkerOr ientType> >(lookupOrCreateOrientTypeWrapper(this));
252 } 253 }
253 254
254 } 255 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698