CreateJavaOutputStreamAdaptor.h revision ca32021b43f326af7d3f4ae041f8db297f98a518
1#ifndef CreateJavaOutputStream_DEFINED 2#define CreateJavaOutputStream_DEFINED 3 4//#include <android_runtime/AndroidRuntime.h> 5#include "jni.h" 6 7namespace android { 8 class AssetStreamAdaptor; 9} 10 11class SkMemoryStream; 12class SkStream; 13class SkStreamRewindable; 14class SkWStream; 15 16/** 17 * Return an adaptor from a Java InputStream to an SkStream. 18 * @param env JNIEnv object. 19 * @param stream Pointer to Java InputStream. 20 * @param storage Java byte array for retrieving data from the 21 * Java InputStream. 22 * @return SkStream Simple subclass of SkStream which supports its 23 * basic methods like reading. Only valid until the calling 24 * function returns, since the Java InputStream is not managed 25 * by the SkStream. 26 */ 27SkStream* WrapJavaInputStream(JNIEnv* env, jobject stream, 28 jbyteArray storage); 29 30/** 31 * Copy a Java InputStream. 32 * @param env JNIEnv object. 33 * @param stream Pointer to Java InputStream. 34 * @param storage Java byte array for retrieving data from the 35 * Java InputStream. 36 * @return SkMemoryStream The data in stream will be copied to a new 37 * SkMemoryStream. 38 * FIXME: Could return a more generic return type if ViewStateSerializer 39 * did not require an SkMemoryStream. 40 */ 41SkMemoryStream* CopyJavaInputStream(JNIEnv* env, jobject stream, 42 jbyteArray storage); 43 44/** 45 * Get a rewindable stream from a Java InputStream. 46 * @param env JNIEnv object. 47 * @param stream Pointer to Java InputStream. 48 * @param storage Java byte array for retrieving data from the 49 * Java InputStream. 50 * @return SkStreamRewindable Either a wrapper around the Java 51 * InputStream, if possible, or a copy which is rewindable. 52 * Since it may be a wrapper, must not be used after the 53 * caller returns, like the result of WrapJavaInputStream. 54 */ 55SkStreamRewindable* GetRewindableStream(JNIEnv* env, jobject stream, 56 jbyteArray storage); 57 58/** 59 * If the Java InputStream is an AssetInputStream, return an adaptor. 60 * This should not be used after the calling function returns, since 61 * the caller may close the asset. Returns NULL if the stream is 62 * not an AssetInputStream. 63 * @param env JNIEnv object. 64 * @param stream Pointer to Java InputStream. 65 * @return AssetStreamAdaptor representing the InputStream, or NULL. 66 * Must not be held onto. 67 */ 68android::AssetStreamAdaptor* CheckForAssetStream(JNIEnv* env, jobject stream); 69 70SkWStream* CreateJavaOutputStreamAdaptor(JNIEnv* env, jobject stream, 71 jbyteArray storage); 72 73#endif 74