aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/svg/model/SkSVGLinearGradient.cpp
diff options
context:
space:
mode:
authorGravatar fmalita <fmalita@chromium.org>2016-09-13 13:59:05 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-09-13 13:59:05 -0700
commitceb93abddc81ccc0b4f93d958135632ed4cebfd4 (patch)
tree5c5328d6a8d06ebeaa69910de4cb3f577dde6db5 /experimental/svg/model/SkSVGLinearGradient.cpp
parent357f9d2032d65a3be28cd93af9d99c0de19a2d0f (diff)
[SVGDom] Linear gradient 'gradientTransform' support
R=stephana@google.com,robertphillips@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339533002 Review-Url: https://codereview.chromium.org/2339533002
Diffstat (limited to 'experimental/svg/model/SkSVGLinearGradient.cpp')
-rw-r--r--experimental/svg/model/SkSVGLinearGradient.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/experimental/svg/model/SkSVGLinearGradient.cpp b/experimental/svg/model/SkSVGLinearGradient.cpp
index 289c5e3276..4bbed1c354 100644
--- a/experimental/svg/model/SkSVGLinearGradient.cpp
+++ b/experimental/svg/model/SkSVGLinearGradient.cpp
@@ -17,6 +17,10 @@ void SkSVGLinearGradient::setHref(const SkSVGStringType& href) {
fHref = std::move(href);
}
+void SkSVGLinearGradient::setGradientTransform(const SkSVGTransformType& t) {
+ fGradientTransform = t;
+}
+
void SkSVGLinearGradient::setSpreadMethod(const SkSVGSpreadMethod& spread) {
fSpreadMethod = spread;
}
@@ -39,6 +43,11 @@ void SkSVGLinearGradient::setY2(const SkSVGLength& y2) {
void SkSVGLinearGradient::onSetAttribute(SkSVGAttribute attr, const SkSVGValue& v) {
switch (attr) {
+ case SkSVGAttribute::kGradientTransform:
+ if (const auto* t = v.as<SkSVGTransformValue>()) {
+ this->setGradientTransform(*t);
+ }
+ break;
case SkSVGAttribute::kHref:
if (const auto* href = v.as<SkSVGStringValue>()) {
this->setHref(*href);
@@ -130,6 +139,6 @@ bool SkSVGLinearGradient::onAsPaint(const SkSVGRenderContext& ctx, SkPaint* pain
const auto tileMode = static_cast<SkShader::TileMode>(fSpreadMethod.type());
paint->setShader(SkGradientShader::MakeLinear(pts, colors.begin(), pos.begin(), colors.count(),
- tileMode));
+ tileMode, 0, &fGradientTransform.value()));
return true;
}