• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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