Revert "Revert "Revert "PixelRef now returns (nearly) everything that is currently in SkBitmap. The goal is to refactor bitmap later to remove redundancy, and more interestingly, remove the chance for a disconnect between the actual (pixelref) rowbytes and config, and the one claimed by the bitmap."""
This reverts commit 5f035e90d6dea0139a4f204b634e7b7b3b4976d7.
Reverting because it breaks chrome/blink due to new SkPixelRef constructor arg.
BUG=
Review URL: https://codereview.chromium.org/108993002
git-svn-id: http://skia.googlecode.com/svn/trunk@12551 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp
index 3c53dd3..9ef4bb0 100644
--- a/tests/PictureTest.cpp
+++ b/tests/PictureTest.cpp
@@ -9,7 +9,6 @@
#include "SkCanvas.h"
#include "SkColorPriv.h"
#include "SkData.h"
-#include "SkDecodingImageGenerator.h"
#include "SkError.h"
#include "SkPaint.h"
#include "SkPicture.h"
@@ -336,6 +335,32 @@
}
#endif
+#include "SkData.h"
+#include "SkImageRef_GlobalPool.h"
+// Class to test SkPixelRef::onRefEncodedData, since there are currently no implementations in skia.
+class SkDataImageRef : public SkImageRef_GlobalPool {
+
+public:
+ SkDataImageRef(SkMemoryStream* stream)
+ : SkImageRef_GlobalPool(stream, SkBitmap::kNo_Config) {
+ SkASSERT(stream != NULL);
+ fData = stream->copyToData();
+ this->setImmutable();
+ }
+
+ ~SkDataImageRef() {
+ fData->unref();
+ }
+
+ virtual SkData* onRefEncodedData() SK_OVERRIDE {
+ fData->ref();
+ return fData;
+ }
+
+private:
+ SkData* fData;
+};
+
#include "SkImageEncoder.h"
static SkData* encode_bitmap_to_data(size_t* offset, const SkBitmap& bm) {
@@ -377,10 +402,14 @@
return;
}
SkAutoDataUnref data(wStream.copyToData());
+ SkMemoryStream memStream;
+ memStream.setData(data);
+ // Use the encoded bitmap as the data for an image ref.
SkBitmap bm;
- bool installSuccess = SkDecodingImageGenerator::Install(data, &bm);
- REPORTER_ASSERT(reporter, installSuccess);
+ SkAutoTUnref<SkDataImageRef> imageRef(SkNEW_ARGS(SkDataImageRef, (&memStream)));
+ imageRef->getInfo(&bm);
+ bm.setPixelRef(imageRef);
// Write both bitmaps to pictures, and ensure that the resulting data streams are the same.
// Flattening original will follow the old path of performing an encode, while flattening bm