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 16 class SkSVGPaint : public SkSVGBase { 17 public: 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; 80 private: 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