1 2 /* 3 * Copyright 2012 Google Inc. 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8 9 #ifndef SkSweepGradient_DEFINED 10 #define SkSweepGradient_DEFINED 11 12 #include "SkGradientShaderPriv.h" 13 14 class SkSweepGradient : public SkGradientShaderBase { 15 public: 16 SkSweepGradient(SkScalar cx, SkScalar cy, const Descriptor&); 17 18 size_t contextSize(const ContextRec&) const override; 19 20 class SweepGradientContext : public SkGradientShaderBase::GradientShaderBaseContext { 21 public: 22 SweepGradientContext(const SkSweepGradient& shader, const ContextRec&); 23 24 void shadeSpan(int x, int y, SkPMColor dstC[], int count) override; 25 26 private: 27 typedef SkGradientShaderBase::GradientShaderBaseContext INHERITED; 28 }; 29 30 GradientType asAGradient(GradientInfo* info) const override; 31 32 #if SK_SUPPORT_GPU 33 const GrFragmentProcessor* asFragmentProcessor(GrContext*, 34 const SkMatrix& viewM, 35 const SkMatrix*, 36 SkFilterQuality) const override; 37 #endif 38 39 SK_TO_STRING_OVERRIDE() 40 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkSweepGradient) 41 42 protected: 43 void flatten(SkWriteBuffer& buffer) const override; 44 Context* onCreateContext(const ContextRec&, void* storage) const override; 45 46 private: 47 const SkPoint fCenter; 48 49 friend class SkGradientShader; 50 typedef SkGradientShaderBase INHERITED; 51 }; 52 53 #endif 54