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