OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 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 "SkBitmapProcShader.h" | 8 #include "SkBitmapProcShader.h" |
9 #include "SkBitmapProcState.h" | 9 #include "SkBitmapProcState.h" |
10 #include "SkBitmapProvider.h" | 10 #include "SkBitmapProvider.h" |
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 buffer.writeMatrix(this->getLocalMatrix()); | 296 buffer.writeMatrix(this->getLocalMatrix()); |
297 buffer.writeBitmap(fRawBitmap); | 297 buffer.writeBitmap(fRawBitmap); |
298 buffer.writeUInt(fTileModeX); | 298 buffer.writeUInt(fTileModeX); |
299 buffer.writeUInt(fTileModeY); | 299 buffer.writeUInt(fTileModeY); |
300 } | 300 } |
301 | 301 |
302 bool SkBitmapProcShader::isOpaque() const { | 302 bool SkBitmapProcShader::isOpaque() const { |
303 return fRawBitmap.isOpaque(); | 303 return fRawBitmap.isOpaque(); |
304 } | 304 } |
305 | 305 |
| 306 bool SkBitmapProcShader::bitmapIsTooBig(const SkBitmap& bm) { |
| 307 // SkBitmapProcShader stores bitmap coordinates in a 16bit buffer, as it |
| 308 // communicates between its matrix-proc and its sampler-proc. Until we can |
| 309 // widen that, we have to reject bitmaps that are larger. |
| 310 // |
| 311 static const int kMaxSize = 65535; |
| 312 |
| 313 return bm.width() > kMaxSize || bm.height() > kMaxSize; |
| 314 } |
| 315 |
306 ////////////////////////////////////////////////////////////////////////////////
/////////////////// | 316 ////////////////////////////////////////////////////////////////////////////////
/////////////////// |
307 | 317 |
308 #include "SkUnPreMultiply.h" | 318 #include "SkUnPreMultiply.h" |
309 #include "SkColorShader.h" | 319 #include "SkColorShader.h" |
310 #include "SkEmptyShader.h" | 320 #include "SkEmptyShader.h" |
311 | 321 |
312 // returns true and set color if the bitmap can be drawn as a single color | 322 // returns true and set color if the bitmap can be drawn as a single color |
313 // (for efficiency) | 323 // (for efficiency) |
314 static bool can_use_color_shader(const SkBitmap& bm, SkColor* color) { | 324 static bool can_use_color_shader(const SkBitmap& bm, SkColor* color) { |
315 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK | 325 #ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
460 inner = GrSimpleTextureEffect::Make(texture, matrix, params); | 470 inner = GrSimpleTextureEffect::Make(texture, matrix, params); |
461 } | 471 } |
462 | 472 |
463 if (kAlpha_8_SkColorType == fRawBitmap.colorType()) { | 473 if (kAlpha_8_SkColorType == fRawBitmap.colorType()) { |
464 return GrFragmentProcessor::MulOutputByInputUnpremulColor(std::move(inne
r)); | 474 return GrFragmentProcessor::MulOutputByInputUnpremulColor(std::move(inne
r)); |
465 } | 475 } |
466 return GrFragmentProcessor::MulOutputByInputAlpha(std::move(inner)); | 476 return GrFragmentProcessor::MulOutputByInputAlpha(std::move(inner)); |
467 } | 477 } |
468 | 478 |
469 #endif | 479 #endif |
OLD | NEW |