blob: 2900a03f7c103325362bf1e592234c96b464b807 [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,
fmalitadc4c2a92016-08-16 15:38:51 -070018 kCx, // <circle>,<ellipse>: center x position
19 kCy, // <circle>,<ellipse>: center y position
fmalita58649cc2016-07-29 08:52:03 -070020 kD,
21 kFill,
fmalita2d961e02016-08-11 09:16:29 -070022 kFillOpacity,
Florin Malitae932d4b2016-12-01 13:35:11 -050023 kFillRule,
fmalitaceb93ab2016-09-13 13:59:05 -070024 kGradientTransform,
fmalitabffc2562016-08-03 10:21:11 -070025 kHeight,
fmalita28d5b722016-09-12 17:06:47 -070026 kHref,
27 kOffset,
fmalita6fb06482016-08-15 12:45:11 -070028 kOpacity,
fmalita5b31f322016-08-12 12:15:33 -070029 kPoints,
fmalitadc4c2a92016-08-16 15:38:51 -070030 kR, // <circle>: radius
31 kRx, // <ellipse>,<rect>: horizontal (corner) radius
32 kRy, // <ellipse>,<rect>: vertical (corner) radius
fmalitacecd6172016-09-13 12:56:11 -070033 kSpreadMethod,
fmalita28d5b722016-09-12 17:06:47 -070034 kStopColor,
35 kStopOpacity,
fmalita58649cc2016-07-29 08:52:03 -070036 kStroke,
fmalita2d961e02016-08-11 09:16:29 -070037 kStrokeOpacity,
38 kStrokeLineCap,
39 kStrokeLineJoin,
40 kStrokeWidth,
fmalita58649cc2016-07-29 08:52:03 -070041 kTransform,
fmalita397a5172016-08-08 11:38:55 -070042 kViewBox,
fmalitabffc2562016-08-03 10:21:11 -070043 kWidth,
44 kX,
fmalitad24ee142016-08-17 08:38:15 -070045 kX1, // <line>: first endpoint x
46 kX2, // <line>: second endpoint x
fmalitabffc2562016-08-03 10:21:11 -070047 kY,
fmalitad24ee142016-08-17 08:38:15 -070048 kY1, // <line>: first endpoint y
49 kY2, // <line>: second endpoint y
fmalita58649cc2016-07-29 08:52:03 -070050
51 kUnknown,
fmalita6ceef3d2016-07-26 18:46:34 -070052};
53
fmalita2d961e02016-08-11 09:16:29 -070054struct SkSVGPresentationAttributes {
55 static SkSVGPresentationAttributes MakeInitial();
fmalita6ceef3d2016-07-26 18:46:34 -070056
fmalita2d961e02016-08-11 09:16:29 -070057 // TODO: SkTLazy adds an extra ptr per attribute; refactor to reduce overhead.
fmalita6ceef3d2016-07-26 18:46:34 -070058
fmalita2d961e02016-08-11 09:16:29 -070059 SkTLazy<SkSVGPaint> fFill;
60 SkTLazy<SkSVGNumberType> fFillOpacity;
Florin Malitae932d4b2016-12-01 13:35:11 -050061 SkTLazy<SkSVGFillRule> fFillRule;
fmalita6ceef3d2016-07-26 18:46:34 -070062
fmalita2d961e02016-08-11 09:16:29 -070063 SkTLazy<SkSVGPaint> fStroke;
64 SkTLazy<SkSVGLineCap> fStrokeLineCap;
65 SkTLazy<SkSVGLineJoin> fStrokeLineJoin;
66 SkTLazy<SkSVGNumberType> fStrokeOpacity;
67 SkTLazy<SkSVGLength> fStrokeWidth;
fmalita6fb06482016-08-15 12:45:11 -070068
Florin Malitace8840e2016-12-08 09:26:47 -050069 // uninherited
fmalita6fb06482016-08-15 12:45:11 -070070 SkTLazy<SkSVGNumberType> fOpacity;
Florin Malitace8840e2016-12-08 09:26:47 -050071 SkTLazy<SkSVGClip> fClipPath;
fmalita6ceef3d2016-07-26 18:46:34 -070072};
73
74#endif // SkSVGAttribute_DEFINED