1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/skia/trunk/src/gpu/GrTextureAccess.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,107 @@ 1.4 +/* 1.5 + * Copyright 2012 Google Inc. 1.6 + * 1.7 + * Use of this source code is governed by a BSD-style license that can be 1.8 + * found in the LICENSE file. 1.9 + */ 1.10 + 1.11 +#include "GrTextureAccess.h" 1.12 +#include "GrColor.h" 1.13 +#include "GrTexture.h" 1.14 + 1.15 +GrTextureAccess::GrTextureAccess() { 1.16 +#ifdef SK_DEBUG 1.17 + memcpy(fSwizzle, "void", 5); 1.18 + fSwizzleMask = 0xbeeffeed; 1.19 +#endif 1.20 +} 1.21 + 1.22 +GrTextureAccess::GrTextureAccess(GrTexture* texture, const GrTextureParams& params) { 1.23 + this->reset(texture, params); 1.24 +} 1.25 + 1.26 +GrTextureAccess::GrTextureAccess(GrTexture* texture, 1.27 + GrTextureParams::FilterMode filterMode, 1.28 + SkShader::TileMode tileXAndY) { 1.29 + this->reset(texture, filterMode, tileXAndY); 1.30 +} 1.31 + 1.32 +GrTextureAccess::GrTextureAccess(GrTexture* texture, 1.33 + const char* swizzle, 1.34 + const GrTextureParams& params) { 1.35 + this->reset(texture, swizzle, params); 1.36 +} 1.37 + 1.38 +GrTextureAccess::GrTextureAccess(GrTexture* texture, 1.39 + const char* swizzle, 1.40 + GrTextureParams::FilterMode filterMode, 1.41 + SkShader::TileMode tileXAndY) { 1.42 + this->reset(texture, swizzle, filterMode, tileXAndY); 1.43 +} 1.44 + 1.45 +void GrTextureAccess::reset(GrTexture* texture, 1.46 + const char* swizzle, 1.47 + const GrTextureParams& params) { 1.48 + SkASSERT(NULL != texture); 1.49 + SkASSERT(strlen(swizzle) >= 1 && strlen(swizzle) <= 4); 1.50 + 1.51 + fParams = params; 1.52 + fTexture.reset(SkRef(texture)); 1.53 + this->setSwizzle(swizzle); 1.54 +} 1.55 + 1.56 +void GrTextureAccess::reset(GrTexture* texture, 1.57 + const char* swizzle, 1.58 + GrTextureParams::FilterMode filterMode, 1.59 + SkShader::TileMode tileXAndY) { 1.60 + SkASSERT(NULL != texture); 1.61 + SkASSERT(strlen(swizzle) >= 1 && strlen(swizzle) <= 4); 1.62 + 1.63 + fParams.reset(tileXAndY, filterMode); 1.64 + fTexture.reset(SkRef(texture)); 1.65 + this->setSwizzle(swizzle); 1.66 +} 1.67 + 1.68 +void GrTextureAccess::reset(GrTexture* texture, 1.69 + const GrTextureParams& params) { 1.70 + SkASSERT(NULL != texture); 1.71 + fTexture.reset(SkRef(texture)); 1.72 + fParams = params; 1.73 + memcpy(fSwizzle, "rgba", 5); 1.74 + fSwizzleMask = kRGBA_GrColorComponentFlags; 1.75 +} 1.76 + 1.77 +void GrTextureAccess::reset(GrTexture* texture, 1.78 + GrTextureParams::FilterMode filterMode, 1.79 + SkShader::TileMode tileXAndY) { 1.80 + SkASSERT(NULL != texture); 1.81 + fTexture.reset(SkRef(texture)); 1.82 + fParams.reset(tileXAndY, filterMode); 1.83 + memcpy(fSwizzle, "rgba", 5); 1.84 + fSwizzleMask = kRGBA_GrColorComponentFlags; 1.85 +} 1.86 + 1.87 +void GrTextureAccess::setSwizzle(const char* swizzle) { 1.88 + fSwizzleMask = 0; 1.89 + memset(fSwizzle, '\0', 5); 1.90 + for (int i = 0; i < 4 && '\0' != swizzle[i]; ++i) { 1.91 + fSwizzle[i] = swizzle[i]; 1.92 + switch (swizzle[i]) { 1.93 + case 'r': 1.94 + fSwizzleMask |= kR_GrColorComponentFlag; 1.95 + break; 1.96 + case 'g': 1.97 + fSwizzleMask |= kG_GrColorComponentFlag; 1.98 + break; 1.99 + case 'b': 1.100 + fSwizzleMask |= kB_GrColorComponentFlag; 1.101 + break; 1.102 + case 'a': 1.103 + fSwizzleMask |= kA_GrColorComponentFlag; 1.104 + break; 1.105 + default: 1.106 + GrCrash("Unexpected swizzle string character."); 1.107 + break; 1.108 + } 1.109 + } 1.110 +}