| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 #include "SkColorPriv.h" | 8 #include "SkColorPriv.h" |
| 9 #include "SkReadBuffer.h" | 9 #include "SkReadBuffer.h" |
| 10 #include "SkWriteBuffer.h" | 10 #include "SkWriteBuffer.h" |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 | 360 |
| 361 /////////////////////////////////////////////////////////////////////////////// | 361 /////////////////////////////////////////////////////////////////////////////// |
| 362 | 362 |
| 363 #if SK_SUPPORT_GPU | 363 #if SK_SUPPORT_GPU |
| 364 | 364 |
| 365 #include "GrTextureAccess.h" | 365 #include "GrTextureAccess.h" |
| 366 #include "effects/GrSimpleTextureEffect.h" | 366 #include "effects/GrSimpleTextureEffect.h" |
| 367 #include "SkGr.h" | 367 #include "SkGr.h" |
| 368 | 368 |
| 369 bool SkBitmapProcShader::asFragmentProcessor(GrContext* context, const SkPaint&
paint, | 369 bool SkBitmapProcShader::asFragmentProcessor(GrContext* context, const SkPaint&
paint, |
| 370 const SkMatrix& viewM, |
| 370 const SkMatrix* localMatrix, GrColo
r* paintColor, | 371 const SkMatrix* localMatrix, GrColo
r* paintColor, |
| 371 GrFragmentProcessor** fp) const { | 372 GrFragmentProcessor** fp) const { |
| 372 SkMatrix matrix; | 373 SkMatrix matrix; |
| 373 matrix.setIDiv(fRawBitmap.width(), fRawBitmap.height()); | 374 matrix.setIDiv(fRawBitmap.width(), fRawBitmap.height()); |
| 374 | 375 |
| 375 SkMatrix lmInverse; | 376 SkMatrix lmInverse; |
| 376 if (!this->getLocalMatrix().invert(&lmInverse)) { | 377 if (!this->getLocalMatrix().invert(&lmInverse)) { |
| 377 return false; | 378 return false; |
| 378 } | 379 } |
| 379 if (localMatrix) { | 380 if (localMatrix) { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 398 GrTextureParams::FilterMode textureFilterMode; | 399 GrTextureParams::FilterMode textureFilterMode; |
| 399 switch(paint.getFilterLevel()) { | 400 switch(paint.getFilterLevel()) { |
| 400 case SkPaint::kNone_FilterLevel: | 401 case SkPaint::kNone_FilterLevel: |
| 401 textureFilterMode = GrTextureParams::kNone_FilterMode; | 402 textureFilterMode = GrTextureParams::kNone_FilterMode; |
| 402 break; | 403 break; |
| 403 case SkPaint::kLow_FilterLevel: | 404 case SkPaint::kLow_FilterLevel: |
| 404 textureFilterMode = GrTextureParams::kBilerp_FilterMode; | 405 textureFilterMode = GrTextureParams::kBilerp_FilterMode; |
| 405 break; | 406 break; |
| 406 case SkPaint::kMedium_FilterLevel: { | 407 case SkPaint::kMedium_FilterLevel: { |
| 407 SkMatrix matrix; | 408 SkMatrix matrix; |
| 408 matrix.setConcat(context->getMatrix(), this->getLocalMatrix()); | 409 matrix.setConcat(viewM, this->getLocalMatrix()); |
| 409 if (matrix.getMinScale() < SK_Scalar1) { | 410 if (matrix.getMinScale() < SK_Scalar1) { |
| 410 textureFilterMode = GrTextureParams::kMipMap_FilterMode; | 411 textureFilterMode = GrTextureParams::kMipMap_FilterMode; |
| 411 } else { | 412 } else { |
| 412 // Don't trigger MIP level generation unnecessarily. | 413 // Don't trigger MIP level generation unnecessarily. |
| 413 textureFilterMode = GrTextureParams::kBilerp_FilterMode; | 414 textureFilterMode = GrTextureParams::kBilerp_FilterMode; |
| 414 } | 415 } |
| 415 break; | 416 break; |
| 416 } | 417 } |
| 417 case SkPaint::kHigh_FilterLevel: { | 418 case SkPaint::kHigh_FilterLevel: { |
| 418 SkMatrix matrix; | 419 SkMatrix matrix; |
| 419 matrix.setConcat(context->getMatrix(), this->getLocalMatrix()); | 420 matrix.setConcat(viewM, this->getLocalMatrix()); |
| 420 useBicubic = GrBicubicEffect::ShouldUseBicubic(matrix, &textureFilte
rMode); | 421 useBicubic = GrBicubicEffect::ShouldUseBicubic(matrix, &textureFilte
rMode); |
| 421 break; | 422 break; |
| 422 } | 423 } |
| 423 default: | 424 default: |
| 424 SkErrorInternals::SetError( kInvalidPaint_SkError, | 425 SkErrorInternals::SetError( kInvalidPaint_SkError, |
| 425 "Sorry, I don't understand the filtering
" | 426 "Sorry, I don't understand the filtering
" |
| 426 "mode you asked for. Falling back to " | 427 "mode you asked for. Falling back to " |
| 427 "MIPMaps."); | 428 "MIPMaps."); |
| 428 textureFilterMode = GrTextureParams::kMipMap_FilterMode; | 429 textureFilterMode = GrTextureParams::kMipMap_FilterMode; |
| 429 break; | 430 break; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 446 *fp = GrBicubicEffect::Create(texture, matrix, tm); | 447 *fp = GrBicubicEffect::Create(texture, matrix, tm); |
| 447 } else { | 448 } else { |
| 448 *fp = GrSimpleTextureEffect::Create(texture, matrix, params); | 449 *fp = GrSimpleTextureEffect::Create(texture, matrix, params); |
| 449 } | 450 } |
| 450 | 451 |
| 451 return true; | 452 return true; |
| 452 } | 453 } |
| 453 | 454 |
| 454 #else | 455 #else |
| 455 | 456 |
| 456 bool SkBitmapProcShader::asFragmentProcessor(GrContext*, const SkPaint&, const S
kMatrix*, GrColor*, | 457 bool SkBitmapProcShader::asFragmentProcessor(GrContext*, const SkPaint&, const S
kMatrix&, |
| 458 const SkMatrix*, GrColor*, |
| 457 GrFragmentProcessor**) const { | 459 GrFragmentProcessor**) const { |
| 458 SkDEBUGFAIL("Should not call in GPU-less build"); | 460 SkDEBUGFAIL("Should not call in GPU-less build"); |
| 459 return false; | 461 return false; |
| 460 } | 462 } |
| 461 | 463 |
| 462 #endif | 464 #endif |
| OLD | NEW |