blob: d2643fa05abe93fb87fbd98e8de2d9fa5771aef0 [file] [log] [blame]
Florin Malitacc6cc292017-10-09 16:05:30 -04001/*
2 * Copyright 2017 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkSVGRadialGradient_DEFINED
9#define SkSVGRadialGradient_DEFINED
10
Mike Kleinc0bd9f92019-04-23 12:05:21 -050011#include "experimental/svg/model/SkSVGGradient.h"
12#include "experimental/svg/model/SkSVGTypes.h"
Florin Malitacc6cc292017-10-09 16:05:30 -040013
14class SkSVGRadialGradient final : public SkSVGGradient {
15public:
16 ~SkSVGRadialGradient() override = default;
17 static sk_sp<SkSVGRadialGradient> Make() {
18 return sk_sp<SkSVGRadialGradient>(new SkSVGRadialGradient());
19 }
20
21 void setCx(const SkSVGLength&);
22 void setCy(const SkSVGLength&);
23 void setR(const SkSVGLength&);
24 void setFx(const SkSVGLength&);
25 void setFy(const SkSVGLength&);
26
27protected:
Florin Malitaf4403e72020-04-10 14:14:04 +000028 void onSetAttribute(SkSVGAttribute, const SkSVGValue&) override;
Florin Malitacc6cc292017-10-09 16:05:30 -040029
30 sk_sp<SkShader> onMakeShader(const SkSVGRenderContext&,
31 const SkColor*, const SkScalar*, int count,
Mike Reedfae8fce2019-04-03 10:27:45 -040032 SkTileMode, const SkMatrix&) const override;
Florin Malitacc6cc292017-10-09 16:05:30 -040033private:
34 SkSVGRadialGradient();
35
36 SkSVGLength fCx = SkSVGLength(50, SkSVGLength::Unit::kPercentage);
37 SkSVGLength fCy = SkSVGLength(50, SkSVGLength::Unit::kPercentage);
38 SkSVGLength fR = SkSVGLength(50, SkSVGLength::Unit::kPercentage);
39 SkTLazy<SkSVGLength> fFx;
40 SkTLazy<SkSVGLength> fFy;
41
42
John Stiles7571f9e2020-09-02 22:42:33 -040043 using INHERITED = SkSVGGradient;
Florin Malitacc6cc292017-10-09 16:05:30 -040044};
45
46#endif // SkSVGRadialGradient_DEFINED