aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/image/SkImage_Raster.cpp
diff options
context:
space:
mode:
authorGravatar Matt Sarett <msarett@google.com>2017-06-08 09:08:34 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-06-08 14:05:39 +0000
commitd21fd4b3369bf94e2e95e15c9578e07e499189d8 (patch)
treefaa70738f36790e7f8986afef9f796ffcd4bbdd3 /src/image/SkImage_Raster.cpp
parent7fbeb5acdd925f9d04ccb1316fbcd3490b3f07ec (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.cpp27
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) {