Index: experimental/svg/model/SkSVGTypes.h |
diff --git a/experimental/svg/model/SkSVGTypes.h b/experimental/svg/model/SkSVGTypes.h |
index b2e2db10764860a2b90d57ee286749f02b937c09..c8330e1088960789cef4b60ae8728ff3328b57c2 100644 |
--- a/experimental/svg/model/SkSVGTypes.h |
+++ b/experimental/svg/model/SkSVGTypes.h |
@@ -23,6 +23,13 @@ public: |
SkSVGPrimitiveTypeWrapper(const SkSVGPrimitiveTypeWrapper&) = default; |
SkSVGPrimitiveTypeWrapper& operator=(const SkSVGPrimitiveTypeWrapper&) = default; |
+ bool operator==(const SkSVGPrimitiveTypeWrapper<T>& other) const { |
+ return fValue == other.fValue; |
+ } |
+ bool operator!=(const SkSVGPrimitiveTypeWrapper<T>& other) const { |
+ return !(*this == other); |
+ } |
+ |
const T& value() const { return fValue; } |
operator const T&() const { return fValue; } |
@@ -57,6 +64,11 @@ public: |
SkSVGLength(const SkSVGLength&) = default; |
SkSVGLength& operator=(const SkSVGLength&) = default; |
+ bool operator==(const SkSVGLength& other) const { |
+ return fUnit == other.fUnit && fValue == other.fValue; |
+ } |
+ bool operator!=(const SkSVGLength& other) const { return !(*this == other); } |
+ |
const SkScalar& value() const { return fValue; } |
const Unit& unit() const { return fUnit; } |
@@ -65,4 +77,82 @@ private: |
Unit fUnit; |
}; |
+class SkSVGPaint { |
+public: |
+ enum class Type { |
+ kNone, |
+ kCurrentColor, |
+ kColor, |
+ kInherit, |
+ }; |
+ |
+ constexpr SkSVGPaint() : fType(Type::kInherit), fColor(SK_ColorBLACK) {} |
+ explicit constexpr SkSVGPaint(Type t) : fType(t), fColor(SK_ColorBLACK) {} |
+ explicit constexpr SkSVGPaint(const SkSVGColorType& c) : fType(Type::kColor), fColor(c) {} |
+ |
+ SkSVGPaint(const SkSVGPaint&) = default; |
+ SkSVGPaint& operator=(const SkSVGPaint&) = default; |
+ |
+ bool operator==(const SkSVGPaint& other) const { |
+ return fType == other.fType && fColor == other.fColor; |
+ } |
+ bool operator!=(const SkSVGPaint& other) const { return !(*this == other); } |
+ |
+ Type type() const { return fType; } |
+ const SkSVGColorType& color() const { SkASSERT(fType == Type::kColor); return fColor; } |
+ |
+private: |
+ Type fType; |
+ |
+ SkSVGColorType fColor; |
+}; |
+ |
+class SkSVGLineCap { |
+public: |
+ enum class Type { |
+ kButt, |
+ kRound, |
+ kSquare, |
+ kInherit, |
+ }; |
+ |
+ constexpr SkSVGLineCap() : fType(Type::kInherit) {} |
+ constexpr explicit SkSVGLineCap(Type t) : fType(t) {} |
+ |
+ SkSVGLineCap(const SkSVGLineCap&) = default; |
+ SkSVGLineCap& operator=(const SkSVGLineCap&) = default; |
+ |
+ bool operator==(const SkSVGLineCap& other) const { return fType == other.fType; } |
+ bool operator!=(const SkSVGLineCap& other) const { return !(*this == other); } |
+ |
+ Type type() const { return fType; } |
+ |
+private: |
+ Type fType; |
+}; |
+ |
+class SkSVGLineJoin { |
+public: |
+ enum class Type { |
+ kMiter, |
+ kRound, |
+ kBevel, |
+ kInherit, |
+ }; |
+ |
+ constexpr SkSVGLineJoin() : fType(Type::kInherit) {} |
+ constexpr explicit SkSVGLineJoin(Type t) : fType(t) {} |
+ |
+ SkSVGLineJoin(const SkSVGLineJoin&) = default; |
+ SkSVGLineJoin& operator=(const SkSVGLineJoin&) = default; |
+ |
+ bool operator==(const SkSVGLineJoin& other) const { return fType == other.fType; } |
+ bool operator!=(const SkSVGLineJoin& other) const { return !(*this == other); } |
+ |
+ Type type() const { return fType; } |
+ |
+private: |
+ Type fType; |
+}; |
+ |
#endif // SkSVGTypes_DEFINED |