Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(333)

Side by Side Diff: experimental/svg/model/SkSVGTypes.h

Issue 2327233003: [SVGDom] Initial linear gradient support (Closed)
Patch Set: cleanup Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkSVGTypes_DEFINED 8 #ifndef SkSVGTypes_DEFINED
9 #define SkSVGTypes_DEFINED 9 #define SkSVGTypes_DEFINED
10 10
11 #include "SkColor.h" 11 #include "SkColor.h"
12 #include "SkMatrix.h" 12 #include "SkMatrix.h"
13 #include "SkPoint.h" 13 #include "SkPoint.h"
14 #include "SkRect.h" 14 #include "SkRect.h"
15 #include "SkScalar.h" 15 #include "SkScalar.h"
16 #include "SkString.h"
16 #include "SkTDArray.h" 17 #include "SkTDArray.h"
17 #include "SkTypes.h" 18 #include "SkTypes.h"
18 19
19 template <typename T> 20 template <typename T>
20 class SkSVGPrimitiveTypeWrapper { 21 class SkSVGPrimitiveTypeWrapper {
21 public: 22 public:
22 SkSVGPrimitiveTypeWrapper() = default; 23 SkSVGPrimitiveTypeWrapper() = default;
23 explicit constexpr SkSVGPrimitiveTypeWrapper(T v) : fValue(v) {} 24 explicit constexpr SkSVGPrimitiveTypeWrapper(T v) : fValue(v) {}
24 25
25 SkSVGPrimitiveTypeWrapper(const SkSVGPrimitiveTypeWrapper&) = def ault; 26 SkSVGPrimitiveTypeWrapper(const SkSVGPrimitiveTypeWrapper&) = def ault;
26 SkSVGPrimitiveTypeWrapper& operator=(const SkSVGPrimitiveTypeWrapper&) = def ault; 27 SkSVGPrimitiveTypeWrapper& operator=(const SkSVGPrimitiveTypeWrapper&) = def ault;
27 SkSVGPrimitiveTypeWrapper& operator=(const T& v) { fValue = v; return *this; } 28 SkSVGPrimitiveTypeWrapper& operator=(const T& v) { fValue = v; return *this; }
28 29
29 bool operator==(const SkSVGPrimitiveTypeWrapper<T>& other) const { 30 bool operator==(const SkSVGPrimitiveTypeWrapper<T>& other) const {
30 return fValue == other.fValue; 31 return fValue == other.fValue;
31 } 32 }
32 bool operator!=(const SkSVGPrimitiveTypeWrapper<T>& other) const { 33 bool operator!=(const SkSVGPrimitiveTypeWrapper<T>& other) const {
33 return !(*this == other); 34 return !(*this == other);
34 } 35 }
35 36
36 const T& value() const { return fValue; } 37 const T& value() const { return fValue; }
37 operator const T&() const { return fValue; } 38 operator const T&() const { return fValue; }
38 39
39 private: 40 private:
40 T fValue; 41 T fValue;
41 }; 42 };
42 43
43 using SkSVGColorType = SkSVGPrimitiveTypeWrapper<SkColor >; 44 using SkSVGColorType = SkSVGPrimitiveTypeWrapper<SkColor >;
44 using SkSVGNumberType = SkSVGPrimitiveTypeWrapper<SkScalar>; 45 using SkSVGNumberType = SkSVGPrimitiveTypeWrapper<SkScalar>;
46 using SkSVGStringType = SkSVGPrimitiveTypeWrapper<SkString>;
45 using SkSVGViewBoxType = SkSVGPrimitiveTypeWrapper<SkRect >; 47 using SkSVGViewBoxType = SkSVGPrimitiveTypeWrapper<SkRect >;
46 using SkSVGTransformType = SkSVGPrimitiveTypeWrapper<SkMatrix>; 48 using SkSVGTransformType = SkSVGPrimitiveTypeWrapper<SkMatrix>;
47 using SkSVGPointsType = SkSVGPrimitiveTypeWrapper<SkTDArray<SkPoint>>; 49 using SkSVGPointsType = SkSVGPrimitiveTypeWrapper<SkTDArray<SkPoint>>;
48 50
49 class SkSVGLength { 51 class SkSVGLength {
50 public: 52 public:
51 enum class Unit { 53 enum class Unit {
52 kUnknown, 54 kUnknown,
53 kNumber, 55 kNumber,
54 kPercentage, 56 kPercentage,
(...skipping 26 matching lines...) Expand all
81 Unit fUnit; 83 Unit fUnit;
82 }; 84 };
83 85
84 class SkSVGPaint { 86 class SkSVGPaint {
85 public: 87 public:
86 enum class Type { 88 enum class Type {
87 kNone, 89 kNone,
88 kCurrentColor, 90 kCurrentColor,
89 kColor, 91 kColor,
90 kInherit, 92 kInherit,
93 kIRI,
91 }; 94 };
92 95
93 constexpr SkSVGPaint() : fType(Type::kInherit), fColor(SK_ColorBLACK) {} 96 SkSVGPaint() : fType(Type::kInherit), fColor(SK_ColorBLACK) {}
94 explicit constexpr SkSVGPaint(Type t) : fType(t), fColor(SK_ColorBLACK) {} 97 explicit SkSVGPaint(Type t) : fType(t), fColor(SK_ColorBLACK) {}
95 explicit constexpr SkSVGPaint(const SkSVGColorType& c) : fType(Type::kColor) , fColor(c) {} 98 explicit SkSVGPaint(const SkSVGColorType& c) : fType(Type::kColor), fColor(c ) {}
99 explicit SkSVGPaint(const SkString& iri)
100 : fType(Type::kIRI), fColor(SK_ColorBLACK), fIRI(iri) {}
96 101
97 SkSVGPaint(const SkSVGPaint&) = default; 102 SkSVGPaint(const SkSVGPaint&) = default;
98 SkSVGPaint& operator=(const SkSVGPaint&) = default; 103 SkSVGPaint& operator=(const SkSVGPaint&) = default;
99 104
100 bool operator==(const SkSVGPaint& other) const { 105 bool operator==(const SkSVGPaint& other) const {
101 return fType == other.fType && fColor == other.fColor; 106 return fType == other.fType && fColor == other.fColor && fIRI == other.f IRI;
102 } 107 }
103 bool operator!=(const SkSVGPaint& other) const { return !(*this == other); } 108 bool operator!=(const SkSVGPaint& other) const { return !(*this == other); }
104 109
105 Type type() const { return fType; } 110 Type type() const { return fType; }
106 const SkSVGColorType& color() const { SkASSERT(fType == Type::kColor); retur n fColor; } 111 const SkSVGColorType& color() const { SkASSERT(fType == Type::kColor); retur n fColor; }
112 const SkString& iri() const { SkASSERT(fType == Type::kIRI); return fIRI; }
107 113
108 private: 114 private:
109 Type fType; 115 Type fType;
110 116
117 // Logical union.
111 SkSVGColorType fColor; 118 SkSVGColorType fColor;
119 SkString fIRI;
112 }; 120 };
113 121
114 class SkSVGLineCap { 122 class SkSVGLineCap {
115 public: 123 public:
116 enum class Type { 124 enum class Type {
117 kButt, 125 kButt,
118 kRound, 126 kRound,
119 kSquare, 127 kSquare,
120 kInherit, 128 kInherit,
121 }; 129 };
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 bool operator==(const SkSVGLineJoin& other) const { return fType == other.fT ype; } 161 bool operator==(const SkSVGLineJoin& other) const { return fType == other.fT ype; }
154 bool operator!=(const SkSVGLineJoin& other) const { return !(*this == other) ; } 162 bool operator!=(const SkSVGLineJoin& other) const { return !(*this == other) ; }
155 163
156 Type type() const { return fType; } 164 Type type() const { return fType; }
157 165
158 private: 166 private:
159 Type fType; 167 Type fType;
160 }; 168 };
161 169
162 #endif // SkSVGTypes_DEFINED 170 #endif // SkSVGTypes_DEFINED
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698