| Index: src/images/SkDecodingImageGenerator.h
|
| diff --git a/src/images/SkDecodingImageGenerator.h b/src/images/SkDecodingImageGenerator.h
|
| index 49f1295bf3538cdd69451c8f86cb383eea44596a..dba234bcf19c400d5a005c5c5ac4efe057733267 100644
|
| --- a/src/images/SkDecodingImageGenerator.h
|
| +++ b/src/images/SkDecodingImageGenerator.h
|
| @@ -10,8 +10,10 @@
|
|
|
| #include "SkDiscardableMemory.h"
|
| #include "SkImageGenerator.h"
|
| +#include "SkImageInfo.h"
|
|
|
| class SkBitmap;
|
| +class SkStreamRewindable;
|
|
|
| /**
|
| * Calls into SkImageDecoder::DecodeMemoryToTarget to implement a
|
| @@ -23,7 +25,32 @@ public:
|
| * The constructor will take a reference to the SkData. The
|
| * destructor will unref() it.
|
| */
|
| - SkDecodingImageGenerator(SkData* data);
|
| + explicit SkDecodingImageGenerator(SkData* data);
|
| +
|
| + /*
|
| + * The SkData version of this constructor is preferred. If the
|
| + * stream has an underlying SkData (such as a SkMemoryStream)
|
| + * pass that in.
|
| + *
|
| + * This object will unref the stream when done. Since streams
|
| + * have internal state (position), the caller should not pass a
|
| + * shared stream in. Pass either a new duplicated stream in or
|
| + * transfer ownership of the stream. In the latter case, be sure
|
| + * that there are no other consumers of the stream who will
|
| + * modify the stream's position. This constructor asserts
|
| + * stream->unique().
|
| + *
|
| + * For example:
|
| + * SkStreamRewindable* stream;
|
| + * ...
|
| + * SkImageGenerator* gen
|
| + * = SkNEW_ARGS(SkDecodingImageGenerator,
|
| + * (stream->duplicate()));
|
| + * ...
|
| + * SkDELETE(gen);
|
| + */
|
| + explicit SkDecodingImageGenerator(SkStreamRewindable* stream);
|
| +
|
| virtual ~SkDecodingImageGenerator();
|
|
|
| virtual SkData* refEncodedData() SK_OVERRIDE;
|
| @@ -52,8 +79,42 @@ public:
|
| */
|
| static bool Install(SkData* data, SkBitmap* destination,
|
| SkDiscardableMemory::Factory* factory = NULL);
|
| + /**
|
| + * Install the stream into the destination bitmap, using a new
|
| + * SkDiscardablePixelRef and a new SkDecodingImageGenerator.
|
| + *
|
| + * The SkData version of this function is preferred. If the
|
| + * stream has an underlying SkData (such as a SkMemoryStream)
|
| + * pass that in.
|
| + *
|
| + * @param stream The source of encoded data that will be passed
|
| + * to the decoder. The installed SkDecodingImageGenerator will
|
| + * unref the stream when done. If false is returned, this
|
| + * function will perform the unref. Since streams have internal
|
| + * state (position), the caller should not pass a shared stream
|
| + * in. Pass either a new duplicated stream in or transfer
|
| + * ownership of the stream. In the latter case, be sure that
|
| + * there are no other consumers of the stream who will modify the
|
| + * stream's position. This function will fail if
|
| + * (!stream->unique()).
|
| + *
|
| + * @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.
|
| + */
|
| + static bool Install(SkStreamRewindable* stream, SkBitmap* destination,
|
| + SkDiscardableMemory::Factory* factory = NULL);
|
|
|
| private:
|
| - SkData* fData;
|
| + SkData* fData;
|
| + SkStreamRewindable* fStream;
|
| + SkImageInfo fInfo;
|
| + bool fHasInfo;
|
| + bool fDoCopyTo;
|
| };
|
| #endif // SkDecodingImageGenerator_DEFINED
|
|
|