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