Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(585)

Unified Diff: src/images/SkDecodingImageGenerator.h

Issue 93703004: Change SkDecodingImageGenerator API (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/images/SkDecodingImageGenerator.h
diff --git a/src/images/SkDecodingImageGenerator.h b/src/images/SkDecodingImageGenerator.h
index dba234bcf19c400d5a005c5c5ac4efe057733267..654f532aa0e9db60c41fa9b54f81235837319778 100644
--- a/src/images/SkDecodingImageGenerator.h
+++ b/src/images/SkDecodingImageGenerator.h
@@ -8,11 +8,11 @@
#ifndef SkDecodingImageGenerator_DEFINED
#define SkDecodingImageGenerator_DEFINED
+#include "SkBitmap.h"
#include "SkDiscardableMemory.h"
#include "SkImageGenerator.h"
#include "SkImageInfo.h"
-class SkBitmap;
class SkStreamRewindable;
/**
@@ -21,11 +21,14 @@ class SkStreamRewindable;
*/
class SkDecodingImageGenerator : public SkImageGenerator {
public:
+ struct Options;
scroggo 2013/12/12 22:33:46 Perhaps a note here to look down below?
hal.canary 2013/12/13 15:48:48 Done. Moved Options to the top.
/*
* The constructor will take a reference to the SkData. The
* destructor will unref() it.
+ *
+ * @param Options if NULL, use defaults;
*/
- explicit SkDecodingImageGenerator(SkData* data);
+ SkDecodingImageGenerator(SkData* data, const Options* opts);
scroggo 2013/12/12 22:33:46 I like your thinking here, to allow opts to be NUL
hal.canary 2013/12/13 15:48:48 Done.
/*
* The SkData version of this constructor is preferred. If the
@@ -48,8 +51,11 @@ public:
* (stream->duplicate()));
* ...
* SkDELETE(gen);
+ *
+ * @param Options if NULL, use defaults;
*/
- explicit SkDecodingImageGenerator(SkStreamRewindable* stream);
+ SkDecodingImageGenerator(SkStreamRewindable* stream,
scroggo 2013/12/12 22:33:46 Do these get called directly? Or do callers call I
hal.canary 2013/12/13 15:48:48 I'm in the process of eliminating that use case.
+ const Options* opts);
virtual ~SkDecodingImageGenerator();
@@ -78,6 +84,7 @@ public:
* @return true iff successful.
*/
static bool Install(SkData* data, SkBitmap* destination,
+ const Options* opts,
SkDiscardableMemory::Factory* factory = NULL);
/**
* Install the stream into the destination bitmap, using a new
@@ -108,13 +115,56 @@ public:
* @return true iff successful.
*/
static bool Install(SkStreamRewindable* stream, SkBitmap* destination,
+ const Options* opts,
SkDiscardableMemory::Factory* factory = NULL);
+ /**
+ * These options will be passed on to the image decoder. The
+ * defaults are sensible.
+ *
+ * @param fSampleSize If set to > 1, tells the decoder to return a
+ * smaller than original bitmap, sampling 1 pixel for
+ * every size pixels. e.g. if sample size is set to 3,
+ * then the returned bitmap will be 1/3 as wide and high,
+ * and will contain 1/9 as many pixels as the original.
+ * Note: this is a hint, and the codec may choose to
+ * ignore this, or only approximate the sample size.
+ *
+ * @param fDitherImage Set to true if the the decoder should try
+ * to dither the resulting image. The default is true.
+ *
+ * @param fPreferQualityOverSpeed Should the decoder should try to
scroggo 2013/12/12 22:33:46 Whether*
hal.canary 2013/12/13 15:48:48 removed this param, as per your suggestion.
+ * decode the resulting image to a higher quality even at
+ * the expense of the decoding speed.
+ *
+ * @param fRequestedConfig If SkBitmap::kNo_Config, then use
+ * whichever config the decoder wants. Else try to use
+ * this one. If this config won't work, getInfo() will
scroggo 2013/12/12 22:33:46 This comment seems vague. getInfo() on which class
hal.canary 2013/12/13 15:48:48 Done.
+ * return false.
+ */
+ struct Options {
+ int fSampleSize;
+ bool fDitherImage;
+ bool fPreferQualityOverSpeed;
+ SkBitmap::Config fRequestedConfig;
+ Options()
+ : fSampleSize(1)
+ , fDitherImage(true)
+ , fPreferQualityOverSpeed(false)
+ , fRequestedConfig(SkBitmap::kNo_Config) { }
+ Options(int sampleSize, bool dither, bool quality,
+ SkBitmap::Config config)
+ : fSampleSize(sampleSize)
+ , fDitherImage(dither)
+ , fPreferQualityOverSpeed(quality)
+ , fRequestedConfig(config) { }
+ };
private:
SkData* fData;
SkStreamRewindable* fStream;
SkImageInfo fInfo;
bool fHasInfo;
bool fDoCopyTo;
+ Options fOpts;
scroggo 2013/12/12 22:33:46 Can be const?
hal.canary 2013/12/13 15:48:48 Done.
};
#endif // SkDecodingImageGenerator_DEFINED

Powered by Google App Engine
This is Rietveld 408576698