19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef CreateJavaOutputStream_DEFINED
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define CreateJavaOutputStream_DEFINED
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project//#include <android_runtime/AndroidRuntime.h>
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "jni.h"
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins IIIclass SkMemoryStream;
8ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins IIIclass SkStream;
9ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins IIIclass SkStreamRewindable;
10ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins IIIclass SkWStream;
11ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III
12ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III/**
13ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III *  Return an adaptor from a Java InputStream to an SkStream.
147315f1baee19476363235127bc1438e2a291fa15Leon Scroggins III *  Does not support rewind.
15ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III *  @param env JNIEnv object.
16ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III *  @param stream Pointer to Java InputStream.
17ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III *  @param storage Java byte array for retrieving data from the
18ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III *      Java InputStream.
19ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III *  @return SkStream Simple subclass of SkStream which supports its
20ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III *      basic methods like reading. Only valid until the calling
21ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III *      function returns, since the Java InputStream is not managed
22ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III *      by the SkStream.
23ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III */
24c7797525084ba0ea441e394aa0a2ba35d6ff3320Leon Scroggins IIISkStream* CreateJavaInputStreamAdaptor(JNIEnv* env, jobject stream,
25c7797525084ba0ea441e394aa0a2ba35d6ff3320Leon Scroggins III                                       jbyteArray storage);
26ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III
27ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III/**
287315f1baee19476363235127bc1438e2a291fa15Leon Scroggins III *  Copy a Java InputStream. The result will be rewindable.
29ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III *  @param env JNIEnv object.
30ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III *  @param stream Pointer to Java InputStream.
31ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III *  @param storage Java byte array for retrieving data from the
32ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III *      Java InputStream.
33c7797525084ba0ea441e394aa0a2ba35d6ff3320Leon Scroggins III *  @return SkStreamRewindable The data in stream will be copied
34c7797525084ba0ea441e394aa0a2ba35d6ff3320Leon Scroggins III *      to a new SkStreamRewindable.
35ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III */
36c7797525084ba0ea441e394aa0a2ba35d6ff3320Leon Scroggins IIISkStreamRewindable* CopyJavaInputStream(JNIEnv* env, jobject stream,
37c7797525084ba0ea441e394aa0a2ba35d6ff3320Leon Scroggins III                                        jbyteArray storage);
38ca32021b43f326af7d3f4ae041f8db297f98a518Leon Scroggins III
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectSkWStream* CreateJavaOutputStreamAdaptor(JNIEnv* env, jobject stream,
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                         jbyteArray storage);
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif
42