diff options
Diffstat (limited to 'src/svg/parser/SkSVGElements.h')
-rw-r--r-- | src/svg/parser/SkSVGElements.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/svg/parser/SkSVGElements.h b/src/svg/parser/SkSVGElements.h new file mode 100644 index 0000000000..d00e434742 --- /dev/null +++ b/src/svg/parser/SkSVGElements.h @@ -0,0 +1,73 @@ + +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#ifndef SkSVGElements_DEFINED +#define SkSVGElements_DEFINED + +#include "SkSVGPaintState.h" +#include "SkSVGTypes.h" +#include "SkTDArray.h" + +class SkSVGParser; + +#define DECLARE_SVG_INFO(_type) \ +public: \ + virtual ~SkSVG##_type(); \ + static const SkSVGAttribute gAttributes[]; \ + virtual int getAttributes(const SkSVGAttribute** attrPtr); \ + virtual SkSVGTypes getType() const; \ + virtual void translate(SkSVGParser& parser, bool defState); \ + typedef SkSVG##_type BASE_CLASS + +#define DEFINE_SVG_INFO(_type) \ + SkSVG##_type::~SkSVG##_type() {} \ + int SkSVG##_type::getAttributes(const SkSVGAttribute** attrPtr) { \ + *attrPtr = gAttributes; \ + return SK_ARRAY_COUNT(gAttributes); \ + } \ + SkSVGTypes SkSVG##_type::getType() const { return SkSVGType_##_type; } + +#define DEFINE_SVG_NO_INFO(_type) \ + SkSVG##_type::~SkSVG##_type() {} \ + int SkSVG##_type::getAttributes(const SkSVGAttribute** ) { return 0; } \ + SkSVGTypes SkSVG##_type::getType() const { return SkSVGType_##_type; } + + +struct SkSVGTypeName { + const char* fName; + SkSVGTypes fType; +}; + +class SkSVGElement : public SkSVGBase { +public: + SkSVGElement(); + virtual ~SkSVGElement(); + virtual SkSVGElement* getGradient(); + virtual SkSVGTypes getType() const = 0; + virtual bool isDef(); + virtual bool isFlushable(); + virtual bool isGroup(); + virtual bool isNotDef(); + virtual bool onEndElement(SkSVGParser& parser); + virtual bool onStartElement(SkSVGElement* child); + void setIsDef(); +// void setIsNotDef(); + virtual void translate(SkSVGParser& parser, bool defState); + virtual void write(SkSVGParser& , SkString& color); + SkString f_id; + SkSVGPaint fPaintState; + SkTDArray<SkSVGElement*> fChildren; + SkSVGElement* fParent; + bool fIsDef; + bool fIsNotDef; +private: + bool isGroupParent(); +}; + +#endif // SkSVGElements_DEFINED |