Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Side by Side Diff: src/core/SkBitmapProcShader.cpp

Issue 245963010: Move SkShader::fLocalMatrix into SkShader constructor. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: nit Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/core/SkBitmapProcShader.h ('k') | src/core/SkComposeShader.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 13 matching lines...) Expand all
24 case kIndex_8_SkColorType: 24 case kIndex_8_SkColorType:
25 case kN32_SkColorType: 25 case kN32_SkColorType:
26 // if (tx == ty && (kClamp_TileMode == tx || kRepeat_TileMode == tx)) 26 // if (tx == ty && (kClamp_TileMode == tx || kRepeat_TileMode == tx))
27 return true; 27 return true;
28 default: 28 default:
29 break; 29 break;
30 } 30 }
31 return false; 31 return false;
32 } 32 }
33 33
34 SkBitmapProcShader::SkBitmapProcShader(const SkBitmap& src, 34 SkBitmapProcShader::SkBitmapProcShader(const SkBitmap& src, TileMode tmx, TileMo de tmy,
35 TileMode tmx, TileMode tmy) { 35 const SkMatrix* localMatrix)
36 : INHERITED(localMatrix) {
36 fRawBitmap = src; 37 fRawBitmap = src;
37 fTileModeX = (uint8_t)tmx; 38 fTileModeX = (uint8_t)tmx;
38 fTileModeY = (uint8_t)tmy; 39 fTileModeY = (uint8_t)tmy;
39 } 40 }
40 41
41 SkBitmapProcShader::SkBitmapProcShader(SkReadBuffer& buffer) 42 SkBitmapProcShader::SkBitmapProcShader(SkReadBuffer& buffer)
42 : INHERITED(buffer) { 43 : INHERITED(buffer) {
43 buffer.readBitmap(&fRawBitmap); 44 buffer.readBitmap(&fRawBitmap);
44 fRawBitmap.setImmutable(); 45 fRawBitmap.setImmutable();
45 fTileModeX = buffer.readUInt(); 46 fTileModeX = buffer.readUInt();
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 // SkBitmapProcShader stores bitmap coordinates in a 16bit buffer, as it 341 // SkBitmapProcShader stores bitmap coordinates in a 16bit buffer, as it
341 // communicates between its matrix-proc and its sampler-proc. Until we can 342 // communicates between its matrix-proc and its sampler-proc. Until we can
342 // widen that, we have to reject bitmaps that are larger. 343 // widen that, we have to reject bitmaps that are larger.
343 // 344 //
344 const int maxSize = 65535; 345 const int maxSize = 65535;
345 346
346 return bm.width() > maxSize || bm.height() > maxSize; 347 return bm.width() > maxSize || bm.height() > maxSize;
347 } 348 }
348 349
349 SkShader* CreateBitmapShader(const SkBitmap& src, SkShader::TileMode tmx, 350 SkShader* CreateBitmapShader(const SkBitmap& src, SkShader::TileMode tmx,
350 SkShader::TileMode tmy, SkTBlitterAllocator* allocator) { 351 SkShader::TileMode tmy, const SkMatrix* localMatrix, SkTBlitterAllocator * allocator) {
351 SkShader* shader; 352 SkShader* shader;
352 SkColor color; 353 SkColor color;
353 if (src.isNull() || bitmapIsTooBig(src)) { 354 if (src.isNull() || bitmapIsTooBig(src)) {
354 if (NULL == allocator) { 355 if (NULL == allocator) {
355 shader = SkNEW(SkEmptyShader); 356 shader = SkNEW(SkEmptyShader);
356 } else { 357 } else {
357 shader = allocator->createT<SkEmptyShader>(); 358 shader = allocator->createT<SkEmptyShader>();
358 } 359 }
359 } 360 }
360 else if (canUseColorShader(src, &color)) { 361 else if (canUseColorShader(src, &color)) {
361 if (NULL == allocator) { 362 if (NULL == allocator) {
362 shader = SkNEW_ARGS(SkColorShader, (color)); 363 shader = SkNEW_ARGS(SkColorShader, (color));
363 } else { 364 } else {
364 shader = allocator->createT<SkColorShader>(color); 365 shader = allocator->createT<SkColorShader>(color);
365 } 366 }
366 } else { 367 } else {
367 if (NULL == allocator) { 368 if (NULL == allocator) {
368 shader = SkNEW_ARGS(SkBitmapProcShader, (src, tmx, tmy)); 369 shader = SkNEW_ARGS(SkBitmapProcShader, (src, tmx, tmy, localMatrix) );
369 } else { 370 } else {
370 shader = allocator->createT<SkBitmapProcShader>(src, tmx, tmy); 371 shader = allocator->createT<SkBitmapProcShader>(src, tmx, tmy, local Matrix);
371 } 372 }
372 } 373 }
373 return shader; 374 return shader;
374 } 375 }
375 376
376 /////////////////////////////////////////////////////////////////////////////// 377 ///////////////////////////////////////////////////////////////////////////////
377 378
378 #ifndef SK_IGNORE_TO_STRING 379 #ifndef SK_IGNORE_TO_STRING
379 void SkBitmapProcShader::toString(SkString* str) const { 380 void SkBitmapProcShader::toString(SkString* str) const {
380 static const char* gTileModeName[SkShader::kTileModeCount] = { 381 static const char* gTileModeName[SkShader::kTileModeCount] = {
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 GrEffectRef* effect = NULL; 487 GrEffectRef* effect = NULL;
487 if (paintFilterLevel == SkPaint::kHigh_FilterLevel) { 488 if (paintFilterLevel == SkPaint::kHigh_FilterLevel) {
488 effect = GrBicubicEffect::Create(texture, matrix, tm); 489 effect = GrBicubicEffect::Create(texture, matrix, tm);
489 } else { 490 } else {
490 effect = GrSimpleTextureEffect::Create(texture, matrix, params); 491 effect = GrSimpleTextureEffect::Create(texture, matrix, params);
491 } 492 }
492 GrUnlockAndUnrefCachedBitmapTexture(texture); 493 GrUnlockAndUnrefCachedBitmapTexture(texture);
493 return effect; 494 return effect;
494 } 495 }
495 #endif 496 #endif
OLDNEW
« no previous file with comments | « src/core/SkBitmapProcShader.h ('k') | src/core/SkComposeShader.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698