| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2008 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 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 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 static SVGLengthAdjustType fromString(const String& value) | 58 static SVGLengthAdjustType fromString(const String& value) |
| 59 { | 59 { |
| 60 if (value == "spacingAndGlyphs") | 60 if (value == "spacingAndGlyphs") |
| 61 return SVGLengthAdjustSpacingAndGlyphs; | 61 return SVGLengthAdjustSpacingAndGlyphs; |
| 62 if (value == "spacing") | 62 if (value == "spacing") |
| 63 return SVGLengthAdjustSpacing; | 63 return SVGLengthAdjustSpacing; |
| 64 return SVGLengthAdjustUnknown; | 64 return SVGLengthAdjustUnknown; |
| 65 } | 65 } |
| 66 }; | 66 }; |
| 67 | 67 |
| 68 class SVGAnimatedTextLength; |
| 69 |
| 68 class SVGTextContentElement : public SVGGraphicsElement { | 70 class SVGTextContentElement : public SVGGraphicsElement { |
| 69 public: | 71 public: |
| 70 // Forward declare enumerations in the W3C naming scheme, for IDL generation
. | 72 // Forward declare enumerations in the W3C naming scheme, for IDL generation
. |
| 71 enum { | 73 enum { |
| 72 LENGTHADJUST_UNKNOWN = SVGLengthAdjustUnknown, | 74 LENGTHADJUST_UNKNOWN = SVGLengthAdjustUnknown, |
| 73 LENGTHADJUST_SPACING = SVGLengthAdjustSpacing, | 75 LENGTHADJUST_SPACING = SVGLengthAdjustSpacing, |
| 74 LENGTHADJUST_SPACINGANDGLYPHS = SVGLengthAdjustSpacingAndGlyphs | 76 LENGTHADJUST_SPACINGANDGLYPHS = SVGLengthAdjustSpacingAndGlyphs |
| 75 }; | 77 }; |
| 76 | 78 |
| 77 unsigned getNumberOfChars(); | 79 unsigned getNumberOfChars(); |
| 78 float getComputedTextLength(); | 80 float getComputedTextLength(); |
| 79 float getSubStringLength(unsigned charnum, unsigned nchars, ExceptionState&)
; | 81 float getSubStringLength(unsigned charnum, unsigned nchars, ExceptionState&)
; |
| 80 SVGPoint getStartPositionOfChar(unsigned charnum, ExceptionState&); | 82 SVGPoint getStartPositionOfChar(unsigned charnum, ExceptionState&); |
| 81 SVGPoint getEndPositionOfChar(unsigned charnum, ExceptionState&); | 83 SVGPoint getEndPositionOfChar(unsigned charnum, ExceptionState&); |
| 82 SVGRect getExtentOfChar(unsigned charnum, ExceptionState&); | 84 SVGRect getExtentOfChar(unsigned charnum, ExceptionState&); |
| 83 float getRotationOfChar(unsigned charnum, ExceptionState&); | 85 float getRotationOfChar(unsigned charnum, ExceptionState&); |
| 84 int getCharNumAtPosition(const SVGPoint&); | 86 int getCharNumAtPosition(const SVGPoint&); |
| 85 void selectSubString(unsigned charnum, unsigned nchars, ExceptionState&); | 87 void selectSubString(unsigned charnum, unsigned nchars, ExceptionState&); |
| 86 | 88 |
| 87 static SVGTextContentElement* elementFromRenderer(RenderObject*); | 89 static SVGTextContentElement* elementFromRenderer(RenderObject*); |
| 88 | 90 |
| 89 // textLength is not declared using the standard DECLARE_ANIMATED_LENGTH mac
ro | 91 SVGAnimatedLength* textLength() { return m_textLength.get(); } |
| 90 // as its getter needs special handling (return getComputedTextLength(), ins
tead of m_textLength). | 92 bool textLengthIsSpecifiedByUser() { return m_textLengthIsSpecifiedByUser; } |
| 91 SVGLength& specifiedTextLength() { return m_specifiedTextLength; } | |
| 92 PassRefPtr<SVGAnimatedLength> textLength(); | |
| 93 static const SVGPropertyInfo* textLengthPropertyInfo(); | |
| 94 | 93 |
| 95 protected: | 94 protected: |
| 96 SVGTextContentElement(const QualifiedName&, Document&); | 95 SVGTextContentElement(const QualifiedName&, Document&); |
| 97 | 96 |
| 98 virtual bool isValid() const { return SVGTests::isValid(); } | 97 virtual bool isValid() const { return SVGTests::isValid(); } |
| 99 | 98 |
| 100 bool isSupportedAttribute(const QualifiedName&); | 99 bool isSupportedAttribute(const QualifiedName&); |
| 101 virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERR
IDE; | 100 virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERR
IDE; |
| 102 virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE; | 101 virtual bool isPresentationAttribute(const QualifiedName&) const OVERRIDE; |
| 103 virtual void collectStyleForPresentationAttribute(const QualifiedName&, cons
t AtomicString&, MutableStylePropertySet*) OVERRIDE; | 102 virtual void collectStyleForPresentationAttribute(const QualifiedName&, cons
t AtomicString&, MutableStylePropertySet*) OVERRIDE; |
| 104 virtual void svgAttributeChanged(const QualifiedName&); | 103 virtual void svgAttributeChanged(const QualifiedName&); |
| 105 | 104 |
| 106 virtual bool selfHasRelativeLengths() const; | 105 virtual bool selfHasRelativeLengths() const; |
| 107 | 106 |
| 108 private: | 107 private: |
| 109 virtual bool isTextContent() const { return true; } | 108 virtual bool isTextContent() const { return true; } |
| 110 | 109 |
| 111 // Custom 'textLength' property | 110 RefPtr<SVGAnimatedLength> m_textLength; |
| 112 static void synchronizeTextLength(SVGElement* contextElement); | 111 bool m_textLengthIsSpecifiedByUser; |
| 113 static PassRefPtr<SVGAnimatedProperty> lookupOrCreateTextLengthWrapper(SVGEl
ement* contextElement); | |
| 114 mutable SVGSynchronizableAnimatedProperty<SVGLength> m_textLength; | |
| 115 SVGLength m_specifiedTextLength; | |
| 116 | |
| 117 BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGTextContentElement) | 112 BEGIN_DECLARE_ANIMATED_PROPERTIES(SVGTextContentElement) |
| 118 DECLARE_ANIMATED_ENUMERATION(LengthAdjust, lengthAdjust, SVGLengthAdjust
Type) | 113 DECLARE_ANIMATED_ENUMERATION(LengthAdjust, lengthAdjust, SVGLengthAdjust
Type) |
| 119 END_DECLARE_ANIMATED_PROPERTIES | 114 END_DECLARE_ANIMATED_PROPERTIES |
| 120 }; | 115 }; |
| 121 | 116 |
| 122 inline bool isSVGTextContentElement(const Node& node) | 117 inline bool isSVGTextContentElement(const Node& node) |
| 123 { | 118 { |
| 124 return node.isSVGElement() && toSVGElement(node).isTextContent(); | 119 return node.isSVGElement() && toSVGElement(node).isTextContent(); |
| 125 } | 120 } |
| 126 | 121 |
| 127 DEFINE_NODE_TYPE_CASTS_WITH_FUNCTION(SVGTextContentElement); | 122 DEFINE_NODE_TYPE_CASTS_WITH_FUNCTION(SVGTextContentElement); |
| 128 | 123 |
| 129 } // namespace WebCore | 124 } // namespace WebCore |
| 130 | 125 |
| 131 #endif | 126 #endif |
| OLD | NEW |