Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(105)

Side by Side Diff: include/gpu/GrTextureParams.h

Issue 1789663002: sRGB support in Ganesh. Several pieces: (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Squelch assert when blurring sRGB Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « include/gpu/GrColor.h ('k') | include/gpu/GrTypes.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef GrTextureParams_DEFINED 8 #ifndef GrTextureParams_DEFINED
9 #define GrTextureParams_DEFINED 9 #define GrTextureParams_DEFINED
10 10
11 #include "GrTypes.h" 11 #include "GrTypes.h"
12 #include "SkShader.h" 12 #include "SkShader.h"
13 13
14 /** 14 /**
15 * Represents the filtering and tile modes used to access a texture. 15 * Represents the filtering and tile modes used to access a texture.
16 */ 16 */
17 class GrTextureParams { 17 class GrTextureParams {
18 public: 18 public:
19 static const GrTextureParams& ClampNoFilter() { 19 static const GrTextureParams& ClampNoFilter() {
20 static const GrTextureParams gParams; 20 static const GrTextureParams gParams;
21 return gParams; 21 return gParams;
22 } 22 }
23 static const GrTextureParams& ClampBilerp() { 23 static const GrTextureParams& ClampBilerp() {
24 static const GrTextureParams gParams(SkShader::kClamp_TileMode, kBilerp_ FilterMode); 24 static const GrTextureParams gParams(SkShader::kClamp_TileMode, kBilerp_ FilterMode);
25 return gParams; 25 return gParams;
26 } 26 }
27 static const GrTextureParams& ClampNoFilterForceAllowSRGB() {
28 static const GrTextureParams gParams(SkShader::kClamp_TileMode, kNone_Fi lterMode,
29 kForceAllowSRGB_SRGBMode);
30 return gParams;
31 }
27 32
28 GrTextureParams() { 33 GrTextureParams() {
29 this->reset(); 34 this->reset();
30 } 35 }
31 36
32 enum FilterMode { 37 enum FilterMode {
33 kNone_FilterMode, 38 kNone_FilterMode,
34 kBilerp_FilterMode, 39 kBilerp_FilterMode,
35 kMipMap_FilterMode 40 kMipMap_FilterMode
36 }; 41 };
37 42
43 enum SRGBMode {
44 kRespectDestination_SRGBMode,
45 kForceAllowSRGB_SRGBMode,
46 };
47
38 GrTextureParams(SkShader::TileMode tileXAndY, FilterMode filterMode) { 48 GrTextureParams(SkShader::TileMode tileXAndY, FilterMode filterMode) {
39 this->reset(tileXAndY, filterMode); 49 this->reset(tileXAndY, filterMode);
40 } 50 }
41 51
52 GrTextureParams(SkShader::TileMode tileXandY, FilterMode filterMode, SRGBMod e srgbMode) {
53 this->reset(tileXandY, filterMode, srgbMode);
54 }
55
42 GrTextureParams(const SkShader::TileMode tileModes[2], FilterMode filterMode ) { 56 GrTextureParams(const SkShader::TileMode tileModes[2], FilterMode filterMode ) {
43 this->reset(tileModes, filterMode); 57 this->reset(tileModes, filterMode);
44 } 58 }
45 59
46 GrTextureParams(const GrTextureParams& params) { 60 GrTextureParams(const GrTextureParams& params) {
47 *this = params; 61 *this = params;
48 } 62 }
49 63
50 GrTextureParams& operator= (const GrTextureParams& params) { 64 GrTextureParams& operator= (const GrTextureParams& params) {
51 fTileModes[0] = params.fTileModes[0]; 65 fTileModes[0] = params.fTileModes[0];
52 fTileModes[1] = params.fTileModes[1]; 66 fTileModes[1] = params.fTileModes[1];
53 fFilterMode = params.fFilterMode; 67 fFilterMode = params.fFilterMode;
68 fSRGBMode = params.fSRGBMode;
54 return *this; 69 return *this;
55 } 70 }
56 71
57 void reset() { 72 void reset() {
58 this->reset(SkShader::kClamp_TileMode, kNone_FilterMode); 73 this->reset(SkShader::kClamp_TileMode, kNone_FilterMode);
59 } 74 }
60 75
61 void reset(SkShader::TileMode tileXAndY, FilterMode filterMode) { 76 void reset(SkShader::TileMode tileXAndY, FilterMode filterMode) {
62 fTileModes[0] = fTileModes[1] = tileXAndY; 77 fTileModes[0] = fTileModes[1] = tileXAndY;
63 fFilterMode = filterMode; 78 fFilterMode = filterMode;
79 fSRGBMode = kRespectDestination_SRGBMode;
80 }
81
82 void reset(SkShader::TileMode tileXandY, FilterMode filterMode, SRGBMode srg bMode) {
83 fTileModes[0] = fTileModes[1] = tileXandY;
84 fFilterMode = filterMode;
85 fSRGBMode = srgbMode;
64 } 86 }
65 87
66 void reset(const SkShader::TileMode tileModes[2], FilterMode filterMode) { 88 void reset(const SkShader::TileMode tileModes[2], FilterMode filterMode) {
67 fTileModes[0] = tileModes[0]; 89 fTileModes[0] = tileModes[0];
68 fTileModes[1] = tileModes[1]; 90 fTileModes[1] = tileModes[1];
69 fFilterMode = filterMode; 91 fFilterMode = filterMode;
92 fSRGBMode = kRespectDestination_SRGBMode;
70 } 93 }
71 94
72 void setClampNoFilter() { 95 void setClampNoFilter() {
73 fTileModes[0] = fTileModes[1] = SkShader::kClamp_TileMode; 96 fTileModes[0] = fTileModes[1] = SkShader::kClamp_TileMode;
74 fFilterMode = kNone_FilterMode; 97 fFilterMode = kNone_FilterMode;
75 } 98 }
76 99
77 void setClamp() { 100 void setClamp() {
78 fTileModes[0] = fTileModes[1] = SkShader::kClamp_TileMode; 101 fTileModes[0] = fTileModes[1] = SkShader::kClamp_TileMode;
79 } 102 }
80 103
81 void setFilterMode(FilterMode filterMode) { fFilterMode = filterMode; } 104 void setFilterMode(FilterMode filterMode) { fFilterMode = filterMode; }
82 105
83 void setTileModeX(const SkShader::TileMode tm) { fTileModes[0] = tm; } 106 void setTileModeX(const SkShader::TileMode tm) { fTileModes[0] = tm; }
84 void setTileModeY(const SkShader::TileMode tm) { fTileModes[1] = tm; } 107 void setTileModeY(const SkShader::TileMode tm) { fTileModes[1] = tm; }
85 void setTileModeXAndY(const SkShader::TileMode tm) { fTileModes[0] = fTileMo des[1] = tm; } 108 void setTileModeXAndY(const SkShader::TileMode tm) { fTileModes[0] = fTileMo des[1] = tm; }
86 109
110 void setSRGBMode(SRGBMode srgbMode) { fSRGBMode = srgbMode; }
111
87 SkShader::TileMode getTileModeX() const { return fTileModes[0]; } 112 SkShader::TileMode getTileModeX() const { return fTileModes[0]; }
88 113
89 SkShader::TileMode getTileModeY() const { return fTileModes[1]; } 114 SkShader::TileMode getTileModeY() const { return fTileModes[1]; }
90 115
91 bool isTiled() const { 116 bool isTiled() const {
92 return SkShader::kClamp_TileMode != fTileModes[0] || 117 return SkShader::kClamp_TileMode != fTileModes[0] ||
93 SkShader::kClamp_TileMode != fTileModes[1]; 118 SkShader::kClamp_TileMode != fTileModes[1];
94 } 119 }
95 120
96 FilterMode filterMode() const { return fFilterMode; } 121 FilterMode filterMode() const { return fFilterMode; }
97 122
123 SRGBMode srgbMode() const { return fSRGBMode; }
124
98 bool operator== (const GrTextureParams& other) const { 125 bool operator== (const GrTextureParams& other) const {
99 return fTileModes[0] == other.fTileModes[0] && 126 return fTileModes[0] == other.fTileModes[0] &&
100 fTileModes[1] == other.fTileModes[1] && 127 fTileModes[1] == other.fTileModes[1] &&
101 fFilterMode == other.fFilterMode; 128 fFilterMode == other.fFilterMode &&
129 fSRGBMode == other.fSRGBMode;
102 } 130 }
103 131
104 bool operator!= (const GrTextureParams& other) const { return !(*this == oth er); } 132 bool operator!= (const GrTextureParams& other) const { return !(*this == oth er); }
105 133
106 private: 134 private:
107 SkShader::TileMode fTileModes[2]; 135 SkShader::TileMode fTileModes[2];
108 FilterMode fFilterMode; 136 FilterMode fFilterMode;
137 SRGBMode fSRGBMode;
109 }; 138 };
110 #endif 139 #endif
OLDNEW
« no previous file with comments | « include/gpu/GrColor.h ('k') | include/gpu/GrTypes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698