aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/image/SkImage_Raster.cpp
diff options
context:
space:
mode:
authorGravatar halcanary <halcanary@google.com>2014-08-12 08:04:58 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-08-12 08:04:58 -0700
commit186f7b04956a1742f185a4ca69b44b52bc50e7fc (patch)
treeebbde0eb4c32e2aa13e60ef3afdda2c73e10f457 /src/image/SkImage_Raster.cpp
parent5e27e0eb1d1d4c7674e221d3ba3314500ea0b97a (diff)
SkImage::NewFromGenerator(SkImageGenerator*), and a unit test.
R=reed@google.com Author: halcanary@google.com Review URL: https://codereview.chromium.org/465823003
Diffstat (limited to 'src/image/SkImage_Raster.cpp')
-rw-r--r--src/image/SkImage_Raster.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp
index e4768af0ac..a1cd602a07 100644
--- a/src/image/SkImage_Raster.cpp
+++ b/src/image/SkImage_Raster.cpp
@@ -10,6 +10,7 @@
#include "SkBitmap.h"
#include "SkCanvas.h"
#include "SkData.h"
+#include "SkDecodingImageGenerator.h"
#include "SkMallocPixelRef.h"
class SkImage_Raster : public SkImage_Base {
@@ -69,6 +70,10 @@ public:
SkShader::TileMode,
const SkMatrix* localMatrix) const SK_OVERRIDE;
+ SkImage_Raster(const SkBitmap& bm)
+ : INHERITED(bm.width(), bm.height())
+ , fBitmap(bm) {}
+
private:
SkImage_Raster() : INHERITED(0, 0) {}
@@ -198,6 +203,14 @@ SkImage* SkImage::NewRasterData(const SkImageInfo& info, SkData* data, size_t ro
return SkNEW_ARGS(SkImage_Raster, (info, data, rowBytes));
}
+SkImage* SkImage::NewFromGenerator(SkImageGenerator* generator) {
+ SkBitmap bitmap;
+ if (!SkInstallDiscardablePixelRef(generator, &bitmap)) {
+ return NULL;
+ }
+ return SkNEW_ARGS(SkImage_Raster, (bitmap));
+}
+
SkImage* SkNewImageFromPixelRef(const SkImageInfo& info, SkPixelRef* pr,
size_t rowBytes) {
return SkNEW_ARGS(SkImage_Raster, (info, pr, rowBytes));