1 /* 2 * Copyright 2015 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 SkImageShader_DEFINED 9 #define SkImageShader_DEFINED 10 11 #include "SkImage.h" 12 #include "SkShader.h" 13 14 class SkImageShader : public SkShader { 15 public: 16 static SkShader* Create(const SkImage*, TileMode tx, TileMode ty, const SkMatrix* localMatrix); 17 18 bool isOpaque() const override; 19 size_t contextSize(const ContextRec&) const override; 20 21 SK_TO_STRING_OVERRIDE() 22 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkImageShader) 23 24 #if SK_SUPPORT_GPU 25 const GrFragmentProcessor* asFragmentProcessor(GrContext*, const SkMatrix& viewM, 26 const SkMatrix*, SkFilterQuality) const override; 27 #endif 28 29 protected: 30 void flatten(SkWriteBuffer&) const override; 31 Context* onCreateContext(const ContextRec&, void* storage) const override; 32 33 SkAutoTUnref<const SkImage> fImage; 34 const TileMode fTileModeX; 35 const TileMode fTileModeY; 36 37 private: 38 SkImageShader(const SkImage*, TileMode tx, TileMode ty, const SkMatrix* localMatrix); 39 40 typedef SkShader INHERITED; 41 }; 42 43 #endif 44