1 /* 2 * Copyright 2013 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkStreamPriv_DEFINED 9 #define SkStreamPriv_DEFINED 10 11 class SkAutoMalloc; 12 class SkStream; 13 class SkStreamRewindable; 14 class SkData; 15 16 /** 17 * Copy the provided stream to memory allocated by storage. 18 * Used by SkImageDecoder_libbmp and SkImageDecoder_libico. 19 * @param storage Allocator to hold the memory. Will be reset to be large 20 * enough to hold the entire stream. Upon successful return, 21 * storage->get() will point to data holding the SkStream's entire 22 * contents. 23 * @param stream SkStream to be copied into storage. 24 * @return size_t Total number of bytes in the SkStream, which is also the 25 * number of bytes pointed to by storage->get(). Returns 0 on failure. 26 */ 27 size_t SkCopyStreamToStorage(SkAutoMalloc* storage, SkStream* stream); 28 29 /** 30 * Copy the provided stream to an SkData variable. 31 * @param stream SkStream to be copied into data. 32 * @return SkData* The resulting SkData after the copy. This data 33 * will have a ref count of one upon return and belongs to the 34 * caller. Returns NULL on failure. 35 */ 36 SkData *SkCopyStreamToData(SkStream* stream); 37 38 /** 39 * Attempt to convert this stream to a StreamRewindable in the 40 * cheapest possible manner (calling duplicate() if possible, and 41 * otherwise allocating memory for a copy). The position of the 42 * input stream is left in an indeterminate state. 43 */ 44 SkStreamRewindable* SkStreamRewindableFromSkStream(SkStream* stream); 45 46 #endif // SkStreamPriv_DEFINED 47