• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2016 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #ifndef SkSVGAttribute_DEFINED
9 #define SkSVGAttribute_DEFINED
10 
11 #include "SkSVGTypes.h"
12 #include "SkTLazy.h"
13 
14 class SkSVGRenderContext;
15 
16 enum class SkSVGAttribute {
17     kClipPath,
18     kCx, // <circle>,<ellipse>: center x position
19     kCy, // <circle>,<ellipse>: center y position
20     kD,
21     kFill,
22     kFillOpacity,
23     kFillRule,
24     kGradientTransform,
25     kHeight,
26     kHref,
27     kOffset,
28     kOpacity,
29     kPoints,
30     kR,  // <circle>: radius
31     kRx, // <ellipse>,<rect>: horizontal (corner) radius
32     kRy, // <ellipse>,<rect>: vertical (corner) radius
33     kSpreadMethod,
34     kStopColor,
35     kStopOpacity,
36     kStroke,
37     kStrokeOpacity,
38     kStrokeLineCap,
39     kStrokeLineJoin,
40     kStrokeWidth,
41     kTransform,
42     kViewBox,
43     kWidth,
44     kX,
45     kX1, // <line>: first endpoint x
46     kX2, // <line>: second endpoint x
47     kY,
48     kY1, // <line>: first endpoint y
49     kY2, // <line>: second endpoint y
50 
51     kUnknown,
52 };
53 
54 struct SkSVGPresentationAttributes {
55     static SkSVGPresentationAttributes MakeInitial();
56 
57     // TODO: SkTLazy adds an extra ptr per attribute; refactor to reduce overhead.
58 
59     SkTLazy<SkSVGPaint>      fFill;
60     SkTLazy<SkSVGNumberType> fFillOpacity;
61     SkTLazy<SkSVGFillRule>   fFillRule;
62 
63     SkTLazy<SkSVGPaint>      fStroke;
64     SkTLazy<SkSVGLineCap>    fStrokeLineCap;
65     SkTLazy<SkSVGLineJoin>   fStrokeLineJoin;
66     SkTLazy<SkSVGNumberType> fStrokeOpacity;
67     SkTLazy<SkSVGLength>     fStrokeWidth;
68 
69     // uninherited
70     SkTLazy<SkSVGNumberType> fOpacity;
71     SkTLazy<SkSVGClip>       fClipPath;
72 };
73 
74 #endif // SkSVGAttribute_DEFINED
75