1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2016 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef SkSVGAttribute_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define SkSVGAttribute_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "modules/svg/include/SkSVGTypes.h" 12*c8dee2aaSAndroid Build Coastguard Worker 13*c8dee2aaSAndroid Build Coastguard Worker enum class SkSVGAttribute { 14*c8dee2aaSAndroid Build Coastguard Worker kClipRule, 15*c8dee2aaSAndroid Build Coastguard Worker kColor, 16*c8dee2aaSAndroid Build Coastguard Worker kColorInterpolation, 17*c8dee2aaSAndroid Build Coastguard Worker kColorInterpolationFilters, 18*c8dee2aaSAndroid Build Coastguard Worker kCx, // <circle>, <ellipse>, <radialGradient>: center x position 19*c8dee2aaSAndroid Build Coastguard Worker kCy, // <circle>, <ellipse>, <radialGradient>: center y position 20*c8dee2aaSAndroid Build Coastguard Worker kFill, 21*c8dee2aaSAndroid Build Coastguard Worker kFillOpacity, 22*c8dee2aaSAndroid Build Coastguard Worker kFillRule, 23*c8dee2aaSAndroid Build Coastguard Worker kFilter, 24*c8dee2aaSAndroid Build Coastguard Worker kFilterUnits, 25*c8dee2aaSAndroid Build Coastguard Worker kFontFamily, 26*c8dee2aaSAndroid Build Coastguard Worker kFontSize, 27*c8dee2aaSAndroid Build Coastguard Worker kFontStyle, 28*c8dee2aaSAndroid Build Coastguard Worker kFontWeight, 29*c8dee2aaSAndroid Build Coastguard Worker kFx, // <radialGradient>: focal point x position 30*c8dee2aaSAndroid Build Coastguard Worker kFy, // <radialGradient>: focal point y position 31*c8dee2aaSAndroid Build Coastguard Worker kGradientUnits, 32*c8dee2aaSAndroid Build Coastguard Worker kGradientTransform, 33*c8dee2aaSAndroid Build Coastguard Worker kHeight, 34*c8dee2aaSAndroid Build Coastguard Worker kHref, 35*c8dee2aaSAndroid Build Coastguard Worker kOpacity, 36*c8dee2aaSAndroid Build Coastguard Worker kPoints, 37*c8dee2aaSAndroid Build Coastguard Worker kPreserveAspectRatio, 38*c8dee2aaSAndroid Build Coastguard Worker kR, // <circle>, <radialGradient>: radius 39*c8dee2aaSAndroid Build Coastguard Worker kRx, // <ellipse>,<rect>: horizontal (corner) radius 40*c8dee2aaSAndroid Build Coastguard Worker kRy, // <ellipse>,<rect>: vertical (corner) radius 41*c8dee2aaSAndroid Build Coastguard Worker kSpreadMethod, 42*c8dee2aaSAndroid Build Coastguard Worker kStroke, 43*c8dee2aaSAndroid Build Coastguard Worker kStrokeDashArray, 44*c8dee2aaSAndroid Build Coastguard Worker kStrokeDashOffset, 45*c8dee2aaSAndroid Build Coastguard Worker kStrokeOpacity, 46*c8dee2aaSAndroid Build Coastguard Worker kStrokeLineCap, 47*c8dee2aaSAndroid Build Coastguard Worker kStrokeLineJoin, 48*c8dee2aaSAndroid Build Coastguard Worker kStrokeMiterLimit, 49*c8dee2aaSAndroid Build Coastguard Worker kStrokeWidth, 50*c8dee2aaSAndroid Build Coastguard Worker kTransform, 51*c8dee2aaSAndroid Build Coastguard Worker kText, 52*c8dee2aaSAndroid Build Coastguard Worker kTextAnchor, 53*c8dee2aaSAndroid Build Coastguard Worker kViewBox, 54*c8dee2aaSAndroid Build Coastguard Worker kVisibility, 55*c8dee2aaSAndroid Build Coastguard Worker kWidth, 56*c8dee2aaSAndroid Build Coastguard Worker kX, 57*c8dee2aaSAndroid Build Coastguard Worker kX1, // <line>: first endpoint x 58*c8dee2aaSAndroid Build Coastguard Worker kX2, // <line>: second endpoint x 59*c8dee2aaSAndroid Build Coastguard Worker kY, 60*c8dee2aaSAndroid Build Coastguard Worker kY1, // <line>: first endpoint y 61*c8dee2aaSAndroid Build Coastguard Worker kY2, // <line>: second endpoint y 62*c8dee2aaSAndroid Build Coastguard Worker 63*c8dee2aaSAndroid Build Coastguard Worker kUnknown, 64*c8dee2aaSAndroid Build Coastguard Worker }; 65*c8dee2aaSAndroid Build Coastguard Worker 66*c8dee2aaSAndroid Build Coastguard Worker struct SkSVGPresentationAttributes { 67*c8dee2aaSAndroid Build Coastguard Worker static SkSVGPresentationAttributes MakeInitial(); 68*c8dee2aaSAndroid Build Coastguard Worker 69*c8dee2aaSAndroid Build Coastguard Worker // TODO: SkSVGProperty adds an extra ptr per attribute; refactor to reduce overhead. 70*c8dee2aaSAndroid Build Coastguard Worker 71*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGPaint , true> fFill; 72*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGNumberType, true> fFillOpacity; 73*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGFillRule , true> fFillRule; 74*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGFillRule , true> fClipRule; 75*c8dee2aaSAndroid Build Coastguard Worker 76*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGPaint , true> fStroke; 77*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGDashArray , true> fStrokeDashArray; 78*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGLength , true> fStrokeDashOffset; 79*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGLineCap , true> fStrokeLineCap; 80*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGLineJoin , true> fStrokeLineJoin; 81*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGNumberType, true> fStrokeMiterLimit; 82*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGNumberType, true> fStrokeOpacity; 83*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGLength , true> fStrokeWidth; 84*c8dee2aaSAndroid Build Coastguard Worker 85*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGVisibility, true> fVisibility; 86*c8dee2aaSAndroid Build Coastguard Worker 87*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGColorType , true> fColor; 88*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGColorspace, true> fColorInterpolation; 89*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGColorspace, true> fColorInterpolationFilters; 90*c8dee2aaSAndroid Build Coastguard Worker 91*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGFontFamily, true> fFontFamily; 92*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGFontStyle , true> fFontStyle; 93*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGFontSize , true> fFontSize; 94*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGFontWeight, true> fFontWeight; 95*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGTextAnchor, true> fTextAnchor; 96*c8dee2aaSAndroid Build Coastguard Worker 97*c8dee2aaSAndroid Build Coastguard Worker // uninherited 98*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGNumberType, false> fOpacity; 99*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGFuncIRI , false> fClipPath; 100*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGDisplay , false> fDisplay; 101*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGFuncIRI , false> fMask; 102*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGFuncIRI , false> fFilter; 103*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGColor , false> fStopColor; 104*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGNumberType, false> fStopOpacity; 105*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGColor , false> fFloodColor; 106*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGNumberType, false> fFloodOpacity; 107*c8dee2aaSAndroid Build Coastguard Worker SkSVGProperty<SkSVGColor , false> fLightingColor; 108*c8dee2aaSAndroid Build Coastguard Worker }; 109*c8dee2aaSAndroid Build Coastguard Worker 110*c8dee2aaSAndroid Build Coastguard Worker #endif // SkSVGAttribute_DEFINED 111