aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/image
diff options
context:
space:
mode:
Diffstat (limited to 'src/image')
-rw-r--r--src/image/SkImagePriv.cpp36
-rw-r--r--src/image/SkImagePriv.h4
-rw-r--r--src/image/SkImage_Raster.cpp41
3 files changed, 37 insertions, 44 deletions
diff --git a/src/image/SkImagePriv.cpp b/src/image/SkImagePriv.cpp
deleted file mode 100644
index ad7b154e76..0000000000
--- a/src/image/SkImagePriv.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2012 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "SkImagePriv.h"
-#include "SkImage_Base.h"
-#include "SkCanvas.h"
-#include "SkPicture.h"
-
-SkImage* SkNewImageFromBitmap(const SkBitmap& bm, bool canSharePixelRef,
- const SkSurfaceProps* props) {
- const SkImageInfo info = bm.info();
- if (kUnknown_SkColorType == info.colorType()) {
- return NULL;
- }
-
- SkImage* image = NULL;
- if (canSharePixelRef || bm.isImmutable()) {
- image = SkNewImageFromPixelRef(info, bm.pixelRef(), bm.rowBytes(), props);
- } else {
- bm.lockPixels();
- if (bm.getPixels()) {
- image = SkImage::NewRasterCopy(info, bm.getPixels(), bm.rowBytes());
- }
- bm.unlockPixels();
-
- // we don't expose props to NewRasterCopy (need a private vers) so post-init it here
- if (image && props) {
- as_IB(image)->initWithProps(*props);
- }
- }
- return image;
-}
diff --git a/src/image/SkImagePriv.h b/src/image/SkImagePriv.h
index 874476bbaf..1b2ae4f284 100644
--- a/src/image/SkImagePriv.h
+++ b/src/image/SkImagePriv.h
@@ -12,7 +12,9 @@
#include "SkSurface.h"
// Call this if you explicitly want to use/share this pixelRef in the image
-extern SkImage* SkNewImageFromPixelRef(const SkImageInfo&, SkPixelRef*, size_t rowBytes,
+extern SkImage* SkNewImageFromPixelRef(const SkImageInfo&, SkPixelRef*,
+ const SkIPoint& pixelRefOrigin,
+ size_t rowBytes,
const SkSurfaceProps*);
/**
diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp
index e3ecd6875f..1165d14226 100644
--- a/src/image/SkImage_Raster.cpp
+++ b/src/image/SkImage_Raster.cpp
@@ -6,11 +6,12 @@
*/
#include "SkImage_Base.h"
-#include "SkImagePriv.h"
#include "SkBitmap.h"
#include "SkCanvas.h"
#include "SkData.h"
#include "SkImageGenerator.h"
+#include "SkImagePriv.h"
+#include "SkPixelRef.h"
#include "SkSurface.h"
class SkImage_Raster : public SkImage_Base {
@@ -60,7 +61,8 @@ public:
bool getROPixels(SkBitmap*) const SK_OVERRIDE;
// exposed for SkSurface_Raster via SkNewImageFromPixelRef
- SkImage_Raster(const SkImageInfo&, SkPixelRef*, size_t rowBytes, const SkSurfaceProps*);
+ SkImage_Raster(const SkImageInfo&, SkPixelRef*, const SkIPoint& pixelRefOrigin, size_t rowBytes,
+ const SkSurfaceProps*);
SkPixelRef* getPixelRef() const { return fBitmap.pixelRef(); }
@@ -102,12 +104,12 @@ SkImage_Raster::SkImage_Raster(const Info& info, SkData* data, size_t rowBytes,
fBitmap.lockPixels();
}
-SkImage_Raster::SkImage_Raster(const Info& info, SkPixelRef* pr, size_t rowBytes,
- const SkSurfaceProps* props)
+SkImage_Raster::SkImage_Raster(const Info& info, SkPixelRef* pr, const SkIPoint& pixelRefOrigin,
+ size_t rowBytes, const SkSurfaceProps* props)
: INHERITED(info.width(), info.height(), props)
{
fBitmap.setInfo(info, rowBytes);
- fBitmap.setPixelRef(pr);
+ fBitmap.setPixelRef(pr, pixelRefOrigin);
fBitmap.lockPixels();
}
@@ -193,12 +195,37 @@ SkImage* SkImage::NewFromGenerator(SkImageGenerator* generator) {
return SkNEW_ARGS(SkImage_Raster, (bitmap, NULL));
}
-SkImage* SkNewImageFromPixelRef(const SkImageInfo& info, SkPixelRef* pr, size_t rowBytes,
+SkImage* SkNewImageFromPixelRef(const SkImageInfo& info, SkPixelRef* pr,
+ const SkIPoint& pixelRefOrigin, size_t rowBytes,
const SkSurfaceProps* props) {
if (!SkImage_Raster::ValidArgs(info, rowBytes)) {
return NULL;
}
- return SkNEW_ARGS(SkImage_Raster, (info, pr, rowBytes, props));
+ return SkNEW_ARGS(SkImage_Raster, (info, pr, pixelRefOrigin, rowBytes, props));
+}
+
+SkImage* SkNewImageFromBitmap(const SkBitmap& bm, bool canSharePixelRef,
+ const SkSurfaceProps* props) {
+ if (!SkImage_Raster::ValidArgs(bm.info(), bm.rowBytes())) {
+ return NULL;
+ }
+
+ SkImage* image = NULL;
+ if (canSharePixelRef || bm.isImmutable()) {
+ image = SkNEW_ARGS(SkImage_Raster, (bm, props));
+ } else {
+ bm.lockPixels();
+ if (bm.getPixels()) {
+ image = SkImage::NewRasterCopy(bm.info(), bm.getPixels(), bm.rowBytes());
+ }
+ bm.unlockPixels();
+
+ // we don't expose props to NewRasterCopy (need a private vers) so post-init it here
+ if (image && props) {
+ as_IB(image)->initWithProps(*props);
+ }
+ }
+ return image;
}
const SkPixelRef* SkBitmapImageGetPixelRef(const SkImage* image) {