| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 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 #include "GrTextureDomain.h" | 8 #include "GrTextureDomain.h" |
| 9 #include "GrInvariantOutput.h" | 9 #include "GrInvariantOutput.h" |
| 10 #include "GrSimpleTextureEffect.h" | 10 #include "GrSimpleTextureEffect.h" |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 break; | 139 break; |
| 140 } | 140 } |
| 141 } | 141 } |
| 142 } | 142 } |
| 143 | 143 |
| 144 void GrTextureDomain::GLDomain::setData(const GrGLProgramDataManager& pdman, | 144 void GrTextureDomain::GLDomain::setData(const GrGLProgramDataManager& pdman, |
| 145 const GrTextureDomain& textureDomain, | 145 const GrTextureDomain& textureDomain, |
| 146 GrSurfaceOrigin textureOrigin) { | 146 GrSurfaceOrigin textureOrigin) { |
| 147 SkASSERT(textureDomain.mode() == fMode); | 147 SkASSERT(textureDomain.mode() == fMode); |
| 148 if (kIgnore_Mode != textureDomain.mode()) { | 148 if (kIgnore_Mode != textureDomain.mode()) { |
| 149 GrGLfloat values[4] = { | 149 GrGLfloat values[kPrevDomainCount] = { |
| 150 SkScalarToFloat(textureDomain.domain().left()), | 150 SkScalarToFloat(textureDomain.domain().left()), |
| 151 SkScalarToFloat(textureDomain.domain().top()), | 151 SkScalarToFloat(textureDomain.domain().top()), |
| 152 SkScalarToFloat(textureDomain.domain().right()), | 152 SkScalarToFloat(textureDomain.domain().right()), |
| 153 SkScalarToFloat(textureDomain.domain().bottom()) | 153 SkScalarToFloat(textureDomain.domain().bottom()) |
| 154 }; | 154 }; |
| 155 // vertical flip if necessary | 155 // vertical flip if necessary |
| 156 if (kBottomLeft_GrSurfaceOrigin == textureOrigin) { | 156 if (kBottomLeft_GrSurfaceOrigin == textureOrigin) { |
| 157 values[1] = 1.0f - values[1]; | 157 values[1] = 1.0f - values[1]; |
| 158 values[3] = 1.0f - values[3]; | 158 values[3] = 1.0f - values[3]; |
| 159 // The top and bottom were just flipped, so correct the ordering | 159 // The top and bottom were just flipped, so correct the ordering |
| 160 // of elements so that values = (l, t, r, b). | 160 // of elements so that values = (l, t, r, b). |
| 161 SkTSwap(values[1], values[3]); | 161 SkTSwap(values[1], values[3]); |
| 162 } | 162 } |
| 163 if (0 != memcmp(values, fPrevDomain, 4 * sizeof(GrGLfloat))) { | 163 if (0 != memcmp(values, fPrevDomain, kPrevDomainCount * sizeof(GrGLfloat
))) { |
| 164 pdman.set4fv(fDomainUni, 1, values); | 164 pdman.set4fv(fDomainUni, 1, values); |
| 165 memcpy(fPrevDomain, values, 4 * sizeof(GrGLfloat)); | 165 memcpy(fPrevDomain, values, kPrevDomainCount * sizeof(GrGLfloat)); |
| 166 } | 166 } |
| 167 } | 167 } |
| 168 } | 168 } |
| 169 | 169 |
| 170 | 170 |
| 171 ////////////////////////////////////////////////////////////////////////////// | 171 ////////////////////////////////////////////////////////////////////////////// |
| 172 | 172 |
| 173 class GrGLTextureDomainEffect : public GrGLFragmentProcessor { | 173 class GrGLTextureDomainEffect : public GrGLFragmentProcessor { |
| 174 public: | 174 public: |
| 175 GrGLTextureDomainEffect(const GrProcessor&); | 175 GrGLTextureDomainEffect(const GrProcessor&); |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 bool bilerp = mode != GrTextureDomain::kRepeat_Mode ? d->fRandom->nextBool()
: false; | 300 bool bilerp = mode != GrTextureDomain::kRepeat_Mode ? d->fRandom->nextBool()
: false; |
| 301 GrCoordSet coords = d->fRandom->nextBool() ? kLocal_GrCoordSet : kDevice_GrC
oordSet; | 301 GrCoordSet coords = d->fRandom->nextBool() ? kLocal_GrCoordSet : kDevice_GrC
oordSet; |
| 302 return GrTextureDomainEffect::Create(d->fProcDataManager, | 302 return GrTextureDomainEffect::Create(d->fProcDataManager, |
| 303 d->fTextures[texIdx], | 303 d->fTextures[texIdx], |
| 304 matrix, | 304 matrix, |
| 305 domain, | 305 domain, |
| 306 mode, | 306 mode, |
| 307 bilerp ? GrTextureParams::kBilerp_Filte
rMode : GrTextureParams::kNone_FilterMode, | 307 bilerp ? GrTextureParams::kBilerp_Filte
rMode : GrTextureParams::kNone_FilterMode, |
| 308 coords); | 308 coords); |
| 309 } | 309 } |
| OLD | NEW |