Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 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 "SkAutoPixmapStorage.h" | 8 #include "SkAutoPixmapStorage.h" |
| 9 #include "GrCaps.h" | 9 #include "GrCaps.h" |
| 10 #include "GrContext.h" | 10 #include "GrContext.h" |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 308 if (GrTexture* peek = as_IB(this)->peekTexture()) { | 308 if (GrTexture* peek = as_IB(this)->peekTexture()) { |
| 309 return peek->getContext() == context ? sk_ref_sp(const_cast<SkImage*>(th is)) : nullptr; | 309 return peek->getContext() == context ? sk_ref_sp(const_cast<SkImage*>(th is)) : nullptr; |
| 310 } | 310 } |
| 311 // No way to check whether a image is premul or not? | 311 // No way to check whether a image is premul or not? |
| 312 SkAlphaType at = this->isOpaque() ? kOpaque_SkAlphaType : kPremul_SkAlphaTyp e; | 312 SkAlphaType at = this->isOpaque() ? kOpaque_SkAlphaType : kPremul_SkAlphaTyp e; |
| 313 | 313 |
| 314 if (SkImageCacherator* cacher = as_IB(this)->peekCacherator()) { | 314 if (SkImageCacherator* cacher = as_IB(this)->peekCacherator()) { |
| 315 GrImageTextureMaker maker(context, cacher, this, kDisallow_CachingHint); | 315 GrImageTextureMaker maker(context, cacher, this, kDisallow_CachingHint); |
| 316 return create_image_from_maker(&maker, at, this->uniqueID()); | 316 return create_image_from_maker(&maker, at, this->uniqueID()); |
| 317 } | 317 } |
| 318 SkBitmap bmp; | 318 |
|
robertphillips
2016/08/08 14:32:29
How do we know we're not in the SkImage_Generator
reed1
2016/08/08 15:19:30
Generator's have a cacherator (by definition), so
| |
| 319 if (!this->asLegacyBitmap(&bmp, kRO_LegacyBitmapMode)) { | 319 if (const SkBitmap* bmp = as_IB(this)->onPeekBitmap()) { |
| 320 return nullptr; | 320 GrBitmapTextureMaker maker(context, *bmp); |
| 321 return create_image_from_maker(&maker, at, this->uniqueID()); | |
| 321 } | 322 } |
| 322 GrBitmapTextureMaker maker(context, bmp); | 323 return nullptr; |
| 323 return create_image_from_maker(&maker, at, this->uniqueID()); | |
| 324 } | 324 } |
| 325 | 325 |
| 326 sk_sp<SkImage> SkImage::makeNonTextureImage() const { | 326 sk_sp<SkImage> SkImage::makeNonTextureImage() const { |
| 327 if (!this->isTextureBacked()) { | 327 if (!this->isTextureBacked()) { |
| 328 return sk_ref_sp(const_cast<SkImage*>(this)); | 328 return sk_ref_sp(const_cast<SkImage*>(this)); |
| 329 } | 329 } |
| 330 SkImageInfo info = as_IB(this)->onImageInfo(); | 330 SkImageInfo info = as_IB(this)->onImageInfo(); |
| 331 size_t rowBytes = info.minRowBytes(); | 331 size_t rowBytes = info.minRowBytes(); |
| 332 size_t size = info.getSafeSize(rowBytes); | 332 size_t size = info.getSafeSize(rowBytes); |
| 333 auto data = SkData::MakeUninitialized(size); | 333 auto data = SkData::MakeUninitialized(size); |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 570 return nullptr; | 570 return nullptr; |
| 571 } | 571 } |
| 572 SkAutoTUnref<GrTexture> texture(GrUploadMipMapToTexture(ctx, info, texels, m ipLevelCount)); | 572 SkAutoTUnref<GrTexture> texture(GrUploadMipMapToTexture(ctx, info, texels, m ipLevelCount)); |
| 573 if (!texture) { | 573 if (!texture) { |
| 574 return nullptr; | 574 return nullptr; |
| 575 } | 575 } |
| 576 return sk_make_sp<SkImage_Gpu>(texture->width(), texture->height(), kNeedNew ImageUniqueID, | 576 return sk_make_sp<SkImage_Gpu>(texture->width(), texture->height(), kNeedNew ImageUniqueID, |
| 577 info.alphaType(), texture, sk_ref_sp(info.col orSpace()), | 577 info.alphaType(), texture, sk_ref_sp(info.col orSpace()), |
| 578 budgeted); | 578 budgeted); |
| 579 } | 579 } |
| OLD | NEW |