128d5b72d86fdfae20dc47ba548748f119c7273e3fmalita/*
228d5b72d86fdfae20dc47ba548748f119c7273e3fmalita * Copyright 2016 Google Inc.
328d5b72d86fdfae20dc47ba548748f119c7273e3fmalita *
428d5b72d86fdfae20dc47ba548748f119c7273e3fmalita * Use of this source code is governed by a BSD-style license that can be
528d5b72d86fdfae20dc47ba548748f119c7273e3fmalita * found in the LICENSE file.
628d5b72d86fdfae20dc47ba548748f119c7273e3fmalita */
728d5b72d86fdfae20dc47ba548748f119c7273e3fmalita
828d5b72d86fdfae20dc47ba548748f119c7273e3fmalita#include "SkSVGRenderContext.h"
928d5b72d86fdfae20dc47ba548748f119c7273e3fmalita#include "SkSVGStop.h"
1028d5b72d86fdfae20dc47ba548748f119c7273e3fmalita#include "SkSVGValue.h"
1128d5b72d86fdfae20dc47ba548748f119c7273e3fmalita
1228d5b72d86fdfae20dc47ba548748f119c7273e3fmalitaSkSVGStop::SkSVGStop() : INHERITED(SkSVGTag::kStop) {}
1328d5b72d86fdfae20dc47ba548748f119c7273e3fmalita
1428d5b72d86fdfae20dc47ba548748f119c7273e3fmalitavoid SkSVGStop::setOffset(const SkSVGLength& offset) {
1528d5b72d86fdfae20dc47ba548748f119c7273e3fmalita    fOffset = offset;
1628d5b72d86fdfae20dc47ba548748f119c7273e3fmalita}
1728d5b72d86fdfae20dc47ba548748f119c7273e3fmalita
1828d5b72d86fdfae20dc47ba548748f119c7273e3fmalitavoid SkSVGStop::setStopColor(const SkSVGColorType& color) {
1928d5b72d86fdfae20dc47ba548748f119c7273e3fmalita    fStopColor = color;
2028d5b72d86fdfae20dc47ba548748f119c7273e3fmalita}
2128d5b72d86fdfae20dc47ba548748f119c7273e3fmalita
2228d5b72d86fdfae20dc47ba548748f119c7273e3fmalitavoid SkSVGStop::setStopOpacity(const SkSVGNumberType& opacity) {
2328d5b72d86fdfae20dc47ba548748f119c7273e3fmalita    fStopOpacity = SkTPin<SkScalar>(opacity.value(), 0, 1);
2428d5b72d86fdfae20dc47ba548748f119c7273e3fmalita}
2528d5b72d86fdfae20dc47ba548748f119c7273e3fmalita
2628d5b72d86fdfae20dc47ba548748f119c7273e3fmalitavoid SkSVGStop::onSetAttribute(SkSVGAttribute attr, const SkSVGValue& v) {
2728d5b72d86fdfae20dc47ba548748f119c7273e3fmalita    switch (attr) {
2828d5b72d86fdfae20dc47ba548748f119c7273e3fmalita    case SkSVGAttribute::kOffset:
2928d5b72d86fdfae20dc47ba548748f119c7273e3fmalita        if (const auto* offset = v.as<SkSVGLengthValue>()) {
3028d5b72d86fdfae20dc47ba548748f119c7273e3fmalita            this->setOffset(*offset);
3128d5b72d86fdfae20dc47ba548748f119c7273e3fmalita        }
3228d5b72d86fdfae20dc47ba548748f119c7273e3fmalita        break;
3328d5b72d86fdfae20dc47ba548748f119c7273e3fmalita    case SkSVGAttribute::kStopColor:
3428d5b72d86fdfae20dc47ba548748f119c7273e3fmalita        if (const auto* color = v.as<SkSVGColorValue>()) {
3528d5b72d86fdfae20dc47ba548748f119c7273e3fmalita            this->setStopColor(*color);
3628d5b72d86fdfae20dc47ba548748f119c7273e3fmalita        }
3728d5b72d86fdfae20dc47ba548748f119c7273e3fmalita        break;
3828d5b72d86fdfae20dc47ba548748f119c7273e3fmalita    case SkSVGAttribute::kStopOpacity:
3928d5b72d86fdfae20dc47ba548748f119c7273e3fmalita        if (const auto* opacity = v.as<SkSVGNumberValue>()) {
4028d5b72d86fdfae20dc47ba548748f119c7273e3fmalita            this->setStopOpacity(*opacity);
4128d5b72d86fdfae20dc47ba548748f119c7273e3fmalita        }
4228d5b72d86fdfae20dc47ba548748f119c7273e3fmalita        break;
4328d5b72d86fdfae20dc47ba548748f119c7273e3fmalita    default:
4428d5b72d86fdfae20dc47ba548748f119c7273e3fmalita        this->INHERITED::onSetAttribute(attr, v);
4528d5b72d86fdfae20dc47ba548748f119c7273e3fmalita    }
4628d5b72d86fdfae20dc47ba548748f119c7273e3fmalita}
47