Index: src/image/SkImage.cpp |
diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp |
index a41ac83d1906aa6f59f7c2a28b95b51ec2543069..55860692ce8875c5cde69007df8afd6218c55060 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.get(), |
+ 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 |