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 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 static bool bitmapIsTooBig(const SkBitmap& bm) { | 330 static bool bitmapIsTooBig(const SkBitmap& bm) { |
331 // SkBitmapProcShader stores bitmap coordinates in a 16bit buffer, as it | 331 // SkBitmapProcShader stores bitmap coordinates in a 16bit buffer, as it |
332 // communicates between its matrix-proc and its sampler-proc. Until we can | 332 // communicates between its matrix-proc and its sampler-proc. Until we can |
333 // widen that, we have to reject bitmaps that are larger. | 333 // widen that, we have to reject bitmaps that are larger. |
334 // | 334 // |
335 const int maxSize = 65535; | 335 const int maxSize = 65535; |
336 | 336 |
337 return bm.width() > maxSize || bm.height() > maxSize; | 337 return bm.width() > maxSize || bm.height() > maxSize; |
338 } | 338 } |
339 | 339 |
340 SkShader* CreateBitmapShader(const SkBitmap& src, SkShader::TileMode tmx, | 340 SkShader* SkCreateBitmapShader(const SkBitmap& src, SkShader::TileMode tmx, |
341 SkShader::TileMode tmy, const SkMatrix* localMatrix, SkTBlitterAllocator
* allocator) { | 341 SkShader::TileMode tmy, const SkMatrix* localMatr
ix, |
| 342 SkTBlitterAllocator* allocator) { |
342 SkShader* shader; | 343 SkShader* shader; |
343 SkColor color; | 344 SkColor color; |
344 if (src.isNull() || bitmapIsTooBig(src)) { | 345 if (src.isNull() || bitmapIsTooBig(src)) { |
345 if (NULL == allocator) { | 346 if (NULL == allocator) { |
346 shader = SkNEW(SkEmptyShader); | 347 shader = SkNEW(SkEmptyShader); |
347 } else { | 348 } else { |
348 shader = allocator->createT<SkEmptyShader>(); | 349 shader = allocator->createT<SkEmptyShader>(); |
349 } | 350 } |
350 } | 351 } |
351 else if (canUseColorShader(src, &color)) { | 352 else if (canUseColorShader(src, &color)) { |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 | 460 |
460 } | 461 } |
461 GrTextureParams params(tm, textureFilterMode); | 462 GrTextureParams params(tm, textureFilterMode); |
462 SkAutoTUnref<GrTexture> texture(GrRefCachedBitmapTexture(context, fRawBitmap
, ¶ms)); | 463 SkAutoTUnref<GrTexture> texture(GrRefCachedBitmapTexture(context, fRawBitmap
, ¶ms)); |
463 | 464 |
464 if (!texture) { | 465 if (!texture) { |
465 SkErrorInternals::SetError( kInternalError_SkError, | 466 SkErrorInternals::SetError( kInternalError_SkError, |
466 "Couldn't convert bitmap to texture."); | 467 "Couldn't convert bitmap to texture."); |
467 return false; | 468 return false; |
468 } | 469 } |
469 | 470 |
470 *paintColor = (kAlpha_8_SkColorType == fRawBitmap.colorType()) ? | 471 *paintColor = (kAlpha_8_SkColorType == fRawBitmap.colorType()) ? |
471 SkColor2GrColor(paint.getColor()
) : | 472 SkColor2GrColor(paint.getColor()
) : |
472 SkColor2GrColorJustAlpha(paint.g
etColor()); | 473 SkColor2GrColorJustAlpha(paint.g
etColor()); |
473 | 474 |
474 if (useBicubic) { | 475 if (useBicubic) { |
475 *fp = GrBicubicEffect::Create(texture, matrix, tm); | 476 *fp = GrBicubicEffect::Create(texture, matrix, tm); |
476 } else { | 477 } else { |
477 *fp = GrSimpleTextureEffect::Create(texture, matrix, params); | 478 *fp = GrSimpleTextureEffect::Create(texture, matrix, params); |
478 } | 479 } |
479 | 480 |
480 return true; | 481 return true; |
481 } | 482 } |
482 | 483 |
483 #else | 484 #else |
484 | 485 |
485 bool SkBitmapProcShader::asFragmentProcessor(GrContext*, const SkPaint&, const S
kMatrix*, GrColor*, | 486 bool SkBitmapProcShader::asFragmentProcessor(GrContext*, const SkPaint&, const S
kMatrix*, GrColor*, |
486 GrFragmentProcessor**) const { | 487 GrFragmentProcessor**) const { |
487 SkDEBUGFAIL("Should not call in GPU-less build"); | 488 SkDEBUGFAIL("Should not call in GPU-less build"); |
488 return false; | 489 return false; |
489 } | 490 } |
490 | 491 |
491 #endif | 492 #endif |
OLD | NEW |