1 /* 2 * Copyright 2012 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 SkLinearGradient_DEFINED 9 #define SkLinearGradient_DEFINED 10 11 #include "include/core/SkFlattenable.h" 12 #include "include/core/SkPoint.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 SkLinearGradient final : public SkGradientBaseShader { 22 public: 23 SkLinearGradient(const SkPoint pts[2], const Descriptor&); 24 25 GradientType asGradient(GradientInfo* info, SkMatrix* localMatrix) const override; 26 start()27 const SkPoint& start() const { return fStart; } end()28 const SkPoint& end() const { return fEnd; } 29 protected: 30 SkLinearGradient(SkReadBuffer& buffer); 31 void flatten(SkWriteBuffer& buffer) const override; 32 33 void appendGradientStages(SkArenaAlloc* alloc, SkRasterPipeline* tPipeline, 34 SkRasterPipeline* postPipeline) const final; 35 36 private: 37 friend void ::SkRegisterLinearGradientShaderFlattenable(); 38 SK_FLATTENABLE_HOOKS(SkLinearGradient) 39 40 class LinearGradient4fContext; 41 42 friend class SkGradientShader; 43 using INHERITED = SkGradientBaseShader; 44 const SkPoint fStart; 45 const SkPoint fEnd; 46 }; 47 48 #endif 49