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