diff options
author | 2016-03-10 12:45:18 -0800 | |
---|---|---|
committer | 2016-03-10 12:45:18 -0800 | |
commit | bd73ffb83022f1f6b1997e2a91c049949e88a8a2 (patch) | |
tree | 5e716db9736fe7a3d9a4df87cab4bc70938f73a7 /src/image/SkImage.cpp | |
parent | a6b439a0af614e2e79b35ad41df7b72736d5d1b9 (diff) |
add Make variations to return SkImage by sk_sp
some internal call-sites update, but not. Will follow-up in future to complete that.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1778393002
Review URL: https://codereview.chromium.org/1778393002
Diffstat (limited to 'src/image/SkImage.cpp')
-rw-r--r-- | src/image/SkImage.cpp | 110 |
1 files changed, 91 insertions, 19 deletions
diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp index a41ac83d19..ee4491e0b1 100644 --- a/src/image/SkImage.cpp +++ b/src/image/SkImage.cpp @@ -15,6 +15,7 @@ #include "SkImageShader.h" #include "SkImage_Base.h" #include "SkNextID.h" +#include "SkPicture.h" #include "SkPixelRef.h" #include "SkPixelSerializer.h" #include "SkReadPixelsRec.h" @@ -150,12 +151,12 @@ SkData* SkImage::refEncoded() const { return as_IB(this)->onRefEncoded(ctx); } -SkImage* SkImage::NewFromEncoded(SkData* encoded, const SkIRect* subset) { +sk_sp<SkImage> SkImage::MakeFromEncoded(sk_sp<SkData> encoded, const SkIRect* subset) { if (nullptr == encoded || 0 == encoded->size()) { return nullptr; } - SkImageGenerator* generator = SkImageGenerator::NewFromEncoded(encoded); - return generator ? SkImage::NewFromGenerator(generator, subset) : nullptr; + SkImageGenerator* generator = SkImageGenerator::NewFromEncoded(encoded.get()); + return SkImage::MakeFromGenerator(generator, subset); } const char* SkImage::toString(SkString* str) const { @@ -164,7 +165,7 @@ const char* SkImage::toString(SkString* str) const { return str->c_str(); } -SkImage* SkImage::newSubset(const SkIRect& subset) const { +sk_sp<SkImage> SkImage::makeSubset(const SkIRect& subset) const { if (subset.isEmpty()) { return nullptr; } @@ -176,9 +177,9 @@ SkImage* SkImage::newSubset(const SkIRect& subset) const { // optimization : return self if the subset == our bounds if (bounds == subset) { - return SkRef(const_cast<SkImage*>(this)); + return sk_ref_sp(const_cast<SkImage*>(this)); } - return as_IB(this)->onNewSubset(subset); + return as_IB(this)->onMakeSubset(subset); } #if SK_SUPPORT_GPU @@ -283,7 +284,7 @@ bool SkImage::readYUV8Planes(const SkISize sizes[3], void* const planes[3], /////////////////////////////////////////////////////////////////////////////////////////////////// -SkImage* SkImage::NewFromBitmap(const SkBitmap& bm) { +sk_sp<SkImage> SkImage::MakeFromBitmap(const SkBitmap& bm) { SkPixelRef* pr = bm.pixelRef(); if (nullptr == pr) { return nullptr; @@ -300,13 +301,13 @@ SkImage* SkImage::NewFromBitmap(const SkBitmap& bm) { unrefCopy.reset(tex); } const SkImageInfo info = bm.info(); - return new SkImage_Gpu(info.width(), info.height(), bm.getGenerationID(), info.alphaType(), - tex, SkBudgeted::kNo); + return sk_make_sp<SkImage_Gpu>(info.width(), info.height(), bm.getGenerationID(), + info.alphaType(), tex, SkBudgeted::kNo); } #endif // This will check for immutable (share or copy) - return SkNewImageFromRasterBitmap(bm); + return SkMakeImageFromRasterBitmap(bm); } bool SkImage::asLegacyBitmap(SkBitmap* bitmap, LegacyBitmapMode mode) const { @@ -332,12 +333,13 @@ bool SkImage_Base::onAsLegacyBitmap(SkBitmap* bitmap, LegacyBitmapMode mode) con return true; } -SkImage* SkImage::NewFromPicture(const SkPicture* picture, const SkISize& dimensions, - const SkMatrix* matrix, const SkPaint* paint) { +sk_sp<SkImage> SkImage::MakeFromPicture(sk_sp<SkPicture> picture, const SkISize& dimensions, + const SkMatrix* matrix, const SkPaint* paint) { if (!picture) { return nullptr; } - return NewFromGenerator(SkImageGenerator::NewFromPicture(dimensions, picture, matrix, paint)); + return MakeFromGenerator(SkImageGenerator::NewFromPicture(dimensions, picture.release(), + matrix, paint)); } bool SkImage::isLazyGenerated() const { @@ -348,25 +350,95 @@ bool SkImage::isLazyGenerated() const { #if !SK_SUPPORT_GPU -SkImage* SkImage::NewTextureFromPixmap(GrContext*, const SkPixmap&, SkBudgeted budgeted) { +sk_sp<SkImage> SkImage::MakeTextureFromPixmap(GrContext*, const SkPixmap&, SkBudgeted budgeted) { + return nullptr; +} + +sk_sp<SkImage> SkImage::MakeFromTexture(GrContext*, const GrBackendTextureDesc&, SkAlphaType, + TextureReleaseProc, ReleaseContext) { return nullptr; } -SkImage* SkImage::NewFromTexture(GrContext*, const GrBackendTextureDesc&, SkAlphaType, - TextureReleaseProc, ReleaseContext) { +sk_sp<SkImage> SkImage::MakeFromAdoptedTexture(GrContext*, const GrBackendTextureDesc&, + SkAlphaType) { return nullptr; } -SkImage* SkImage::NewFromAdoptedTexture(GrContext*, const GrBackendTextureDesc&, SkAlphaType) { +sk_sp<SkImage> SkImage::MakeFromTextureCopy(GrContext*, const GrBackendTextureDesc&, SkAlphaType) { return nullptr; } -SkImage* SkImage::NewFromTextureCopy(GrContext*, const GrBackendTextureDesc&, SkAlphaType) { +sk_sp<SkImage> SkImage::MakeFromYUVTexturesCopy(GrContext* ctx, SkYUVColorSpace space, + const GrBackendObject yuvTextureHandles[3], + const SkISize yuvSizes[3], + GrSurfaceOrigin origin) { return nullptr; } -SkImage* SkImage::newTextureImage(GrContext*) const { +sk_sp<SkImage> SkImage::makeTextureImage(GrContext*) const { return nullptr; } #endif + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +#ifdef SK_SUPPORT_LEGACY_IMAGEFACTORY +SkImage* SkImage::NewRasterCopy(const Info& info, const void* pixels, size_t rowBytes, + SkColorTable* ctable) { + return MakeRasterCopy(SkPixmap(info, pixels, rowBytes, ctable)).release(); +} + +SkImage* SkImage::NewRasterData(const Info& info, SkData* pixels, size_t rowBytes) { + return MakeRasterData(info, sk_ref_sp(pixels), rowBytes).release(); +} + +SkImage* SkImage::NewFromRaster(const Info& info, const void* pixels, size_t rowBytes, + RasterReleaseProc proc, ReleaseContext releasectx) { + return MakeFromRaster(SkPixmap(info, pixels, rowBytes), proc, releasectx).release(); +} + +SkImage* SkImage::NewFromBitmap(const SkBitmap& bm) { + return MakeFromBitmap(bm).release(); +} + +SkImage* SkImage::NewFromGenerator(SkImageGenerator* gen, const SkIRect* subset) { + return MakeFromGenerator(gen, subset).release(); +} + +SkImage* SkImage::NewFromEncoded(SkData* encoded, const SkIRect* subset) { + return MakeFromEncoded(sk_ref_sp(encoded), subset).release(); +} + +SkImage* SkImage::NewFromTexture(GrContext* ctx, const GrBackendTextureDesc& desc, SkAlphaType at, + TextureReleaseProc proc, ReleaseContext releasectx) { + return MakeFromTexture(ctx, desc, at, proc, releasectx).release(); +} + +SkImage* SkImage::NewFromAdoptedTexture(GrContext* ctx, const GrBackendTextureDesc& desc, + SkAlphaType at) { + return MakeFromAdoptedTexture(ctx, desc, at).release(); +} + +SkImage* SkImage::NewFromTextureCopy(GrContext* ctx, const GrBackendTextureDesc& desc, + SkAlphaType at) { + return MakeFromTextureCopy(ctx, desc, at).release(); +} + +SkImage* SkImage::NewFromYUVTexturesCopy(GrContext* ctx, SkYUVColorSpace space, + const GrBackendObject yuvTextureHandles[3], + const SkISize yuvSizes[3], + GrSurfaceOrigin origin) { + return MakeFromYUVTexturesCopy(ctx, space, yuvTextureHandles, yuvSizes, origin).release(); +} + +SkImage* SkImage::NewFromPicture(const SkPicture* picture, const SkISize& dimensions, + const SkMatrix* matrix, const SkPaint* paint) { + return MakeFromPicture(sk_ref_sp(const_cast<SkPicture*>(picture)), dimensions, + matrix, paint).release(); +} + +SkImage* SkImage::NewTextureFromPixmap(GrContext* ctx, const SkPixmap& pmap, SkBudgeted budgeted) { + return MakeTextureFromPixmap(ctx, pmap, budgeted).release(); +} +#endif |