hide discardable factory from public imagegenerator api
BUG=skia:
R=halcanary@google.com, scroggo@google.com, djsollen@google.com
Author: reed@google.com
Review URL: https://codereview.chromium.org/295243006
git-svn-id: http://skia.googlecode.com/svn/trunk@14889 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gm/factory.cpp b/gm/factory.cpp
index 29cf7ea..bd79c9d 100644
--- a/gm/factory.cpp
+++ b/gm/factory.cpp
@@ -12,7 +12,7 @@
#include "SkDiscardableMemoryPool.h"
#include "SkDiscardablePixelRef.h"
#include "SkImageDecoder.h"
-#include "SkImageGenerator.h"
+#include "SkImageGeneratorPriv.h"
#include "SkOSFile.h"
#include "SkStream.h"
diff --git a/include/core/SkImageGenerator.h b/include/core/SkImageGenerator.h
index 220973a..f399ab5 100644
--- a/include/core/SkImageGenerator.h
+++ b/include/core/SkImageGenerator.h
@@ -8,7 +8,6 @@
#ifndef SkImageGenerator_DEFINED
#define SkImageGenerator_DEFINED
-#include "SkDiscardableMemory.h"
#include "SkImageInfo.h"
class SkBitmap;
@@ -31,15 +30,9 @@
* @param destination Upon success, this bitmap will be
* configured and have a pixelref installed.
*
- * @param factory If not NULL, this object will be used as a
- * source of discardable memory when decoding. If NULL, then
- * SkDiscardableMemory::Create() will be called.
- *
* @return true iff successful.
*/
-SK_API bool SkInstallDiscardablePixelRef(SkImageGenerator* generator,
- SkBitmap* destination,
- SkDiscardableMemory::Factory* factory = NULL);
+SK_API bool SkInstallDiscardablePixelRef(SkImageGenerator*, SkBitmap* destination);
/**
diff --git a/samplecode/SampleEncode.cpp b/samplecode/SampleEncode.cpp
index 080c05f..e65b2d3 100644
--- a/samplecode/SampleEncode.cpp
+++ b/samplecode/SampleEncode.cpp
@@ -196,7 +196,7 @@
if (!SkInstallDiscardablePixelRef(
SkDecodingImageGenerator::Create(encoded,
SkDecodingImageGenerator::Options()),
- &bm, NULL)) {
+ &bm)) {
SkDebugf("[%s:%d] failed to decode %s%s\n",
__FILE__, __LINE__,gConfigLabels[i], gExt[j]);
}
diff --git a/samplecode/SamplePicture.cpp b/samplecode/SamplePicture.cpp
index e696903..f242c21 100644
--- a/samplecode/SamplePicture.cpp
+++ b/samplecode/SamplePicture.cpp
@@ -41,7 +41,7 @@
SkAutoDataUnref data(SkData::NewFromFileName(path.c_str()));
if (data.get() != NULL) {
SkInstallDiscardablePixelRef(SkDecodingImageGenerator::Create(
- data, SkDecodingImageGenerator::Options()), &bm, NULL);
+ data, SkDecodingImageGenerator::Options()), &bm);
}
return bm;
}
diff --git a/src/core/SkImageGeneratorPriv.h b/src/core/SkImageGeneratorPriv.h
new file mode 100644
index 0000000..e03294d
--- /dev/null
+++ b/src/core/SkImageGeneratorPriv.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkImageGeneratorPriv_DEFINED
+#define SkImageGeneratorPriv_DEFINED
+
+#include "SkImageGenerator.h"
+#include "SkDiscardableMemory.h"
+
+/**
+ * Takes ownership of SkImageGenerator. If this method fails for
+ * whatever reason, it will return false and immediatetely delete
+ * the generator. If it succeeds, it will modify destination
+ * bitmap.
+ *
+ * If generator is NULL, will safely return false.
+ *
+ * If this fails or when the SkDiscardablePixelRef that is
+ * installed into destination is destroyed, it will call
+ * SkDELETE() on the generator. Therefore, generator should be
+ * allocated with SkNEW() or SkNEW_ARGS().
+ *
+ * @param destination Upon success, this bitmap will be
+ * configured and have a pixelref installed.
+ *
+ * @param factory If not NULL, this object will be used as a
+ * source of discardable memory when decoding. If NULL, then
+ * SkDiscardableMemory::Create() will be called.
+ *
+ * @return true iff successful.
+ */
+bool SkInstallDiscardablePixelRef(SkImageGenerator*, SkBitmap* destination,
+ SkDiscardableMemory::Factory* factory);
+
+#endif
diff --git a/src/lazy/SkDiscardablePixelRef.cpp b/src/lazy/SkDiscardablePixelRef.cpp
index 56b94b7..267e097 100644
--- a/src/lazy/SkDiscardablePixelRef.cpp
+++ b/src/lazy/SkDiscardablePixelRef.cpp
@@ -77,8 +77,7 @@
fDiscardableMemory->unlock();
}
-bool SkInstallDiscardablePixelRef(SkImageGenerator* generator,
- SkBitmap* dst,
+bool SkInstallDiscardablePixelRef(SkImageGenerator* generator, SkBitmap* dst,
SkDiscardableMemory::Factory* factory) {
SkImageInfo info;
SkAutoTDelete<SkImageGenerator> autoGenerator(generator);
@@ -97,3 +96,9 @@
dst->setPixelRef(ref);
return true;
}
+
+// This is the public API
+bool SkInstallDiscardablePixelRef(SkImageGenerator* generator, SkBitmap* dst) {
+ return SkInstallDiscardablePixelRef(generator, dst, NULL);
+}
+
diff --git a/src/lazy/SkDiscardablePixelRef.h b/src/lazy/SkDiscardablePixelRef.h
index cbc2a89..e5e1c9f 100644
--- a/src/lazy/SkDiscardablePixelRef.h
+++ b/src/lazy/SkDiscardablePixelRef.h
@@ -52,8 +52,7 @@
size_t rowBytes,
SkDiscardableMemory::Factory* factory);
- friend bool SkInstallDiscardablePixelRef(SkImageGenerator*,
- SkBitmap*,
+ friend bool SkInstallDiscardablePixelRef(SkImageGenerator*, SkBitmap*,
SkDiscardableMemory::Factory*);
typedef SkPixelRef INHERITED;
diff --git a/tests/CachedDecodingPixelRefTest.cpp b/tests/CachedDecodingPixelRefTest.cpp
index 705f066..10e33ba 100644
--- a/tests/CachedDecodingPixelRefTest.cpp
+++ b/tests/CachedDecodingPixelRefTest.cpp
@@ -12,6 +12,7 @@
#include "SkDecodingImageGenerator.h"
#include "SkDiscardableMemoryPool.h"
#include "SkImageDecoder.h"
+#include "SkImageGeneratorPriv.h"
#include "SkScaledImageCache.h"
#include "SkStream.h"
#include "SkUtils.h"
@@ -152,7 +153,7 @@
// Use system-default discardable memory.
return SkInstallDiscardablePixelRef(
SkDecodingImageGenerator::Create(
- encoded, SkDecodingImageGenerator::Options()), dst, NULL);
+ encoded, SkDecodingImageGenerator::Options()), dst);
}
////////////////////////////////////////////////////////////////////////////////
@@ -276,7 +277,7 @@
SkBitmap bm;
SkImageGenerator* ig = new TestImageGenerator(
TestImageGenerator::kSucceedGetPixels_TestType, reporter);
- SkInstallDiscardablePixelRef(ig, &bm, NULL);
+ SkInstallDiscardablePixelRef(ig, &bm);
bm.pixelRef()->lockPixels();
}
diff --git a/tests/DrawBitmapRectTest.cpp b/tests/DrawBitmapRectTest.cpp
index e6cc781..f294ae7 100644
--- a/tests/DrawBitmapRectTest.cpp
+++ b/tests/DrawBitmapRectTest.cpp
@@ -9,7 +9,7 @@
#include "SkCanvas.h"
#include "SkData.h"
#include "SkDiscardableMemoryPool.h"
-#include "SkImageGenerator.h"
+#include "SkImageGeneratorPriv.h"
#include "SkMatrixUtils.h"
#include "SkPaint.h"
#include "SkRandom.h"
diff --git a/tests/ImageDecodingTest.cpp b/tests/ImageDecodingTest.cpp
index 7f9ff30..21c7747 100644
--- a/tests/ImageDecodingTest.cpp
+++ b/tests/ImageDecodingTest.cpp
@@ -16,7 +16,7 @@
#include "SkGradientShader.h"
#include "SkImageDecoder.h"
#include "SkImageEncoder.h"
-#include "SkImageGenerator.h"
+#include "SkImageGeneratorPriv.h"
#include "SkImagePriv.h"
#include "SkOSFile.h"
#include "SkPoint.h"
@@ -455,7 +455,7 @@
bool success = SkInstallDiscardablePixelRef(
SkDecodingImageGenerator::Create(encoded,
- SkDecodingImageGenerator::Options()), &bm, NULL);
+ SkDecodingImageGenerator::Options()), &bm);
REPORTER_ASSERT(reporter, success);
if (!success) {
@@ -584,14 +584,13 @@
return;
}
success = SkInstallDiscardablePixelRef(
- SkDecodingImageGenerator::Create(encodedData, opts), &bm, NULL);
+ SkDecodingImageGenerator::Create(encodedData, opts), &bm);
} else {
if (NULL == encodedStream) {
return;
}
success = SkInstallDiscardablePixelRef(
- SkDecodingImageGenerator::Create(encodedStream->duplicate(), opts),
- &bm, NULL);
+ SkDecodingImageGenerator::Create(encodedStream->duplicate(), opts), &bm);
}
if (!success) {
if (opts.fUseRequestedColorType
diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp
index 8467d6a..ac44a5c 100644
--- a/tests/PictureTest.cpp
+++ b/tests/PictureTest.cpp
@@ -1113,7 +1113,7 @@
SkBitmap bm;
bool installSuccess = SkInstallDiscardablePixelRef(
- SkDecodingImageGenerator::Create(data, SkDecodingImageGenerator::Options()), &bm, NULL);
+ SkDecodingImageGenerator::Create(data, SkDecodingImageGenerator::Options()), &bm);
REPORTER_ASSERT(reporter, installSuccess);
// Write both bitmaps to pictures, and ensure that the resulting data streams are the same.
diff --git a/tools/LazyDecodeBitmap.cpp b/tools/LazyDecodeBitmap.cpp
index 83fca5f..6c4160c 100644
--- a/tools/LazyDecodeBitmap.cpp
+++ b/tools/LazyDecodeBitmap.cpp
@@ -10,7 +10,7 @@
#include "SkData.h"
#include "SkDecodingImageGenerator.h"
#include "SkDiscardableMemoryPool.h"
-#include "SkImageGenerator.h"
+#include "SkImageGeneratorPriv.h"
#include "SkForceLinking.h"
#include "SkCommandLineFlags.h"