| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #ifndef SkDecodingImageGenerator_DEFINED | 8 #ifndef SkDecodingImageGenerator_DEFINED |
| 9 #define SkDecodingImageGenerator_DEFINED | 9 #define SkDecodingImageGenerator_DEFINED |
| 10 | 10 |
| 11 #include "SkDiscardableMemory.h" | 11 #include "SkDiscardableMemory.h" |
| 12 #include "SkImageGenerator.h" | 12 #include "SkImageGenerator.h" |
| 13 #include "SkImageInfo.h" |
| 13 | 14 |
| 14 class SkBitmap; | 15 class SkBitmap; |
| 16 class SkStreamRewindable; |
| 15 | 17 |
| 16 /** | 18 /** |
| 17 * Calls into SkImageDecoder::DecodeMemoryToTarget to implement a | 19 * Calls into SkImageDecoder::DecodeMemoryToTarget to implement a |
| 18 * SkImageGenerator | 20 * SkImageGenerator |
| 19 */ | 21 */ |
| 20 class SkDecodingImageGenerator : public SkImageGenerator { | 22 class SkDecodingImageGenerator : public SkImageGenerator { |
| 21 public: | 23 public: |
| 22 /* | 24 /* |
| 23 * The constructor will take a reference to the SkData. The | 25 * The constructor will take a reference to the SkData. The |
| 24 * destructor will unref() it. | 26 * destructor will unref() it. |
| 25 */ | 27 */ |
| 26 SkDecodingImageGenerator(SkData* data); | 28 explicit SkDecodingImageGenerator(SkData* data); |
| 29 |
| 30 /* |
| 31 * This constructor will duplicate this stream. |
| 32 */ |
| 33 explicit SkDecodingImageGenerator(SkStreamRewindable* stream); |
| 34 |
| 27 virtual ~SkDecodingImageGenerator(); | 35 virtual ~SkDecodingImageGenerator(); |
| 28 | 36 |
| 29 virtual SkData* refEncodedData() SK_OVERRIDE; | 37 virtual SkData* refEncodedData() SK_OVERRIDE; |
| 30 | 38 |
| 31 virtual bool getInfo(SkImageInfo* info) SK_OVERRIDE; | 39 virtual bool getInfo(SkImageInfo* info) SK_OVERRIDE; |
| 32 | 40 |
| 33 virtual bool getPixels(const SkImageInfo& info, | 41 virtual bool getPixels(const SkImageInfo& info, |
| 34 void* pixels, | 42 void* pixels, |
| 35 size_t rowBytes) SK_OVERRIDE; | 43 size_t rowBytes) SK_OVERRIDE; |
| 36 | 44 |
| 37 /** | 45 /** |
| 38 * Install the SkData into the destination bitmap, using a new | 46 * Install the SkData into the destination bitmap, using a new |
| 39 * SkDiscardablePixelRef and a new SkDecodingImageGenerator. | 47 * SkDiscardablePixelRef and a new SkDecodingImageGenerator. |
| 40 * | 48 * |
| 41 * @param data Contains the encoded image data that will be used | 49 * @param data Contains the encoded image data that will be used |
| 42 * by the SkDecodingImageGenerator. Will be ref()ed. | 50 * by the SkDecodingImageGenerator. Will be ref()ed. |
| 43 * | 51 * |
| 44 * @param destination Upon success, this bitmap will be | 52 * @param destination Upon success, this bitmap will be |
| 45 * configured and have a pixelref installed. | 53 * configured and have a pixelref installed. |
| 46 * | 54 * |
| 47 * @param factory If not NULL, this object will be used as a | 55 * @param factory If not NULL, this object will be used as a |
| 48 * source of discardable memory when decoding. If NULL, then | 56 * source of discardable memory when decoding. If NULL, then |
| 49 * SkDiscardableMemory::Create() will be called. | 57 * SkDiscardableMemory::Create() will be called. |
| 50 * | 58 * |
| 51 * @return true iff successful. | 59 * @return true iff successful. |
| 52 */ | 60 */ |
| 53 static bool Install(SkData* data, SkBitmap* destination, | 61 static bool Install(SkData* data, SkBitmap* destination, |
| 54 SkDiscardableMemory::Factory* factory = NULL); | 62 SkDiscardableMemory::Factory* factory = NULL); |
| 63 static bool Install(SkStreamRewindable* stream, SkBitmap* destination, |
| 64 SkDiscardableMemory::Factory* factory = NULL); |
| 55 | 65 |
| 56 private: | 66 private: |
| 57 SkData* fData; | 67 SkData* fData; |
| 68 SkStreamRewindable* fStream; |
| 69 SkImageInfo fInfo; |
| 70 bool fHasInfo; |
| 71 bool fDoCopyTo; |
| 58 }; | 72 }; |
| 59 #endif // SkDecodingImageGenerator_DEFINED | 73 #endif // SkDecodingImageGenerator_DEFINED |
| OLD | NEW |