Move GrTextureParams from GrSamplerState to GrTextureAccess
Review URL: https://codereview.appspot.com/6496135/
git-svn-id: http://skia.googlecode.com/svn/trunk@5582 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrTextureAccess.cpp b/src/gpu/GrTextureAccess.cpp
index c3c8038..1156ec2 100644
--- a/src/gpu/GrTextureAccess.cpp
+++ b/src/gpu/GrTextureAccess.cpp
@@ -16,25 +16,76 @@
#endif
}
-GrTextureAccess::GrTextureAccess(GrTexture* texture, const char* swizzle) {
- this->reset(texture, swizzle);
+GrTextureAccess::GrTextureAccess(GrTexture* texture, const GrTextureParams& params) {
+ this->reset(texture, params);
}
-GrTextureAccess::GrTextureAccess(GrTexture* texture) {
- this->reset(texture);
+GrTextureAccess::GrTextureAccess(GrTexture* texture,
+ bool bilerp,
+ SkShader::TileMode tileXAndY) {
+ this->reset(texture, bilerp, tileXAndY);
}
-void GrTextureAccess::reset(GrTexture* texture, const char* swizzle) {
+GrTextureAccess::GrTextureAccess(GrTexture* texture,
+ const char* swizzle,
+ const GrTextureParams& params) {
+ this->reset(texture, swizzle, params);
+}
+
+GrTextureAccess::GrTextureAccess(GrTexture* texture,
+ const char* swizzle,
+ bool bilerp,
+ SkShader::TileMode tileXAndY) {
+ this->reset(texture, swizzle, bilerp, tileXAndY);
+}
+
+void GrTextureAccess::reset(GrTexture* texture,
+ const char* swizzle,
+ const GrTextureParams& params) {
GrAssert(NULL != texture);
GrAssert(strlen(swizzle) >= 1 && strlen(swizzle) <= 4);
- texture->ref();
- fTexture.reset(texture);
+ fParams = params;
+ fTexture.reset(SkRef(texture));
+ this->setSwizzle(swizzle);
+}
+void GrTextureAccess::reset(GrTexture* texture,
+ const char* swizzle,
+ bool bilerp,
+ SkShader::TileMode tileXAndY) {
+ GrAssert(NULL != texture);
+ GrAssert(strlen(swizzle) >= 1 && strlen(swizzle) <= 4);
+
+ fParams.reset(tileXAndY, bilerp);
+ fTexture.reset(SkRef(texture));
+ this->setSwizzle(swizzle);
+}
+
+void GrTextureAccess::reset(GrTexture* texture,
+ const GrTextureParams& params) {
+ GrAssert(NULL != texture);
+ fTexture.reset(SkRef(texture));
+ fParams = params;
+ memcpy(fSwizzle, "rgba", 5);
+ fSwizzleMask = (kRGB_SwizzleMask | kA_SwizzleFlag);
+}
+
+void GrTextureAccess::reset(GrTexture* texture,
+ bool bilerp,
+ SkShader::TileMode tileXAndY) {
+ GrAssert(NULL != texture);
+ fTexture.reset(SkRef(texture));
+ fParams.reset(tileXAndY, bilerp);
+ memcpy(fSwizzle, "rgba", 5);
+ fSwizzleMask = (kRGB_SwizzleMask | kA_SwizzleFlag);
+}
+
+void GrTextureAccess::setSwizzle(const char* swizzle) {
fSwizzleMask = 0;
- fSwizzle[4] = '\0';
+ memset(fSwizzle, '\0', 5);
int i = 0;
- do {
+ for (int i = 0; i < 4 && '\0' != swizzle[i]; ++i) {
fSwizzle[i] = swizzle[i];
switch (swizzle[i]) {
case 'r':
@@ -49,19 +100,9 @@
case 'a':
fSwizzleMask |= kA_SwizzleFlag;
break;
- case '\0':
- break;
default:
GrCrash("Unexpected swizzle string character.");
break;
}
- } while ('\0' != swizzle[i] && ++i < 4);
-}
-
-void GrTextureAccess::reset(GrTexture* texture) {
- GrAssert(NULL != texture);
- texture->ref();
- fTexture.reset(texture);
- memcpy(fSwizzle, "rgba", 5);
- fSwizzleMask = (kRGB_SwizzleMask | kA_SwizzleFlag);
+ }
}