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 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
277 if (xy) { | 277 if (xy) { |
278 xy[0] = (TileMode)fTileModeX; | 278 xy[0] = (TileMode)fTileModeX; |
279 xy[1] = (TileMode)fTileModeY; | 279 xy[1] = (TileMode)fTileModeY; |
280 } | 280 } |
281 return true; | 281 return true; |
282 } | 282 } |
283 | 283 |
284 sk_sp<SkFlattenable> SkBitmapProcShader::CreateProc(SkReadBuffer& buffer) { | 284 sk_sp<SkFlattenable> SkBitmapProcShader::CreateProc(SkReadBuffer& buffer) { |
285 SkMatrix lm; | 285 SkMatrix lm; |
286 buffer.readMatrix(&lm); | 286 buffer.readMatrix(&lm); |
287 SkBitmap bm; | 287 sk_sp<SkImage> image = buffer.readBitmapAsImage(); |
f(malita)
2016/07/26 21:29:43
Is nullptr an error condition, and if so should we
reed1
2016/07/29 13:12:04
Done.
| |
288 if (!buffer.readBitmap(&bm)) { | |
289 return nullptr; | |
290 } | |
291 bm.setImmutable(); | |
292 TileMode mx = (TileMode)buffer.readUInt(); | 288 TileMode mx = (TileMode)buffer.readUInt(); |
293 TileMode my = (TileMode)buffer.readUInt(); | 289 TileMode my = (TileMode)buffer.readUInt(); |
294 return SkShader::MakeBitmapShader(bm, mx, my, &lm); | 290 return image ? image->makeShader(mx, my, &lm) : nullptr; |
295 } | 291 } |
296 | 292 |
297 void SkBitmapProcShader::flatten(SkWriteBuffer& buffer) const { | 293 void SkBitmapProcShader::flatten(SkWriteBuffer& buffer) const { |
298 buffer.writeMatrix(this->getLocalMatrix()); | 294 buffer.writeMatrix(this->getLocalMatrix()); |
299 buffer.writeBitmap(fRawBitmap); | 295 buffer.writeBitmap(fRawBitmap); |
300 buffer.writeUInt(fTileModeX); | 296 buffer.writeUInt(fTileModeX); |
301 buffer.writeUInt(fTileModeY); | 297 buffer.writeUInt(fTileModeY); |
302 } | 298 } |
303 | 299 |
304 bool SkBitmapProcShader::isOpaque() const { | 300 bool SkBitmapProcShader::isOpaque() const { |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
466 inner = GrSimpleTextureEffect::Make(texture, std::move(colorSpaceXform), matrix, params); | 462 inner = GrSimpleTextureEffect::Make(texture, std::move(colorSpaceXform), matrix, params); |
467 } | 463 } |
468 | 464 |
469 if (kAlpha_8_SkColorType == fRawBitmap.colorType()) { | 465 if (kAlpha_8_SkColorType == fRawBitmap.colorType()) { |
470 return GrFragmentProcessor::MulOutputByInputUnpremulColor(std::move(inne r)); | 466 return GrFragmentProcessor::MulOutputByInputUnpremulColor(std::move(inne r)); |
471 } | 467 } |
472 return GrFragmentProcessor::MulOutputByInputAlpha(std::move(inner)); | 468 return GrFragmentProcessor::MulOutputByInputAlpha(std::move(inner)); |
473 } | 469 } |
474 | 470 |
475 #endif | 471 #endif |
OLD | NEW |