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, 2008 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis@kde.org> |
4 * Copyright (C) 2008 Apple Inc. All rights reserved. | 4 * Copyright (C) 2008 Apple Inc. All rights reserved. |
5 * Copyright (C) 2008 Alp Toker <alp@atoker.com> | 5 * Copyright (C) 2008 Alp Toker <alp@atoker.com> |
6 * Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> | 6 * Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
11 * version 2 of the License, or (at your option) any later version. | 11 * version 2 of the License, or (at your option) any later version. |
12 * | 12 * |
13 * This library is distributed in the hope that it will be useful, | 13 * This library is distributed in the hope that it will be useful, |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
16 * Library General Public License for more details. | 16 * Library General Public License for more details. |
17 * | 17 * |
18 * You should have received a copy of the GNU Library General Public License | 18 * You should have received a copy of the GNU Library General Public License |
19 * along with this library; see the file COPYING.LIB. If not, write to | 19 * along with this library; see the file COPYING.LIB. If not, write to |
20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
21 * Boston, MA 02110-1301, USA. | 21 * Boston, MA 02110-1301, USA. |
22 */ | 22 */ |
23 | 23 |
24 #include "core/svg/SVGElement.h" | 24 #include "core/svg/SVGElement.h" |
25 | 25 |
26 #include "bindings/core/v8/ScriptEventListener.h" | 26 #include "bindings/core/v8/ScriptEventListener.h" |
27 #include "core/HTMLNames.h" | 27 #include "core/HTMLNames.h" |
28 #include "core/SVGNames.h" | 28 #include "core/SVGNames.h" |
29 #include "core/XLinkNames.h" | |
30 #include "core/XMLNames.h" | 29 #include "core/XMLNames.h" |
31 #include "core/animation/AnimationStack.h" | 30 #include "core/animation/AnimationStack.h" |
32 #include "core/animation/DocumentAnimations.h" | 31 #include "core/animation/DocumentAnimations.h" |
33 #include "core/animation/ElementAnimations.h" | 32 #include "core/animation/ElementAnimations.h" |
34 #include "core/animation/InterpolationEnvironment.h" | 33 #include "core/animation/InterpolationEnvironment.h" |
35 #include "core/animation/InvalidatableInterpolation.h" | 34 #include "core/animation/InvalidatableInterpolation.h" |
36 #include "core/css/CSSCursorImageValue.h" | 35 #include "core/css/CSSCursorImageValue.h" |
37 #include "core/css/resolver/StyleResolver.h" | 36 #include "core/css/resolver/StyleResolver.h" |
38 #include "core/dom/Document.h" | 37 #include "core/dom/Document.h" |
39 #include "core/dom/ElementTraversal.h" | 38 #include "core/dom/ElementTraversal.h" |
(...skipping 998 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1038 | 1037 |
1039 #if ENABLE(ASSERT) | 1038 #if ENABLE(ASSERT) |
1040 bool SVGElement::isAnimatableAttribute(const QualifiedName& name) const | 1039 bool SVGElement::isAnimatableAttribute(const QualifiedName& name) const |
1041 { | 1040 { |
1042 // This static is atomically initialized to dodge a warning about | 1041 // This static is atomically initialized to dodge a warning about |
1043 // a race when dumping debug data for a layer. | 1042 // a race when dumping debug data for a layer. |
1044 DEFINE_THREAD_SAFE_STATIC_LOCAL(HashSet<QualifiedName>, animatableAttributes
, new HashSet<QualifiedName>()); | 1043 DEFINE_THREAD_SAFE_STATIC_LOCAL(HashSet<QualifiedName>, animatableAttributes
, new HashSet<QualifiedName>()); |
1045 | 1044 |
1046 if (animatableAttributes.isEmpty()) { | 1045 if (animatableAttributes.isEmpty()) { |
1047 const QualifiedName* const animatableAttrs[] = { | 1046 const QualifiedName* const animatableAttrs[] = { |
1048 &XLinkNames::hrefAttr, | |
1049 &SVGNames::amplitudeAttr, | 1047 &SVGNames::amplitudeAttr, |
1050 &SVGNames::azimuthAttr, | 1048 &SVGNames::azimuthAttr, |
1051 &SVGNames::baseFrequencyAttr, | 1049 &SVGNames::baseFrequencyAttr, |
1052 &SVGNames::biasAttr, | 1050 &SVGNames::biasAttr, |
1053 &SVGNames::clipPathUnitsAttr, | 1051 &SVGNames::clipPathUnitsAttr, |
1054 &SVGNames::cxAttr, | 1052 &SVGNames::cxAttr, |
1055 &SVGNames::cyAttr, | 1053 &SVGNames::cyAttr, |
1056 &SVGNames::diffuseConstantAttr, | 1054 &SVGNames::diffuseConstantAttr, |
1057 &SVGNames::divisorAttr, | 1055 &SVGNames::divisorAttr, |
1058 &SVGNames::dxAttr, | 1056 &SVGNames::dxAttr, |
1059 &SVGNames::dyAttr, | 1057 &SVGNames::dyAttr, |
1060 &SVGNames::edgeModeAttr, | 1058 &SVGNames::edgeModeAttr, |
1061 &SVGNames::elevationAttr, | 1059 &SVGNames::elevationAttr, |
1062 &SVGNames::exponentAttr, | 1060 &SVGNames::exponentAttr, |
1063 &SVGNames::filterUnitsAttr, | 1061 &SVGNames::filterUnitsAttr, |
1064 &SVGNames::fxAttr, | 1062 &SVGNames::fxAttr, |
1065 &SVGNames::fyAttr, | 1063 &SVGNames::fyAttr, |
1066 &SVGNames::gradientTransformAttr, | 1064 &SVGNames::gradientTransformAttr, |
1067 &SVGNames::gradientUnitsAttr, | 1065 &SVGNames::gradientUnitsAttr, |
1068 &SVGNames::heightAttr, | 1066 &SVGNames::heightAttr, |
| 1067 &SVGNames::hrefAttr, |
1069 &SVGNames::in2Attr, | 1068 &SVGNames::in2Attr, |
1070 &SVGNames::inAttr, | 1069 &SVGNames::inAttr, |
1071 &SVGNames::interceptAttr, | 1070 &SVGNames::interceptAttr, |
1072 &SVGNames::k1Attr, | 1071 &SVGNames::k1Attr, |
1073 &SVGNames::k2Attr, | 1072 &SVGNames::k2Attr, |
1074 &SVGNames::k3Attr, | 1073 &SVGNames::k3Attr, |
1075 &SVGNames::k4Attr, | 1074 &SVGNames::k4Attr, |
1076 &SVGNames::kernelMatrixAttr, | 1075 &SVGNames::kernelMatrixAttr, |
1077 &SVGNames::kernelUnitLengthAttr, | 1076 &SVGNames::kernelUnitLengthAttr, |
1078 &SVGNames::lengthAdjustAttr, | 1077 &SVGNames::lengthAdjustAttr, |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1171 const SVGElementSet& incomingReferences = svgRareData()->incomingReferences(
); | 1170 const SVGElementSet& incomingReferences = svgRareData()->incomingReferences(
); |
1172 | 1171 |
1173 // Iterate on a snapshot as |incomingReferences| may be altered inside loop. | 1172 // Iterate on a snapshot as |incomingReferences| may be altered inside loop. |
1174 WillBeHeapVector<RawPtrWillBeMember<SVGElement>> incomingReferencesSnapshot; | 1173 WillBeHeapVector<RawPtrWillBeMember<SVGElement>> incomingReferencesSnapshot; |
1175 copyToVector(incomingReferences, incomingReferencesSnapshot); | 1174 copyToVector(incomingReferences, incomingReferencesSnapshot); |
1176 | 1175 |
1177 // Force rebuilding the |sourceElement| so it knows about this change. | 1176 // Force rebuilding the |sourceElement| so it knows about this change. |
1178 for (SVGElement* sourceElement : incomingReferencesSnapshot) { | 1177 for (SVGElement* sourceElement : incomingReferencesSnapshot) { |
1179 // Before rebuilding |sourceElement| ensure it was not removed from unde
r us. | 1178 // Before rebuilding |sourceElement| ensure it was not removed from unde
r us. |
1180 if (incomingReferences.contains(sourceElement)) | 1179 if (incomingReferences.contains(sourceElement)) |
1181 sourceElement->svgAttributeChanged(XLinkNames::hrefAttr); | 1180 sourceElement->svgAttributeChanged(SVGNames::hrefAttr); |
1182 } | 1181 } |
1183 } | 1182 } |
1184 | 1183 |
1185 void SVGElement::removeAllIncomingReferences() | 1184 void SVGElement::removeAllIncomingReferences() |
1186 { | 1185 { |
1187 if (!hasSVGRareData()) | 1186 if (!hasSVGRareData()) |
1188 return; | 1187 return; |
1189 | 1188 |
1190 SVGElementSet& incomingReferences = svgRareData()->incomingReferences(); | 1189 SVGElementSet& incomingReferences = svgRareData()->incomingReferences(); |
1191 for (SVGElement* sourceElement: incomingReferences) { | 1190 for (SVGElement* sourceElement: incomingReferences) { |
(...skipping 27 matching lines...) Expand all Loading... |
1219 Element::trace(visitor); | 1218 Element::trace(visitor); |
1220 } | 1219 } |
1221 | 1220 |
1222 const AtomicString& SVGElement::eventParameterName() | 1221 const AtomicString& SVGElement::eventParameterName() |
1223 { | 1222 { |
1224 DEFINE_STATIC_LOCAL(const AtomicString, evtString, ("evt", AtomicString::Con
structFromLiteral)); | 1223 DEFINE_STATIC_LOCAL(const AtomicString, evtString, ("evt", AtomicString::Con
structFromLiteral)); |
1225 return evtString; | 1224 return evtString; |
1226 } | 1225 } |
1227 | 1226 |
1228 } // namespace blink | 1227 } // namespace blink |
OLD | NEW |