blob: 333e3c98e88c9e381a35a62b44e580228487aa55 [file] [log] [blame]
fmalita6ceef3d2016-07-26 18:46:34 -07001/*
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
fmalitabffc2562016-08-03 10:21:11 -070011#include "SkSVGTypes.h"
fmalita6ceef3d2016-07-26 18:46:34 -070012#include "SkTLazy.h"
13
fmalita397a5172016-08-08 11:38:55 -070014class SkSVGRenderContext;
15
fmalita6ceef3d2016-07-26 18:46:34 -070016enum class SkSVGAttribute {
Florin Malitace8840e2016-12-08 09:26:47 -050017 kClipPath,
Florin Malita57a0edf2017-10-10 11:22:08 -040018 kClipRule,
Florin Malitacc6cc292017-10-09 16:05:30 -040019 kCx, // <circle>, <ellipse>, <radialGradient>: center x position
20 kCy, // <circle>, <ellipse>, <radialGradient>: center y position
fmalita58649cc2016-07-29 08:52:03 -070021 kD,
22 kFill,
fmalita2d961e02016-08-11 09:16:29 -070023 kFillOpacity,
Florin Malitae932d4b2016-12-01 13:35:11 -050024 kFillRule,
Florin Malitacc6cc292017-10-09 16:05:30 -040025 kFx, // <radialGradient>: focal point x position
26 kFy, // <radialGradient>: focal point y position
fmalitaceb93ab2016-09-13 13:59:05 -070027 kGradientTransform,
fmalitabffc2562016-08-03 10:21:11 -070028 kHeight,
fmalita28d5b722016-09-12 17:06:47 -070029 kHref,
30 kOffset,
fmalita6fb06482016-08-15 12:45:11 -070031 kOpacity,
Florin Malita1aa1bb62017-10-11 14:34:33 -040032 kPatternTransform,
fmalita5b31f322016-08-12 12:15:33 -070033 kPoints,
Florin Malitacc6cc292017-10-09 16:05:30 -040034 kR, // <circle>, <radialGradient>: radius
fmalitadc4c2a92016-08-16 15:38:51 -070035 kRx, // <ellipse>,<rect>: horizontal (corner) radius
36 kRy, // <ellipse>,<rect>: vertical (corner) radius
fmalitacecd6172016-09-13 12:56:11 -070037 kSpreadMethod,
fmalita28d5b722016-09-12 17:06:47 -070038 kStopColor,
39 kStopOpacity,
fmalita58649cc2016-07-29 08:52:03 -070040 kStroke,
Florin Malitaf543a602017-10-13 14:07:44 -040041 kStrokeDashArray,
Florin Malitae1dadd72017-10-13 18:18:32 -040042 kStrokeDashOffset,
fmalita2d961e02016-08-11 09:16:29 -070043 kStrokeOpacity,
44 kStrokeLineCap,
45 kStrokeLineJoin,
Florin Malita4de426b2017-10-09 12:57:41 -040046 kStrokeMiterLimit,
fmalita2d961e02016-08-11 09:16:29 -070047 kStrokeWidth,
fmalita58649cc2016-07-29 08:52:03 -070048 kTransform,
fmalita397a5172016-08-08 11:38:55 -070049 kViewBox,
Florin Malitaffe6ae42017-10-12 11:33:28 -040050 kVisibility,
fmalitabffc2562016-08-03 10:21:11 -070051 kWidth,
52 kX,
fmalitad24ee142016-08-17 08:38:15 -070053 kX1, // <line>: first endpoint x
54 kX2, // <line>: second endpoint x
fmalitabffc2562016-08-03 10:21:11 -070055 kY,
fmalitad24ee142016-08-17 08:38:15 -070056 kY1, // <line>: first endpoint y
57 kY2, // <line>: second endpoint y
fmalita58649cc2016-07-29 08:52:03 -070058
59 kUnknown,
fmalita6ceef3d2016-07-26 18:46:34 -070060};
61
fmalita2d961e02016-08-11 09:16:29 -070062struct SkSVGPresentationAttributes {
63 static SkSVGPresentationAttributes MakeInitial();
fmalita6ceef3d2016-07-26 18:46:34 -070064
fmalita2d961e02016-08-11 09:16:29 -070065 // TODO: SkTLazy adds an extra ptr per attribute; refactor to reduce overhead.
fmalita6ceef3d2016-07-26 18:46:34 -070066
fmalita2d961e02016-08-11 09:16:29 -070067 SkTLazy<SkSVGPaint> fFill;
68 SkTLazy<SkSVGNumberType> fFillOpacity;
Florin Malitae932d4b2016-12-01 13:35:11 -050069 SkTLazy<SkSVGFillRule> fFillRule;
Florin Malita57a0edf2017-10-10 11:22:08 -040070 SkTLazy<SkSVGFillRule> fClipRule;
fmalita6ceef3d2016-07-26 18:46:34 -070071
fmalita2d961e02016-08-11 09:16:29 -070072 SkTLazy<SkSVGPaint> fStroke;
Florin Malitaf543a602017-10-13 14:07:44 -040073 SkTLazy<SkSVGDashArray> fStrokeDashArray;
Florin Malitae1dadd72017-10-13 18:18:32 -040074 SkTLazy<SkSVGLength> fStrokeDashOffset;
fmalita2d961e02016-08-11 09:16:29 -070075 SkTLazy<SkSVGLineCap> fStrokeLineCap;
76 SkTLazy<SkSVGLineJoin> fStrokeLineJoin;
Florin Malita4de426b2017-10-09 12:57:41 -040077 SkTLazy<SkSVGNumberType> fStrokeMiterLimit;
fmalita2d961e02016-08-11 09:16:29 -070078 SkTLazy<SkSVGNumberType> fStrokeOpacity;
79 SkTLazy<SkSVGLength> fStrokeWidth;
fmalita6fb06482016-08-15 12:45:11 -070080
Florin Malitaffe6ae42017-10-12 11:33:28 -040081 SkTLazy<SkSVGVisibility> fVisibility;
82
Florin Malitace8840e2016-12-08 09:26:47 -050083 // uninherited
fmalita6fb06482016-08-15 12:45:11 -070084 SkTLazy<SkSVGNumberType> fOpacity;
Florin Malitace8840e2016-12-08 09:26:47 -050085 SkTLazy<SkSVGClip> fClipPath;
fmalita6ceef3d2016-07-26 18:46:34 -070086};
87
88#endif // SkSVGAttribute_DEFINED