1
2/*
3 * Copyright 2006 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9
10#ifndef SkSVGPaintState_DEFINED
11#define SkSVGPaintState_DEFINED
12
13#include "SkSVGBase.h"
14#include "SkString.h"
15
16class SkSVGPaint : public SkSVGBase {
17public:
18    enum Field {
19        kInitial = -1,
20        kClipPath,
21        kClipRule,
22        kEnableBackground,
23        kFill,
24        kFillRule,
25        kFilter,
26        kFontFamily,
27        kFontSize,
28        kLetterSpacing,
29        kMask,
30        kOpacity,
31        kStopColor,
32        kStopOpacity,
33        kStroke,
34        kStroke_Dasharray,
35        kStroke_Linecap,
36        kStroke_Linejoin,
37        kStroke_Miterlimit,
38        kStroke_Width,
39        kStyle,
40        kTransform,
41        kTerminal
42    };
43
44    SkSVGPaint();
45    virtual void addAttribute(SkSVGParser& parser, int attrIndex,
46        const char* attrValue, size_t attrLength);
47    bool flush(SkSVGParser& , bool isFlushable, bool isDef);
48    virtual int getAttributes(const SkSVGAttribute** attrPtr);
49    static void Push(SkSVGPaint** head, SkSVGPaint* add);
50    static void Pop(SkSVGPaint** head);
51    SkString* operator[](int index);
52    SkString fInitial;
53    SkString f_clipPath;
54    SkString f_clipRule;
55    SkString f_enableBackground;
56    SkString f_fill;
57    SkString f_fillRule;
58    SkString f_filter;
59    SkString f_fontFamily;
60    SkString f_fontSize;
61    SkString f_letterSpacing;
62    SkString f_mask;
63    SkString f_opacity;
64    SkString f_stopColor;
65    SkString f_stopOpacity;
66    SkString f_stroke;
67    SkString f_strokeDasharray;
68    SkString f_strokeLinecap;
69    SkString f_strokeLinejoin;
70    SkString f_strokeMiterlimit;
71    SkString f_strokeWidth;
72    SkString f_style; // unused, but allows array access to the rest
73    SkString f_transform;
74#ifdef SK_DEBUG
75    SkString fTerminal;
76#endif
77    SkString fTransformID;
78    static SkSVGAttribute gAttributes[];
79    static const int kAttributesSize;
80private:
81    void setSave(SkSVGParser& );
82    bool writeChangedAttributes(SkSVGParser& , SkSVGPaint& , bool* changed);
83    bool writeChangedElements(SkSVGParser& , SkSVGPaint& , bool* changed);
84    SkSVGPaint* fNext;
85    friend class SkSVGParser;
86    typedef SkSVGPaint BASE_CLASS;
87};
88
89#endif // SkSVGPaintState_DEFINED
90