/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkSVGAttribute_DEFINED #define SkSVGAttribute_DEFINED #include "SkSVGTypes.h" #include "SkTLazy.h" class SkSVGRenderContext; enum class SkSVGAttribute { kClipPath, kClipRule, kCx, // <circle>, <ellipse>, <radialGradient>: center x position kCy, // <circle>, <ellipse>, <radialGradient>: center y position kD, kFill, kFillOpacity, kFillRule, kFx, // <radialGradient>: focal point x position kFy, // <radialGradient>: focal point y position kGradientTransform, kHeight, kHref, kOffset, kOpacity, kPatternTransform, kPoints, kR, // <circle>, <radialGradient>: radius kRx, // <ellipse>,<rect>: horizontal (corner) radius kRy, // <ellipse>,<rect>: vertical (corner) radius kSpreadMethod, kStopColor, kStopOpacity, kStroke, kStrokeDashArray, kStrokeDashOffset, kStrokeOpacity, kStrokeLineCap, kStrokeLineJoin, kStrokeMiterLimit, kStrokeWidth, kTransform, kViewBox, kVisibility, kWidth, kX, kX1, // <line>: first endpoint x kX2, // <line>: second endpoint x kY, kY1, // <line>: first endpoint y kY2, // <line>: second endpoint y kUnknown, }; struct SkSVGPresentationAttributes { static SkSVGPresentationAttributes MakeInitial(); // TODO: SkTLazy adds an extra ptr per attribute; refactor to reduce overhead. SkTLazy<SkSVGPaint> fFill; SkTLazy<SkSVGNumberType> fFillOpacity; SkTLazy<SkSVGFillRule> fFillRule; SkTLazy<SkSVGFillRule> fClipRule; SkTLazy<SkSVGPaint> fStroke; SkTLazy<SkSVGDashArray> fStrokeDashArray; SkTLazy<SkSVGLength> fStrokeDashOffset; SkTLazy<SkSVGLineCap> fStrokeLineCap; SkTLazy<SkSVGLineJoin> fStrokeLineJoin; SkTLazy<SkSVGNumberType> fStrokeMiterLimit; SkTLazy<SkSVGNumberType> fStrokeOpacity; SkTLazy<SkSVGLength> fStrokeWidth; SkTLazy<SkSVGVisibility> fVisibility; // uninherited SkTLazy<SkSVGNumberType> fOpacity; SkTLazy<SkSVGClip> fClipPath; }; #endif // SkSVGAttribute_DEFINED