Skia
2DGraphicsLibrary
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GrSamplerParams.h
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 GrSamplerParams_DEFINED
9 #define GrSamplerParams_DEFINED
10 
11 #include "GrTypes.h"
12 #include "SkShader.h"
13 
18 public:
19  static const GrSamplerParams& ClampNoFilter() {
20  static const GrSamplerParams gParams;
21  return gParams;
22  }
23  static const GrSamplerParams& ClampBilerp() {
24  static const GrSamplerParams gParams(SkShader::kClamp_TileMode, kBilerp_FilterMode);
25  return gParams;
26  }
27 
28  GrSamplerParams() {
29  this->reset();
30  }
31 
32  enum FilterMode {
33  kNone_FilterMode,
34  kBilerp_FilterMode,
35  kMipMap_FilterMode
36  };
37 
38  GrSamplerParams(SkShader::TileMode tileXAndY, FilterMode filterMode) {
39  this->reset(tileXAndY, filterMode);
40  }
41 
42  GrSamplerParams(const SkShader::TileMode tileModes[2], FilterMode filterMode) {
43  this->reset(tileModes, filterMode);
44  }
45 
46  GrSamplerParams(const GrSamplerParams& params) {
47  *this = params;
48  }
49 
50  GrSamplerParams& operator= (const GrSamplerParams& params) {
51  fTileModes[0] = params.fTileModes[0];
52  fTileModes[1] = params.fTileModes[1];
53  fFilterMode = params.fFilterMode;
54  return *this;
55  }
56 
57  void reset() {
58  this->reset(SkShader::kClamp_TileMode, kNone_FilterMode);
59  }
60 
61  void reset(SkShader::TileMode tileXAndY, FilterMode filterMode) {
62  fTileModes[0] = fTileModes[1] = tileXAndY;
63  fFilterMode = filterMode;
64  }
65 
66  void reset(const SkShader::TileMode tileModes[2], FilterMode filterMode) {
67  fTileModes[0] = tileModes[0];
68  fTileModes[1] = tileModes[1];
69  fFilterMode = filterMode;
70  }
71 
72  void setClampNoFilter() {
73  fTileModes[0] = fTileModes[1] = SkShader::kClamp_TileMode;
74  fFilterMode = kNone_FilterMode;
75  }
76 
77  void setClamp() {
78  fTileModes[0] = fTileModes[1] = SkShader::kClamp_TileMode;
79  }
80 
81  void setFilterMode(FilterMode filterMode) { fFilterMode = filterMode; }
82 
83  void setTileModeX(const SkShader::TileMode tm) { fTileModes[0] = tm; }
84  void setTileModeY(const SkShader::TileMode tm) { fTileModes[1] = tm; }
85  void setTileModeXAndY(const SkShader::TileMode tm) { fTileModes[0] = fTileModes[1] = tm; }
86 
87  SkShader::TileMode getTileModeX() const { return fTileModes[0]; }
88 
89  SkShader::TileMode getTileModeY() const { return fTileModes[1]; }
90 
91  bool isTiled() const {
92  return SkShader::kClamp_TileMode != fTileModes[0] ||
93  SkShader::kClamp_TileMode != fTileModes[1];
94  }
95 
96  FilterMode filterMode() const { return fFilterMode; }
97 
98  bool operator== (const GrSamplerParams& other) const {
99  return fTileModes[0] == other.fTileModes[0] &&
100  fTileModes[1] == other.fTileModes[1] &&
101  fFilterMode == other.fFilterMode;
102  }
103 
104  bool operator!= (const GrSamplerParams& other) const { return !(*this == other); }
105 
106 private:
107  SkShader::TileMode fTileModes[2];
108  FilterMode fFilterMode;
109 };
110 #endif
Represents the filtering and tile modes used to access a texture.
Definition: GrSamplerParams.h:17
TileMode
Definition: SkShader.h:43
replicate the edge color if the shader draws outside of its original bounds
Definition: SkShader.h:47