diff options
author | Matt Sarett <msarett@google.com> | 2017-06-08 09:08:34 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-06-08 14:05:39 +0000 |
commit | d21fd4b3369bf94e2e95e15c9578e07e499189d8 (patch) | |
tree | faa70738f36790e7f8986afef9f796ffcd4bbdd3 /src/image/SkImage_Raster.cpp | |
parent | 7fbeb5acdd925f9d04ccb1316fbcd3490b3f07ec (diff) |
Disable F16-nullptr sources
Also includes the refactor that triggered this change - stricter
checking on creation on raster SkImages.
Bug: skia:
Change-Id: Ie3216ac3f5307de4b78792b472676faa51e5459d
Reviewed-on: https://skia-review.googlesource.com/19040
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'src/image/SkImage_Raster.cpp')
-rw-r--r-- | src/image/SkImage_Raster.cpp | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp index f4f1211eb5..5b55c44685 100644 --- a/src/image/SkImage_Raster.cpp +++ b/src/image/SkImage_Raster.cpp @@ -13,6 +13,7 @@ #include "SkColorSpaceXformPriv.h" #include "SkColorTable.h" #include "SkData.h" +#include "SkImageInfoPriv.h" #include "SkImagePriv.h" #include "SkPixelRef.h" #include "SkSurface.h" @@ -301,25 +302,23 @@ sk_sp<SkImage> SkImage::MakeFromRaster(const SkPixmap& pmap, RasterReleaseProc p return sk_make_sp<SkImage_Raster>(pmap.info(), std::move(data), pmap.rowBytes(), pmap.ctable()); } -sk_sp<SkImage> SkMakeImageFromRasterBitmap(const SkBitmap& bm, SkCopyPixelsMode cpm) { - bool hasColorTable = false; - if (kIndex_8_SkColorType == bm.colorType()) { - hasColorTable = bm.getColorTable() != nullptr; +sk_sp<SkImage> SkMakeImageFromRasterBitmapPriv(const SkBitmap& bm, SkCopyPixelsMode cpm) { + if (kAlways_SkCopyPixelsMode == cpm || (!bm.isImmutable() && kNever_SkCopyPixelsMode != cpm)) { + SkPixmap pmap; + SkAssertResult(bm.peekPixels(&pmap)); + return SkImage::MakeRasterCopy(pmap); } - if (!SkImage_Raster::ValidArgs(bm.info(), bm.rowBytes(), hasColorTable, nullptr)) { + return sk_make_sp<SkImage_Raster>(bm, kNever_SkCopyPixelsMode == cpm); +} + +sk_sp<SkImage> SkMakeImageFromRasterBitmap(const SkBitmap& bm, SkCopyPixelsMode cpm) { + if (!SkImageInfoIsValidAllowNumericalCS(bm.info()) || !bm.getPixels() || + bm.rowBytes() < bm.info().minRowBytes()) { return nullptr; } - if (kAlways_SkCopyPixelsMode == cpm || (!bm.isImmutable() && kNever_SkCopyPixelsMode != cpm)) { - SkPixmap pmap; - if (bm.getPixels() && bm.peekPixels(&pmap)) { - return SkImage::MakeRasterCopy(pmap); - } - } else { - return sk_make_sp<SkImage_Raster>(bm, kNever_SkCopyPixelsMode == cpm); - } - return sk_sp<SkImage>(); + return SkMakeImageFromRasterBitmapPriv(bm, cpm); } const SkPixelRef* SkBitmapImageGetPixelRef(const SkImage* image) { |