diff options
author | fmalita <fmalita@chromium.org> | 2016-09-12 17:06:47 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-09-12 17:06:47 -0700 |
commit | 28d5b72d86fdfae20dc47ba548748f119c7273e3 (patch) | |
tree | 579d10ae07a10a882ca68d00c2da6fa407c0c658 /experimental/svg/model/SkSVGLinearGradient.h | |
parent | 8c24f4fae3389b9937eb73128e76226cffebdd72 (diff) |
[SVGDom] Initial linear gradient support
Kind of a big change, to connect several new bits into something useful:
* ID tracking & lookup
* new asPaint() node virtual to support shader (and in the future filter) based paint servers
* <defs>, <linearGradient> and <stop> element support
* 'href', 'offset', 'stop-color', 'stop-opacity' attribute support
* IRI/FuncIRI and rgb(...) parsing
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2327233003
Review-Url: https://codereview.chromium.org/2327233003
Diffstat (limited to 'experimental/svg/model/SkSVGLinearGradient.h')
-rw-r--r-- | experimental/svg/model/SkSVGLinearGradient.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/experimental/svg/model/SkSVGLinearGradient.h b/experimental/svg/model/SkSVGLinearGradient.h new file mode 100644 index 0000000000..1a2e332baf --- /dev/null +++ b/experimental/svg/model/SkSVGLinearGradient.h @@ -0,0 +1,49 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSVGLinearGradient_DEFINED +#define SkSVGLinearGradient_DEFINED + +#include "SkSVGHiddenContainer.h" +#include "SkSVGTypes.h" + +class SkSVGLinearGradient : public SkSVGHiddenContainer { +public: + virtual ~SkSVGLinearGradient() = default; + static sk_sp<SkSVGLinearGradient> Make() { + return sk_sp<SkSVGLinearGradient>(new SkSVGLinearGradient()); + } + + void setHref(const SkSVGStringType&); + void setX1(const SkSVGLength&); + void setY1(const SkSVGLength&); + void setX2(const SkSVGLength&); + void setY2(const SkSVGLength&); + +protected: + bool onAsPaint(const SkSVGRenderContext&, SkPaint*) const override; + + void onSetAttribute(SkSVGAttribute, const SkSVGValue&) override; + +private: + SkSVGLinearGradient(); + + void collectColorStops(const SkSVGRenderContext&, + SkSTArray<2, SkScalar, true>*, + SkSTArray<2, SkColor, true>*) const; + + SkSVGLength fX1 = SkSVGLength(0 , SkSVGLength::Unit::kPercentage); + SkSVGLength fY1 = SkSVGLength(0 , SkSVGLength::Unit::kPercentage); + SkSVGLength fX2 = SkSVGLength(100, SkSVGLength::Unit::kPercentage); + SkSVGLength fY2 = SkSVGLength(0 , SkSVGLength::Unit::kPercentage); + + SkSVGStringType fHref; + + typedef SkSVGHiddenContainer INHERITED; +}; + +#endif // SkSVGLinearGradient_DEFINED |