blob: 76c5daf5570cdc911a9b06c49729d562198b2d79 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
reed@android.com8a1c16f2008-12-17 15:59:43 +00002/*
epoger@google.comec3ed6a2011-07-28 14:26:00 +00003 * Copyright 2006 The Android Open Source Project
reed@android.com8a1c16f2008-12-17 15:59:43 +00004 *
epoger@google.comec3ed6a2011-07-28 14:26:00 +00005 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
reed@android.com8a1c16f2008-12-17 15:59:43 +00007 */
8
epoger@google.comec3ed6a2011-07-28 14:26:00 +00009
reed@android.com8a1c16f2008-12-17 15:59:43 +000010#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