OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2014 Google Inc. All rights reserved. | 2 * Copyright (C) 2014 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 15 matching lines...) Expand all Loading... |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 #ifndef SVGStringList_h | 31 #ifndef SVGStringList_h |
32 #define SVGStringList_h | 32 #define SVGStringList_h |
33 | 33 |
34 #include "bindings/v8/ScriptWrappable.h" | 34 #include "bindings/v8/ScriptWrappable.h" |
35 #include "core/svg/SVGString.h" | 35 #include "core/svg/SVGString.h" |
36 #include "core/svg/properties/NewSVGListPropertyHelper.h" | 36 #include "core/svg/properties/SVGListPropertyHelper.h" |
37 | 37 |
38 namespace WebCore { | 38 namespace WebCore { |
39 | 39 |
40 class SVGStringListTearOff; | 40 class SVGStringListTearOff; |
41 | 41 |
42 // Implementation of SVGStringList spec: | 42 // Implementation of SVGStringList spec: |
43 // http://www.w3.org/TR/SVG/single-page.html#types-InterfaceSVGStringList | 43 // http://www.w3.org/TR/SVG/single-page.html#types-InterfaceSVGStringList |
44 // See SVGStringListTearOff for actual Javascript interface. | 44 // See SVGStringListTearOff for actual Javascript interface. |
45 // Unlike other SVG*List implementations, SVGStringList is NOT tied to SVGString
. | 45 // Unlike other SVG*List implementations, SVGStringList is NOT tied to SVGString
. |
46 // SVGStringList operates directly on DOMString. | 46 // SVGStringList operates directly on DOMString. |
47 // | 47 // |
48 // In short: | 48 // In short: |
49 // SVGStringList has_a Vector<String>. | 49 // SVGStringList has_a Vector<String>. |
50 // SVGStringList items are exposed to Javascript as DOMString (not SVGString)
as in the spec. | 50 // SVGStringList items are exposed to Javascript as DOMString (not SVGString)
as in the spec. |
51 // SVGString is used only for boxing values for non-list string property SVGAn
imatedString, | 51 // SVGString is used only for boxing values for non-list string property SVGAn
imatedString, |
52 // and not used for SVGStringList. | 52 // and not used for SVGStringList. |
53 class SVGStringList FINAL : public NewSVGPropertyBase { | 53 class SVGStringList FINAL : public SVGPropertyBase { |
54 public: | 54 public: |
55 typedef SVGStringListTearOff TearOffType; | 55 typedef SVGStringListTearOff TearOffType; |
56 | 56 |
57 static PassRefPtr<SVGStringList> create() | 57 static PassRefPtr<SVGStringList> create() |
58 { | 58 { |
59 return adoptRef(new SVGStringList()); | 59 return adoptRef(new SVGStringList()); |
60 } | 60 } |
61 | 61 |
62 virtual ~SVGStringList(); | 62 virtual ~SVGStringList(); |
63 | 63 |
64 const Vector<String>& values() const { return m_values; } | 64 const Vector<String>& values() const { return m_values; } |
65 | 65 |
66 // SVGStringList DOM Spec implementation. These are only to be called from S
VGStringListTearOff: | 66 // SVGStringList DOM Spec implementation. These are only to be called from S
VGStringListTearOff: |
67 unsigned long length() { return m_values.size(); } | 67 unsigned long length() { return m_values.size(); } |
68 void clear() { m_values.clear(); } | 68 void clear() { m_values.clear(); } |
69 void initialize(const String&); | 69 void initialize(const String&); |
70 String getItem(size_t, ExceptionState&); | 70 String getItem(size_t, ExceptionState&); |
71 void insertItemBefore(const String&, size_t); | 71 void insertItemBefore(const String&, size_t); |
72 String removeItem(size_t, ExceptionState&); | 72 String removeItem(size_t, ExceptionState&); |
73 void appendItem(const String&); | 73 void appendItem(const String&); |
74 void replaceItem(const String&, size_t, ExceptionState&); | 74 void replaceItem(const String&, size_t, ExceptionState&); |
75 | 75 |
76 // NewSVGPropertyBase: | 76 // SVGPropertyBase: |
77 PassRefPtr<SVGStringList> clone(); | 77 PassRefPtr<SVGStringList> clone(); |
78 void setValueAsString(const String&, ExceptionState&); | 78 void setValueAsString(const String&, ExceptionState&); |
79 virtual PassRefPtr<NewSVGPropertyBase> cloneForAnimation(const String&) cons
t OVERRIDE; | 79 virtual PassRefPtr<SVGPropertyBase> cloneForAnimation(const String&) const O
VERRIDE; |
80 virtual String valueAsString() const OVERRIDE; | 80 virtual String valueAsString() const OVERRIDE; |
81 | 81 |
82 virtual void add(PassRefPtr<NewSVGPropertyBase>, SVGElement*) OVERRIDE; | 82 virtual void add(PassRefPtr<SVGPropertyBase>, SVGElement*) OVERRIDE; |
83 virtual void calculateAnimatedValue(SVGAnimationElement*, float percentage,
unsigned repeatCount, PassRefPtr<NewSVGPropertyBase> fromValue, PassRefPtr<NewSV
GPropertyBase> toValue, PassRefPtr<NewSVGPropertyBase> toAtEndOfDurationValue, S
VGElement*) OVERRIDE; | 83 virtual void calculateAnimatedValue(SVGAnimationElement*, float percentage,
unsigned repeatCount, PassRefPtr<SVGPropertyBase> fromValue, PassRefPtr<SVGPrope
rtyBase> toValue, PassRefPtr<SVGPropertyBase> toAtEndOfDurationValue, SVGElement
*) OVERRIDE; |
84 virtual float calculateDistance(PassRefPtr<NewSVGPropertyBase> to, SVGElemen
t*) OVERRIDE; | 84 virtual float calculateDistance(PassRefPtr<SVGPropertyBase> to, SVGElement*)
OVERRIDE; |
85 | 85 |
86 static AnimatedPropertyType classType() { return AnimatedStringList; } | 86 static AnimatedPropertyType classType() { return AnimatedStringList; } |
87 | 87 |
88 private: | 88 private: |
89 SVGStringList(); | 89 SVGStringList(); |
90 | 90 |
91 template <typename CharType> | 91 template <typename CharType> |
92 void parseInternal(const CharType*& ptr, const CharType* end); | 92 void parseInternal(const CharType*& ptr, const CharType* end); |
93 bool checkIndexBound(size_t, ExceptionState&); | 93 bool checkIndexBound(size_t, ExceptionState&); |
94 | 94 |
95 Vector<String> m_values; | 95 Vector<String> m_values; |
96 }; | 96 }; |
97 | 97 |
98 } // namespace WebCore | 98 } // namespace WebCore |
99 | 99 |
100 #endif // SVGStringList_h | 100 #endif // SVGStringList_h |
OLD | NEW |