1 /* 2 * Copyright 2023 Google LLC 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 #ifndef SkRadialGradient_DEFINED 8 #define SkRadialGradient_DEFINED 9 10 #include "include/core/SkFlattenable.h" 11 #include "include/core/SkPoint.h" 12 #include "include/core/SkScalar.h" 13 #include "src/shaders/gradients/SkGradientBaseShader.h" 14 15 class SkArenaAlloc; 16 class SkMatrix; 17 class SkRasterPipeline; 18 class SkReadBuffer; 19 class SkWriteBuffer; 20 21 class SkRadialGradient final : public SkGradientBaseShader { 22 public: 23 SkRadialGradient(const SkPoint& center, SkScalar radius, const Descriptor&); 24 25 GradientType asGradient(GradientInfo* info, SkMatrix* matrix) const override; 26 center()27 const SkPoint& center() const { return fCenter; } radius()28 SkScalar radius() const { return fRadius; } 29 protected: 30 SkRadialGradient(SkReadBuffer& buffer); 31 void flatten(SkWriteBuffer& buffer) const override; 32 33 void appendGradientStages(SkArenaAlloc* alloc, 34 SkRasterPipeline* tPipeline, 35 SkRasterPipeline* postPipeline) const override; 36 private: 37 friend void ::SkRegisterRadialGradientShaderFlattenable(); 38 SK_FLATTENABLE_HOOKS(SkRadialGradient) 39 40 const SkPoint fCenter; 41 const SkScalar fRadius; 42 }; 43 44 #endif 45