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 SkSweepGradientShader_DEFINED 8 #define SkSweepGradientShader_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 SkSweepGradient final : public SkGradientBaseShader { 22 public: 23 SkSweepGradient(const SkPoint& center, SkScalar t0, SkScalar t1, const Descriptor&); 24 25 GradientType asGradient(GradientInfo* info, SkMatrix* localMatrix) const override; 26 center()27 const SkPoint& center() const { return fCenter; } tBias()28 SkScalar tBias() const { return fTBias; } tScale()29 SkScalar tScale() const { return fTScale; } 30 31 protected: 32 void flatten(SkWriteBuffer& buffer) const override; 33 34 void appendGradientStages(SkArenaAlloc* alloc, 35 SkRasterPipeline* tPipeline, 36 SkRasterPipeline* postPipeline) const override; 37 38 private: 39 friend void ::SkRegisterSweepGradientShaderFlattenable(); 40 SK_FLATTENABLE_HOOKS(SkSweepGradient) 41 42 const SkPoint fCenter; 43 const SkScalar fTBias; 44 const SkScalar fTScale; 45 }; 46 47 #endif 48