| Index: include/codec/SkCodec.h
|
| diff --git a/include/codec/SkCodec.h b/include/codec/SkCodec.h
|
| index 54bd6ff5d617ebba99b1e8717a7c01e9bba804cf..cc635e012ca82bd2c11839ab10fe51ab5f9625a7 100644
|
| --- a/include/codec/SkCodec.h
|
| +++ b/include/codec/SkCodec.h
|
| @@ -172,15 +172,11 @@ public:
|
| Result getPixels(const SkImageInfo& info, void* pixels, size_t rowBytes);
|
|
|
| /**
|
| - * Return an object which can be used to decode individual scanlines.
|
| + * Create a new object which can be used to decode individual scanlines.
|
| *
|
| - * This object is owned by the SkCodec, which will handle its lifetime. The
|
| - * returned object is only valid until the SkCodec is deleted or the next
|
| - * call to getScanlineDecoder, whichever comes first.
|
| - *
|
| - * Calling a second time will rewind and replace the existing one with a
|
| - * new one. If the stream cannot be rewound, this will delete the existing
|
| - * one and return NULL.
|
| + * The returned object has its own state, independent of the SkCodec, or any
|
| + * previously spawned SkScanlineDecoders. At creation, it will be ready to
|
| + * return the first scanline.
|
| *
|
| * @param dstInfo Info of the destination. If the dimensions do not match
|
| * those of getInfo, this implies a scale.
|
| @@ -195,11 +191,7 @@ public:
|
| * decoding the palette.
|
| * @return New SkScanlineDecoder, or NULL on failure.
|
| *
|
| - * NOTE: If any rows were previously decoded, this requires rewinding the
|
| - * SkStream.
|
| - *
|
| - * NOTE: The scanline decoder is owned by the SkCodec and will delete it
|
| - * when the SkCodec is deleted.
|
| + * NOTE: This requires duplicating the SkStream.
|
| */
|
| SkScanlineDecoder* getScanlineDecoder(const SkImageInfo& dstInfo, const Options* options,
|
| SkPMColor ctable[], int* ctableCount);
|
| @@ -239,9 +231,6 @@ protected:
|
| /**
|
| * Override if your codec supports scanline decoding.
|
| *
|
| - * As in onGetPixels(), the implementation must call rewindIfNeeded() and
|
| - * handle as appropriate.
|
| - *
|
| * @param dstInfo Info of the destination. If the dimensions do not match
|
| * those of getInfo, this implies a scale.
|
| * @param options Contains decoding options, including if memory is zero
|
| @@ -253,8 +242,8 @@ protected:
|
| * dstInfo.colorType() is kIndex8, this should be non-NULL. It will
|
| * be modified to the true size of the color table (<= 256) after
|
| * decoding the palette.
|
| - * @return New SkScanlineDecoder on success, NULL otherwise. The SkCodec
|
| - * will take ownership of the returned scanline decoder.
|
| + * @return New SkScanlineDecoder on success, NULL otherwise. The caller is
|
| + * responsible for deleting the returned object.
|
| */
|
| virtual SkScanlineDecoder* onGetScanlineDecoder(const SkImageInfo& dstInfo,
|
| const Options& options,
|
| @@ -293,31 +282,9 @@ protected:
|
| return fStream.get();
|
| }
|
|
|
| - /**
|
| - * If the codec has a scanline decoder, return it (no ownership change occurs)
|
| - * else return NULL.
|
| - * The returned decoder is valid while the codec exists and the client has not
|
| - * created a new scanline decoder.
|
| - */
|
| - SkScanlineDecoder* scanlineDecoder() {
|
| - return fScanlineDecoder;
|
| - }
|
| -
|
| - /**
|
| - * Allow the codec subclass to detach and take ownership of the scanline decoder.
|
| - * This will likely be used when the scanline decoder needs to be destroyed
|
| - * in the destructor of the subclass.
|
| - */
|
| - SkScanlineDecoder* detachScanlineDecoder() {
|
| - SkScanlineDecoder* scanlineDecoder = fScanlineDecoder;
|
| - fScanlineDecoder = NULL;
|
| - return scanlineDecoder;
|
| - }
|
| -
|
| private:
|
| const SkImageInfo fInfo;
|
| SkAutoTDelete<SkStream> fStream;
|
| bool fNeedsRewind;
|
| - SkScanlineDecoder* fScanlineDecoder;
|
| };
|
| #endif // SkCodec_DEFINED
|
|
|