blob: 44342f838e5e590ebef4638ac591e081ff77de74 [file] [log] [blame]
Florin Malitab3418102020-10-15 18:10:29 -04001/*
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 "modules/svg/include/SkSVGTypes.h"
12#include "src/core/SkTLazy.h"
13
14class SkSVGRenderContext;
15
16enum class SkSVGAttribute {
17 kClipPath,
18 kClipRule,
19 kColor,
20 kCx, // <circle>, <ellipse>, <radialGradient>: center x position
21 kCy, // <circle>, <ellipse>, <radialGradient>: center y position
22 kD,
23 kFill,
24 kFillOpacity,
25 kFillRule,
26 kFontFamily,
27 kFontSize,
28 kFontStyle,
29 kFontWeight,
30 kFx, // <radialGradient>: focal point x position
31 kFy, // <radialGradient>: focal point y position
Tyler Dennistonab76ab42020-10-21 15:08:45 -040032 kGradientUnits,
Florin Malitab3418102020-10-15 18:10:29 -040033 kGradientTransform,
34 kHeight,
35 kHref,
36 kOffset,
37 kOpacity,
38 kPatternTransform,
39 kPoints,
Florin Malita385e7442020-10-21 16:55:46 -040040 kPreserveAspectRatio,
Florin Malitab3418102020-10-15 18:10:29 -040041 kR, // <circle>, <radialGradient>: radius
42 kRx, // <ellipse>,<rect>: horizontal (corner) radius
43 kRy, // <ellipse>,<rect>: vertical (corner) radius
44 kSpreadMethod,
45 kStopColor,
46 kStopOpacity,
47 kStroke,
48 kStrokeDashArray,
49 kStrokeDashOffset,
50 kStrokeOpacity,
51 kStrokeLineCap,
52 kStrokeLineJoin,
53 kStrokeMiterLimit,
54 kStrokeWidth,
55 kTransform,
56 kText,
57 kTextAnchor,
58 kViewBox,
59 kVisibility,
60 kWidth,
61 kX,
62 kX1, // <line>: first endpoint x
63 kX2, // <line>: second endpoint x
64 kY,
65 kY1, // <line>: first endpoint y
66 kY2, // <line>: second endpoint y
67
68 kUnknown,
69};
70
71struct SkSVGPresentationAttributes {
72 static SkSVGPresentationAttributes MakeInitial();
73
74 // TODO: SkTLazy adds an extra ptr per attribute; refactor to reduce overhead.
75
76 SkTLazy<SkSVGPaint> fFill;
77 SkTLazy<SkSVGNumberType> fFillOpacity;
78 SkTLazy<SkSVGFillRule> fFillRule;
79 SkTLazy<SkSVGFillRule> fClipRule;
80
81 SkTLazy<SkSVGPaint> fStroke;
82 SkTLazy<SkSVGDashArray> fStrokeDashArray;
83 SkTLazy<SkSVGLength> fStrokeDashOffset;
84 SkTLazy<SkSVGLineCap> fStrokeLineCap;
85 SkTLazy<SkSVGLineJoin> fStrokeLineJoin;
86 SkTLazy<SkSVGNumberType> fStrokeMiterLimit;
87 SkTLazy<SkSVGNumberType> fStrokeOpacity;
88 SkTLazy<SkSVGLength> fStrokeWidth;
89
90 SkTLazy<SkSVGVisibility> fVisibility;
91
92 SkTLazy<SkSVGColorType> fColor;
93
Florin Malita39fe8c82020-10-20 10:43:03 -040094 SkTLazy<SkSVGFontFamily> fFontFamily;
95 SkTLazy<SkSVGFontStyle> fFontStyle;
96 SkTLazy<SkSVGFontSize> fFontSize;
97 SkTLazy<SkSVGFontWeight> fFontWeight;
Florin Malita056385b2020-10-27 22:57:56 -040098 SkTLazy<SkSVGTextAnchor> fTextAnchor;
Florin Malita39fe8c82020-10-20 10:43:03 -040099
Florin Malitab3418102020-10-15 18:10:29 -0400100 // TODO(tdenniston): add SkSVGStopColor
101
102 // uninherited
103 SkTLazy<SkSVGNumberType> fOpacity;
104 SkTLazy<SkSVGClip> fClipPath;
105};
106
107#endif // SkSVGAttribute_DEFINED