Chromium Code Reviews| 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 |