| 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 "SkFlattenableBuffers.h" | 9 #include "SkReadBuffer.h" |
| 10 #include "SkWriteBuffer.h" |
| 10 #include "SkPixelRef.h" | 11 #include "SkPixelRef.h" |
| 11 #include "SkErrorInternals.h" | 12 #include "SkErrorInternals.h" |
| 12 #include "SkBitmapProcShader.h" | 13 #include "SkBitmapProcShader.h" |
| 13 | 14 |
| 14 #if SK_SUPPORT_GPU | 15 #if SK_SUPPORT_GPU |
| 15 #include "effects/GrSimpleTextureEffect.h" | 16 #include "effects/GrSimpleTextureEffect.h" |
| 16 #include "effects/GrBicubicEffect.h" | 17 #include "effects/GrBicubicEffect.h" |
| 17 #endif | 18 #endif |
| 18 | 19 |
| 19 bool SkBitmapProcShader::CanDo(const SkBitmap& bm, TileMode tx, TileMode ty) { | 20 bool SkBitmapProcShader::CanDo(const SkBitmap& bm, TileMode tx, TileMode ty) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 31 } | 32 } |
| 32 | 33 |
| 33 SkBitmapProcShader::SkBitmapProcShader(const SkBitmap& src, | 34 SkBitmapProcShader::SkBitmapProcShader(const SkBitmap& src, |
| 34 TileMode tmx, TileMode tmy) { | 35 TileMode tmx, TileMode tmy) { |
| 35 fRawBitmap = src; | 36 fRawBitmap = src; |
| 36 fState.fTileModeX = (uint8_t)tmx; | 37 fState.fTileModeX = (uint8_t)tmx; |
| 37 fState.fTileModeY = (uint8_t)tmy; | 38 fState.fTileModeY = (uint8_t)tmy; |
| 38 fFlags = 0; // computed in setContext | 39 fFlags = 0; // computed in setContext |
| 39 } | 40 } |
| 40 | 41 |
| 41 SkBitmapProcShader::SkBitmapProcShader(SkFlattenableReadBuffer& 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 fState.fTileModeX = buffer.readUInt(); | 46 fState.fTileModeX = buffer.readUInt(); |
| 46 fState.fTileModeY = buffer.readUInt(); | 47 fState.fTileModeY = buffer.readUInt(); |
| 47 fFlags = 0; // computed in setContext | 48 fFlags = 0; // computed in setContext |
| 48 } | 49 } |
| 49 | 50 |
| 50 SkShader::BitmapType SkBitmapProcShader::asABitmap(SkBitmap* texture, | 51 SkShader::BitmapType SkBitmapProcShader::asABitmap(SkBitmap* texture, |
| 51 SkMatrix* texM, | 52 SkMatrix* texM, |
| 52 TileMode xy[]) const { | 53 TileMode xy[]) const { |
| 53 if (texture) { | 54 if (texture) { |
| 54 *texture = fRawBitmap; | 55 *texture = fRawBitmap; |
| 55 } | 56 } |
| 56 if (texM) { | 57 if (texM) { |
| 57 texM->reset(); | 58 texM->reset(); |
| 58 } | 59 } |
| 59 if (xy) { | 60 if (xy) { |
| 60 xy[0] = (TileMode)fState.fTileModeX; | 61 xy[0] = (TileMode)fState.fTileModeX; |
| 61 xy[1] = (TileMode)fState.fTileModeY; | 62 xy[1] = (TileMode)fState.fTileModeY; |
| 62 } | 63 } |
| 63 return kDefault_BitmapType; | 64 return kDefault_BitmapType; |
| 64 } | 65 } |
| 65 | 66 |
| 66 void SkBitmapProcShader::flatten(SkFlattenableWriteBuffer& buffer) const { | 67 void SkBitmapProcShader::flatten(SkWriteBuffer& buffer) const { |
| 67 this->INHERITED::flatten(buffer); | 68 this->INHERITED::flatten(buffer); |
| 68 | 69 |
| 69 buffer.writeBitmap(fRawBitmap); | 70 buffer.writeBitmap(fRawBitmap); |
| 70 buffer.writeUInt(fState.fTileModeX); | 71 buffer.writeUInt(fState.fTileModeX); |
| 71 buffer.writeUInt(fState.fTileModeY); | 72 buffer.writeUInt(fState.fTileModeY); |
| 72 } | 73 } |
| 73 | 74 |
| 74 static bool only_scale_and_translate(const SkMatrix& matrix) { | 75 static bool only_scale_and_translate(const SkMatrix& matrix) { |
| 75 unsigned mask = SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask; | 76 unsigned mask = SkMatrix::kTranslate_Mask | SkMatrix::kScale_Mask; |
| 76 return (matrix.getType() & ~mask) == 0; | 77 return (matrix.getType() & ~mask) == 0; |
| (...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 GrEffectRef* effect = NULL; | 437 GrEffectRef* effect = NULL; |
| 437 if (paintFilterLevel == SkPaint::kHigh_FilterLevel) { | 438 if (paintFilterLevel == SkPaint::kHigh_FilterLevel) { |
| 438 effect = GrBicubicEffect::Create(texture, matrix, tm); | 439 effect = GrBicubicEffect::Create(texture, matrix, tm); |
| 439 } else { | 440 } else { |
| 440 effect = GrSimpleTextureEffect::Create(texture, matrix, params); | 441 effect = GrSimpleTextureEffect::Create(texture, matrix, params); |
| 441 } | 442 } |
| 442 GrUnlockAndUnrefCachedBitmapTexture(texture); | 443 GrUnlockAndUnrefCachedBitmapTexture(texture); |
| 443 return effect; | 444 return effect; |
| 444 } | 445 } |
| 445 #endif | 446 #endif |
| OLD | NEW |