CreateJavaOutputStreamAdaptor.h revision c7797525084ba0ea441e394aa0a2ba35d6ff3320
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* CreateJavaInputStreamAdaptor(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 SkStreamRewindable The data in stream will be copied 37 * to a new SkStreamRewindable. 38 */ 39SkStreamRewindable* CopyJavaInputStream(JNIEnv* env, jobject stream, 40 jbyteArray storage); 41 42/** 43 * Get a rewindable stream from a Java InputStream. 44 * @param env JNIEnv object. 45 * @param stream Pointer to Java InputStream. 46 * @param storage Java byte array for retrieving data from the 47 * Java InputStream. 48 * @return SkStreamRewindable Either a wrapper around the Java 49 * InputStream, if possible, or a copy which is rewindable. 50 * Since it may be a wrapper, must not be used after the 51 * caller returns, like the result of CreateJavaInputStreamAdaptor. 52 */ 53SkStreamRewindable* GetRewindableStream(JNIEnv* env, jobject stream, 54 jbyteArray storage); 55 56/** 57 * If the Java InputStream is an AssetInputStream, return an adaptor. 58 * This should not be used after the calling function returns, since 59 * the caller may close the asset. Returns NULL if the stream is 60 * not an AssetInputStream. 61 * @param env JNIEnv object. 62 * @param stream Pointer to Java InputStream. 63 * @return AssetStreamAdaptor representing the InputStream, or NULL. 64 * Must not be held onto. 65 */ 66android::AssetStreamAdaptor* CheckForAssetStream(JNIEnv* env, jobject stream); 67 68SkWStream* CreateJavaOutputStreamAdaptor(JNIEnv* env, jobject stream, 69 jbyteArray storage); 70#endif 71