1 /* ----------------------------------------------------------------------------
2  * This file was automatically generated by SWIG (http://www.swig.org).
3  * Version 2.0.4
4  *
5  * This file is not intended to be easily readable and contains a number of
6  * coding conventions designed to improve portability and efficiency. Do not make
7  * changes to this file unless you know what you are doing--modify the SWIG
8  * interface file instead.
9  * ----------------------------------------------------------------------------- */
10 
11 #define SWIGJAVA
12 
13 /* -----------------------------------------------------------------------------
14  *  This section contains generic SWIG labels for method/variable
15  *  declarations/attributes, and other compiler dependent labels.
16  * ----------------------------------------------------------------------------- */
17 
18 /* template workaround for compilers that cannot correctly implement the C++ standard */
19 #ifndef SWIGTEMPLATEDISAMBIGUATOR
20 # if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
21 #  define SWIGTEMPLATEDISAMBIGUATOR template
22 # elif defined(__HP_aCC)
23 /* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
24 /* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
25 #  define SWIGTEMPLATEDISAMBIGUATOR template
26 # else
27 #  define SWIGTEMPLATEDISAMBIGUATOR
28 # endif
29 #endif
30 
31 /* inline attribute */
32 #ifndef SWIGINLINE
33 # if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
34 #   define SWIGINLINE inline
35 # else
36 #   define SWIGINLINE
37 # endif
38 #endif
39 
40 /* attribute recognised by some compilers to avoid 'unused' warnings */
41 #ifndef SWIGUNUSED
42 # if defined(__GNUC__)
43 #   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
44 #     define SWIGUNUSED __attribute__ ((__unused__))
45 #   else
46 #     define SWIGUNUSED
47 #   endif
48 # elif defined(__ICC)
49 #   define SWIGUNUSED __attribute__ ((__unused__))
50 # else
51 #   define SWIGUNUSED
52 # endif
53 #endif
54 
55 #ifndef SWIG_MSC_UNSUPPRESS_4505
56 # if defined(_MSC_VER)
57 #   pragma warning(disable : 4505) /* unreferenced local function has been removed */
58 # endif
59 #endif
60 
61 #ifndef SWIGUNUSEDPARM
62 # ifdef __cplusplus
63 #   define SWIGUNUSEDPARM(p)
64 # else
65 #   define SWIGUNUSEDPARM(p) p SWIGUNUSED
66 # endif
67 #endif
68 
69 /* internal SWIG method */
70 #ifndef SWIGINTERN
71 # define SWIGINTERN static SWIGUNUSED
72 #endif
73 
74 /* internal inline SWIG method */
75 #ifndef SWIGINTERNINLINE
76 # define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
77 #endif
78 
79 /* exporting methods */
80 #if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
81 #  ifndef GCC_HASCLASSVISIBILITY
82 #    define GCC_HASCLASSVISIBILITY
83 #  endif
84 #endif
85 
86 #ifndef SWIGEXPORT
87 # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
88 #   if defined(STATIC_LINKED)
89 #     define SWIGEXPORT
90 #   else
91 #     define SWIGEXPORT __declspec(dllexport)
92 #   endif
93 # else
94 #   if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
95 #     define SWIGEXPORT __attribute__ ((visibility("default")))
96 #   else
97 #     define SWIGEXPORT
98 #   endif
99 # endif
100 #endif
101 
102 /* calling conventions for Windows */
103 #ifndef SWIGSTDCALL
104 # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
105 #   define SWIGSTDCALL __stdcall
106 # else
107 #   define SWIGSTDCALL
108 # endif
109 #endif
110 
111 /* Deal with Microsoft's attempt at deprecating C standard runtime functions */
112 #if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
113 # define _CRT_SECURE_NO_DEPRECATE
114 #endif
115 
116 /* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
117 #if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
118 # define _SCL_SECURE_NO_DEPRECATE
119 #endif
120 
121 
122 
123 /* Fix for jlong on some versions of gcc on Windows */
124 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
125   typedef long long __int64;
126 #endif
127 
128 /* Fix for jlong on 64-bit x86 Solaris */
129 #if defined(__x86_64)
130 # ifdef _LP64
131 #   undef _LP64
132 # endif
133 #endif
134 
135 #include <jni.h>
136 #include <stdlib.h>
137 #include <string.h>
138 
139 
140 /* Support for throwing Java exceptions */
141 typedef enum {
142   SWIG_JavaOutOfMemoryError = 1,
143   SWIG_JavaIOException,
144   SWIG_JavaRuntimeException,
145   SWIG_JavaIndexOutOfBoundsException,
146   SWIG_JavaArithmeticException,
147   SWIG_JavaIllegalArgumentException,
148   SWIG_JavaNullPointerException,
149   SWIG_JavaDirectorPureVirtual,
150   SWIG_JavaUnknownError
151 } SWIG_JavaExceptionCodes;
152 
153 typedef struct {
154   SWIG_JavaExceptionCodes code;
155   const char *java_exception;
156 } SWIG_JavaExceptions_t;
157 
158 
SWIG_JavaThrowException(JNIEnv * jenv,SWIG_JavaExceptionCodes code,const char * msg)159 static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg) {
160   jclass excep;
161   static const SWIG_JavaExceptions_t java_exceptions[] = {
162     { SWIG_JavaOutOfMemoryError, "java/lang/OutOfMemoryError" },
163     { SWIG_JavaIOException, "java/io/IOException" },
164     { SWIG_JavaRuntimeException, "java/lang/RuntimeException" },
165     { SWIG_JavaIndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException" },
166     { SWIG_JavaArithmeticException, "java/lang/ArithmeticException" },
167     { SWIG_JavaIllegalArgumentException, "java/lang/IllegalArgumentException" },
168     { SWIG_JavaNullPointerException, "java/lang/NullPointerException" },
169     { SWIG_JavaDirectorPureVirtual, "java/lang/RuntimeException" },
170     { SWIG_JavaUnknownError,  "java/lang/UnknownError" },
171     { (SWIG_JavaExceptionCodes)0,  "java/lang/UnknownError" }
172   };
173   const SWIG_JavaExceptions_t *except_ptr = java_exceptions;
174 
175   while (except_ptr->code != code && except_ptr->code)
176     except_ptr++;
177 
178   (*jenv)->ExceptionClear(jenv);
179   excep = (*jenv)->FindClass(jenv, except_ptr->java_exception);
180   if (excep)
181     (*jenv)->ThrowNew(jenv, excep, msg);
182 }
183 
184 
185 /* Contract support */
186 
187 #define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, msg); return nullreturn; } else
188 
189 /*  Errors in SWIG */
190 #define  SWIG_UnknownError         -1
191 #define  SWIG_IOError              -2
192 #define  SWIG_RuntimeError         -3
193 #define  SWIG_IndexError           -4
194 #define  SWIG_TypeError            -5
195 #define  SWIG_DivisionByZero       -6
196 #define  SWIG_OverflowError        -7
197 #define  SWIG_SyntaxError          -8
198 #define  SWIG_ValueError           -9
199 #define  SWIG_SystemError          -10
200 #define  SWIG_AttributeError       -11
201 #define  SWIG_MemoryError          -12
202 #define  SWIG_NullReferenceError   -13
203 
204 
205 
206 
SWIG_JavaException(JNIEnv * jenv,int code,const char * msg)207 SWIGINTERN void SWIG_JavaException(JNIEnv *jenv, int code, const char *msg) {
208   SWIG_JavaExceptionCodes exception_code = SWIG_JavaUnknownError;
209   switch(code) {
210   case SWIG_MemoryError:
211     exception_code = SWIG_JavaOutOfMemoryError;
212     break;
213   case SWIG_IOError:
214     exception_code = SWIG_JavaIOException;
215     break;
216   case SWIG_SystemError:
217   case SWIG_RuntimeError:
218     exception_code = SWIG_JavaRuntimeException;
219     break;
220   case SWIG_OverflowError:
221   case SWIG_IndexError:
222     exception_code = SWIG_JavaIndexOutOfBoundsException;
223     break;
224   case SWIG_DivisionByZero:
225     exception_code = SWIG_JavaArithmeticException;
226     break;
227   case SWIG_SyntaxError:
228   case SWIG_ValueError:
229   case SWIG_TypeError:
230     exception_code = SWIG_JavaIllegalArgumentException;
231     break;
232   case SWIG_UnknownError:
233   default:
234     exception_code = SWIG_JavaUnknownError;
235     break;
236   }
237   SWIG_JavaThrowException(jenv, exception_code, msg);
238 }
239 
240 
241 #if defined(SWIG_NOINCLUDE) || defined(SWIG_NOARRAYS)
242 
243 
244 int SWIG_JavaArrayInSchar (JNIEnv *jenv, jbyte **jarr, signed char **carr, jbyteArray input);
245 void SWIG_JavaArrayArgoutSchar (JNIEnv *jenv, jbyte *jarr, signed char *carr, jbyteArray input);
246 jbyteArray SWIG_JavaArrayOutSchar (JNIEnv *jenv, signed char *result, jsize sz);
247 
248 
249 int SWIG_JavaArrayInUchar (JNIEnv *jenv, jshort **jarr, unsigned char **carr, jshortArray input);
250 void SWIG_JavaArrayArgoutUchar (JNIEnv *jenv, jshort *jarr, unsigned char *carr, jshortArray input);
251 jshortArray SWIG_JavaArrayOutUchar (JNIEnv *jenv, unsigned char *result, jsize sz);
252 
253 
254 int SWIG_JavaArrayInShort (JNIEnv *jenv, jshort **jarr, short **carr, jshortArray input);
255 void SWIG_JavaArrayArgoutShort (JNIEnv *jenv, jshort *jarr, short *carr, jshortArray input);
256 jshortArray SWIG_JavaArrayOutShort (JNIEnv *jenv, short *result, jsize sz);
257 
258 
259 int SWIG_JavaArrayInUshort (JNIEnv *jenv, jint **jarr, unsigned short **carr, jintArray input);
260 void SWIG_JavaArrayArgoutUshort (JNIEnv *jenv, jint *jarr, unsigned short *carr, jintArray input);
261 jintArray SWIG_JavaArrayOutUshort (JNIEnv *jenv, unsigned short *result, jsize sz);
262 
263 
264 int SWIG_JavaArrayInInt (JNIEnv *jenv, jint **jarr, int **carr, jintArray input);
265 void SWIG_JavaArrayArgoutInt (JNIEnv *jenv, jint *jarr, int *carr, jintArray input);
266 jintArray SWIG_JavaArrayOutInt (JNIEnv *jenv, int *result, jsize sz);
267 
268 
269 int SWIG_JavaArrayInUint (JNIEnv *jenv, jlong **jarr, unsigned int **carr, jlongArray input);
270 void SWIG_JavaArrayArgoutUint (JNIEnv *jenv, jlong *jarr, unsigned int *carr, jlongArray input);
271 jlongArray SWIG_JavaArrayOutUint (JNIEnv *jenv, unsigned int *result, jsize sz);
272 
273 
274 int SWIG_JavaArrayInLong (JNIEnv *jenv, jint **jarr, long **carr, jintArray input);
275 void SWIG_JavaArrayArgoutLong (JNIEnv *jenv, jint *jarr, long *carr, jintArray input);
276 jintArray SWIG_JavaArrayOutLong (JNIEnv *jenv, long *result, jsize sz);
277 
278 
279 int SWIG_JavaArrayInUlong (JNIEnv *jenv, jlong **jarr, unsigned long **carr, jlongArray input);
280 void SWIG_JavaArrayArgoutUlong (JNIEnv *jenv, jlong *jarr, unsigned long *carr, jlongArray input);
281 jlongArray SWIG_JavaArrayOutUlong (JNIEnv *jenv, unsigned long *result, jsize sz);
282 
283 
284 int SWIG_JavaArrayInLonglong (JNIEnv *jenv, jlong **jarr, jlong **carr, jlongArray input);
285 void SWIG_JavaArrayArgoutLonglong (JNIEnv *jenv, jlong *jarr, jlong *carr, jlongArray input);
286 jlongArray SWIG_JavaArrayOutLonglong (JNIEnv *jenv, jlong *result, jsize sz);
287 
288 
289 int SWIG_JavaArrayInFloat (JNIEnv *jenv, jfloat **jarr, float **carr, jfloatArray input);
290 void SWIG_JavaArrayArgoutFloat (JNIEnv *jenv, jfloat *jarr, float *carr, jfloatArray input);
291 jfloatArray SWIG_JavaArrayOutFloat (JNIEnv *jenv, float *result, jsize sz);
292 
293 
294 int SWIG_JavaArrayInDouble (JNIEnv *jenv, jdouble **jarr, double **carr, jdoubleArray input);
295 void SWIG_JavaArrayArgoutDouble (JNIEnv *jenv, jdouble *jarr, double *carr, jdoubleArray input);
296 jdoubleArray SWIG_JavaArrayOutDouble (JNIEnv *jenv, double *result, jsize sz);
297 
298 
299 #else
300 
301 
302 /* signed char[] support */
SWIG_JavaArrayInSchar(JNIEnv * jenv,jbyte ** jarr,signed char ** carr,jbyteArray input)303 int SWIG_JavaArrayInSchar (JNIEnv *jenv, jbyte **jarr, signed char **carr, jbyteArray input) {
304   int i;
305   jsize sz;
306   if (!input) {
307     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
308     return 0;
309   }
310   sz = (*jenv)->GetArrayLength(jenv, input);
311   *jarr = (*jenv)->GetByteArrayElements(jenv, input, 0);
312   if (!*jarr)
313     return 0;
314   *carr = (signed char*) calloc(sz, sizeof(signed char));
315   if (!*carr) {
316     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
317     return 0;
318   }
319   for (i=0; i<sz; i++)
320     (*carr)[i] = (signed char)(*jarr)[i];
321   return 1;
322 }
323 
SWIG_JavaArrayArgoutSchar(JNIEnv * jenv,jbyte * jarr,signed char * carr,jbyteArray input)324 void SWIG_JavaArrayArgoutSchar (JNIEnv *jenv, jbyte *jarr, signed char *carr, jbyteArray input) {
325   int i;
326   jsize sz = (*jenv)->GetArrayLength(jenv, input);
327   for (i=0; i<sz; i++)
328     jarr[i] = (jbyte)carr[i];
329   (*jenv)->ReleaseByteArrayElements(jenv, input, jarr, 0);
330 }
331 
SWIG_JavaArrayOutSchar(JNIEnv * jenv,signed char * result,jsize sz)332 jbyteArray SWIG_JavaArrayOutSchar (JNIEnv *jenv, signed char *result, jsize sz) {
333   jbyte *arr;
334   int i;
335   jbyteArray jresult = (*jenv)->NewByteArray(jenv, sz);
336   if (!jresult)
337     return NULL;
338   arr = (*jenv)->GetByteArrayElements(jenv, jresult, 0);
339   if (!arr)
340     return NULL;
341   for (i=0; i<sz; i++)
342     arr[i] = (jbyte)result[i];
343   (*jenv)->ReleaseByteArrayElements(jenv, jresult, arr, 0);
344   return jresult;
345 }
346 
347 
348 /* unsigned char[] support */
SWIG_JavaArrayInUchar(JNIEnv * jenv,jshort ** jarr,unsigned char ** carr,jshortArray input)349 int SWIG_JavaArrayInUchar (JNIEnv *jenv, jshort **jarr, unsigned char **carr, jshortArray input) {
350   int i;
351   jsize sz;
352   if (!input) {
353     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
354     return 0;
355   }
356   sz = (*jenv)->GetArrayLength(jenv, input);
357   *jarr = (*jenv)->GetShortArrayElements(jenv, input, 0);
358   if (!*jarr)
359     return 0;
360   *carr = (unsigned char*) calloc(sz, sizeof(unsigned char));
361   if (!*carr) {
362     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
363     return 0;
364   }
365   for (i=0; i<sz; i++)
366     (*carr)[i] = (unsigned char)(*jarr)[i];
367   return 1;
368 }
369 
SWIG_JavaArrayArgoutUchar(JNIEnv * jenv,jshort * jarr,unsigned char * carr,jshortArray input)370 void SWIG_JavaArrayArgoutUchar (JNIEnv *jenv, jshort *jarr, unsigned char *carr, jshortArray input) {
371   int i;
372   jsize sz = (*jenv)->GetArrayLength(jenv, input);
373   for (i=0; i<sz; i++)
374     jarr[i] = (jshort)carr[i];
375   (*jenv)->ReleaseShortArrayElements(jenv, input, jarr, 0);
376 }
377 
SWIG_JavaArrayOutUchar(JNIEnv * jenv,unsigned char * result,jsize sz)378 jshortArray SWIG_JavaArrayOutUchar (JNIEnv *jenv, unsigned char *result, jsize sz) {
379   jshort *arr;
380   int i;
381   jshortArray jresult = (*jenv)->NewShortArray(jenv, sz);
382   if (!jresult)
383     return NULL;
384   arr = (*jenv)->GetShortArrayElements(jenv, jresult, 0);
385   if (!arr)
386     return NULL;
387   for (i=0; i<sz; i++)
388     arr[i] = (jshort)result[i];
389   (*jenv)->ReleaseShortArrayElements(jenv, jresult, arr, 0);
390   return jresult;
391 }
392 
393 
394 /* short[] support */
SWIG_JavaArrayInShort(JNIEnv * jenv,jshort ** jarr,short ** carr,jshortArray input)395 int SWIG_JavaArrayInShort (JNIEnv *jenv, jshort **jarr, short **carr, jshortArray input) {
396   int i;
397   jsize sz;
398   if (!input) {
399     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
400     return 0;
401   }
402   sz = (*jenv)->GetArrayLength(jenv, input);
403   *jarr = (*jenv)->GetShortArrayElements(jenv, input, 0);
404   if (!*jarr)
405     return 0;
406   *carr = (short*) calloc(sz, sizeof(short));
407   if (!*carr) {
408     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
409     return 0;
410   }
411   for (i=0; i<sz; i++)
412     (*carr)[i] = (short)(*jarr)[i];
413   return 1;
414 }
415 
SWIG_JavaArrayArgoutShort(JNIEnv * jenv,jshort * jarr,short * carr,jshortArray input)416 void SWIG_JavaArrayArgoutShort (JNIEnv *jenv, jshort *jarr, short *carr, jshortArray input) {
417   int i;
418   jsize sz = (*jenv)->GetArrayLength(jenv, input);
419   for (i=0; i<sz; i++)
420     jarr[i] = (jshort)carr[i];
421   (*jenv)->ReleaseShortArrayElements(jenv, input, jarr, 0);
422 }
423 
SWIG_JavaArrayOutShort(JNIEnv * jenv,short * result,jsize sz)424 jshortArray SWIG_JavaArrayOutShort (JNIEnv *jenv, short *result, jsize sz) {
425   jshort *arr;
426   int i;
427   jshortArray jresult = (*jenv)->NewShortArray(jenv, sz);
428   if (!jresult)
429     return NULL;
430   arr = (*jenv)->GetShortArrayElements(jenv, jresult, 0);
431   if (!arr)
432     return NULL;
433   for (i=0; i<sz; i++)
434     arr[i] = (jshort)result[i];
435   (*jenv)->ReleaseShortArrayElements(jenv, jresult, arr, 0);
436   return jresult;
437 }
438 
439 
440 /* unsigned short[] support */
SWIG_JavaArrayInUshort(JNIEnv * jenv,jint ** jarr,unsigned short ** carr,jintArray input)441 int SWIG_JavaArrayInUshort (JNIEnv *jenv, jint **jarr, unsigned short **carr, jintArray input) {
442   int i;
443   jsize sz;
444   if (!input) {
445     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
446     return 0;
447   }
448   sz = (*jenv)->GetArrayLength(jenv, input);
449   *jarr = (*jenv)->GetIntArrayElements(jenv, input, 0);
450   if (!*jarr)
451     return 0;
452   *carr = (unsigned short*) calloc(sz, sizeof(unsigned short));
453   if (!*carr) {
454     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
455     return 0;
456   }
457   for (i=0; i<sz; i++)
458     (*carr)[i] = (unsigned short)(*jarr)[i];
459   return 1;
460 }
461 
SWIG_JavaArrayArgoutUshort(JNIEnv * jenv,jint * jarr,unsigned short * carr,jintArray input)462 void SWIG_JavaArrayArgoutUshort (JNIEnv *jenv, jint *jarr, unsigned short *carr, jintArray input) {
463   int i;
464   jsize sz = (*jenv)->GetArrayLength(jenv, input);
465   for (i=0; i<sz; i++)
466     jarr[i] = (jint)carr[i];
467   (*jenv)->ReleaseIntArrayElements(jenv, input, jarr, 0);
468 }
469 
SWIG_JavaArrayOutUshort(JNIEnv * jenv,unsigned short * result,jsize sz)470 jintArray SWIG_JavaArrayOutUshort (JNIEnv *jenv, unsigned short *result, jsize sz) {
471   jint *arr;
472   int i;
473   jintArray jresult = (*jenv)->NewIntArray(jenv, sz);
474   if (!jresult)
475     return NULL;
476   arr = (*jenv)->GetIntArrayElements(jenv, jresult, 0);
477   if (!arr)
478     return NULL;
479   for (i=0; i<sz; i++)
480     arr[i] = (jint)result[i];
481   (*jenv)->ReleaseIntArrayElements(jenv, jresult, arr, 0);
482   return jresult;
483 }
484 
485 
486 /* int[] support */
SWIG_JavaArrayInInt(JNIEnv * jenv,jint ** jarr,int ** carr,jintArray input)487 int SWIG_JavaArrayInInt (JNIEnv *jenv, jint **jarr, int **carr, jintArray input) {
488   int i;
489   jsize sz;
490   if (!input) {
491     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
492     return 0;
493   }
494   sz = (*jenv)->GetArrayLength(jenv, input);
495   *jarr = (*jenv)->GetIntArrayElements(jenv, input, 0);
496   if (!*jarr)
497     return 0;
498   *carr = (int*) calloc(sz, sizeof(int));
499   if (!*carr) {
500     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
501     return 0;
502   }
503   for (i=0; i<sz; i++)
504     (*carr)[i] = (int)(*jarr)[i];
505   return 1;
506 }
507 
SWIG_JavaArrayArgoutInt(JNIEnv * jenv,jint * jarr,int * carr,jintArray input)508 void SWIG_JavaArrayArgoutInt (JNIEnv *jenv, jint *jarr, int *carr, jintArray input) {
509   int i;
510   jsize sz = (*jenv)->GetArrayLength(jenv, input);
511   for (i=0; i<sz; i++)
512     jarr[i] = (jint)carr[i];
513   (*jenv)->ReleaseIntArrayElements(jenv, input, jarr, 0);
514 }
515 
SWIG_JavaArrayOutInt(JNIEnv * jenv,int * result,jsize sz)516 jintArray SWIG_JavaArrayOutInt (JNIEnv *jenv, int *result, jsize sz) {
517   jint *arr;
518   int i;
519   jintArray jresult = (*jenv)->NewIntArray(jenv, sz);
520   if (!jresult)
521     return NULL;
522   arr = (*jenv)->GetIntArrayElements(jenv, jresult, 0);
523   if (!arr)
524     return NULL;
525   for (i=0; i<sz; i++)
526     arr[i] = (jint)result[i];
527   (*jenv)->ReleaseIntArrayElements(jenv, jresult, arr, 0);
528   return jresult;
529 }
530 
531 
532 /* unsigned int[] support */
SWIG_JavaArrayInUint(JNIEnv * jenv,jlong ** jarr,unsigned int ** carr,jlongArray input)533 int SWIG_JavaArrayInUint (JNIEnv *jenv, jlong **jarr, unsigned int **carr, jlongArray input) {
534   int i;
535   jsize sz;
536   if (!input) {
537     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
538     return 0;
539   }
540   sz = (*jenv)->GetArrayLength(jenv, input);
541   *jarr = (*jenv)->GetLongArrayElements(jenv, input, 0);
542   if (!*jarr)
543     return 0;
544   *carr = (unsigned int*) calloc(sz, sizeof(unsigned int));
545   if (!*carr) {
546     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
547     return 0;
548   }
549   for (i=0; i<sz; i++)
550     (*carr)[i] = (unsigned int)(*jarr)[i];
551   return 1;
552 }
553 
SWIG_JavaArrayArgoutUint(JNIEnv * jenv,jlong * jarr,unsigned int * carr,jlongArray input)554 void SWIG_JavaArrayArgoutUint (JNIEnv *jenv, jlong *jarr, unsigned int *carr, jlongArray input) {
555   int i;
556   jsize sz = (*jenv)->GetArrayLength(jenv, input);
557   for (i=0; i<sz; i++)
558     jarr[i] = (jlong)carr[i];
559   (*jenv)->ReleaseLongArrayElements(jenv, input, jarr, 0);
560 }
561 
SWIG_JavaArrayOutUint(JNIEnv * jenv,unsigned int * result,jsize sz)562 jlongArray SWIG_JavaArrayOutUint (JNIEnv *jenv, unsigned int *result, jsize sz) {
563   jlong *arr;
564   int i;
565   jlongArray jresult = (*jenv)->NewLongArray(jenv, sz);
566   if (!jresult)
567     return NULL;
568   arr = (*jenv)->GetLongArrayElements(jenv, jresult, 0);
569   if (!arr)
570     return NULL;
571   for (i=0; i<sz; i++)
572     arr[i] = (jlong)result[i];
573   (*jenv)->ReleaseLongArrayElements(jenv, jresult, arr, 0);
574   return jresult;
575 }
576 
577 
578 /* long[] support */
SWIG_JavaArrayInLong(JNIEnv * jenv,jint ** jarr,long ** carr,jintArray input)579 int SWIG_JavaArrayInLong (JNIEnv *jenv, jint **jarr, long **carr, jintArray input) {
580   int i;
581   jsize sz;
582   if (!input) {
583     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
584     return 0;
585   }
586   sz = (*jenv)->GetArrayLength(jenv, input);
587   *jarr = (*jenv)->GetIntArrayElements(jenv, input, 0);
588   if (!*jarr)
589     return 0;
590   *carr = (long*) calloc(sz, sizeof(long));
591   if (!*carr) {
592     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
593     return 0;
594   }
595   for (i=0; i<sz; i++)
596     (*carr)[i] = (long)(*jarr)[i];
597   return 1;
598 }
599 
SWIG_JavaArrayArgoutLong(JNIEnv * jenv,jint * jarr,long * carr,jintArray input)600 void SWIG_JavaArrayArgoutLong (JNIEnv *jenv, jint *jarr, long *carr, jintArray input) {
601   int i;
602   jsize sz = (*jenv)->GetArrayLength(jenv, input);
603   for (i=0; i<sz; i++)
604     jarr[i] = (jint)carr[i];
605   (*jenv)->ReleaseIntArrayElements(jenv, input, jarr, 0);
606 }
607 
SWIG_JavaArrayOutLong(JNIEnv * jenv,long * result,jsize sz)608 jintArray SWIG_JavaArrayOutLong (JNIEnv *jenv, long *result, jsize sz) {
609   jint *arr;
610   int i;
611   jintArray jresult = (*jenv)->NewIntArray(jenv, sz);
612   if (!jresult)
613     return NULL;
614   arr = (*jenv)->GetIntArrayElements(jenv, jresult, 0);
615   if (!arr)
616     return NULL;
617   for (i=0; i<sz; i++)
618     arr[i] = (jint)result[i];
619   (*jenv)->ReleaseIntArrayElements(jenv, jresult, arr, 0);
620   return jresult;
621 }
622 
623 
624 /* unsigned long[] support */
SWIG_JavaArrayInUlong(JNIEnv * jenv,jlong ** jarr,unsigned long ** carr,jlongArray input)625 int SWIG_JavaArrayInUlong (JNIEnv *jenv, jlong **jarr, unsigned long **carr, jlongArray input) {
626   int i;
627   jsize sz;
628   if (!input) {
629     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
630     return 0;
631   }
632   sz = (*jenv)->GetArrayLength(jenv, input);
633   *jarr = (*jenv)->GetLongArrayElements(jenv, input, 0);
634   if (!*jarr)
635     return 0;
636   *carr = (unsigned long*) calloc(sz, sizeof(unsigned long));
637   if (!*carr) {
638     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
639     return 0;
640   }
641   for (i=0; i<sz; i++)
642     (*carr)[i] = (unsigned long)(*jarr)[i];
643   return 1;
644 }
645 
SWIG_JavaArrayArgoutUlong(JNIEnv * jenv,jlong * jarr,unsigned long * carr,jlongArray input)646 void SWIG_JavaArrayArgoutUlong (JNIEnv *jenv, jlong *jarr, unsigned long *carr, jlongArray input) {
647   int i;
648   jsize sz = (*jenv)->GetArrayLength(jenv, input);
649   for (i=0; i<sz; i++)
650     jarr[i] = (jlong)carr[i];
651   (*jenv)->ReleaseLongArrayElements(jenv, input, jarr, 0);
652 }
653 
SWIG_JavaArrayOutUlong(JNIEnv * jenv,unsigned long * result,jsize sz)654 jlongArray SWIG_JavaArrayOutUlong (JNIEnv *jenv, unsigned long *result, jsize sz) {
655   jlong *arr;
656   int i;
657   jlongArray jresult = (*jenv)->NewLongArray(jenv, sz);
658   if (!jresult)
659     return NULL;
660   arr = (*jenv)->GetLongArrayElements(jenv, jresult, 0);
661   if (!arr)
662     return NULL;
663   for (i=0; i<sz; i++)
664     arr[i] = (jlong)result[i];
665   (*jenv)->ReleaseLongArrayElements(jenv, jresult, arr, 0);
666   return jresult;
667 }
668 
669 
670 /* jlong[] support */
SWIG_JavaArrayInLonglong(JNIEnv * jenv,jlong ** jarr,jlong ** carr,jlongArray input)671 int SWIG_JavaArrayInLonglong (JNIEnv *jenv, jlong **jarr, jlong **carr, jlongArray input) {
672   int i;
673   jsize sz;
674   if (!input) {
675     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
676     return 0;
677   }
678   sz = (*jenv)->GetArrayLength(jenv, input);
679   *jarr = (*jenv)->GetLongArrayElements(jenv, input, 0);
680   if (!*jarr)
681     return 0;
682   *carr = (jlong*) calloc(sz, sizeof(jlong));
683   if (!*carr) {
684     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
685     return 0;
686   }
687   for (i=0; i<sz; i++)
688     (*carr)[i] = (jlong)(*jarr)[i];
689   return 1;
690 }
691 
SWIG_JavaArrayArgoutLonglong(JNIEnv * jenv,jlong * jarr,jlong * carr,jlongArray input)692 void SWIG_JavaArrayArgoutLonglong (JNIEnv *jenv, jlong *jarr, jlong *carr, jlongArray input) {
693   int i;
694   jsize sz = (*jenv)->GetArrayLength(jenv, input);
695   for (i=0; i<sz; i++)
696     jarr[i] = (jlong)carr[i];
697   (*jenv)->ReleaseLongArrayElements(jenv, input, jarr, 0);
698 }
699 
SWIG_JavaArrayOutLonglong(JNIEnv * jenv,jlong * result,jsize sz)700 jlongArray SWIG_JavaArrayOutLonglong (JNIEnv *jenv, jlong *result, jsize sz) {
701   jlong *arr;
702   int i;
703   jlongArray jresult = (*jenv)->NewLongArray(jenv, sz);
704   if (!jresult)
705     return NULL;
706   arr = (*jenv)->GetLongArrayElements(jenv, jresult, 0);
707   if (!arr)
708     return NULL;
709   for (i=0; i<sz; i++)
710     arr[i] = (jlong)result[i];
711   (*jenv)->ReleaseLongArrayElements(jenv, jresult, arr, 0);
712   return jresult;
713 }
714 
715 
716 /* float[] support */
SWIG_JavaArrayInFloat(JNIEnv * jenv,jfloat ** jarr,float ** carr,jfloatArray input)717 int SWIG_JavaArrayInFloat (JNIEnv *jenv, jfloat **jarr, float **carr, jfloatArray input) {
718   int i;
719   jsize sz;
720   if (!input) {
721     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
722     return 0;
723   }
724   sz = (*jenv)->GetArrayLength(jenv, input);
725   *jarr = (*jenv)->GetFloatArrayElements(jenv, input, 0);
726   if (!*jarr)
727     return 0;
728   *carr = (float*) calloc(sz, sizeof(float));
729   if (!*carr) {
730     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
731     return 0;
732   }
733   for (i=0; i<sz; i++)
734     (*carr)[i] = (float)(*jarr)[i];
735   return 1;
736 }
737 
SWIG_JavaArrayArgoutFloat(JNIEnv * jenv,jfloat * jarr,float * carr,jfloatArray input)738 void SWIG_JavaArrayArgoutFloat (JNIEnv *jenv, jfloat *jarr, float *carr, jfloatArray input) {
739   int i;
740   jsize sz = (*jenv)->GetArrayLength(jenv, input);
741   for (i=0; i<sz; i++)
742     jarr[i] = (jfloat)carr[i];
743   (*jenv)->ReleaseFloatArrayElements(jenv, input, jarr, 0);
744 }
745 
SWIG_JavaArrayOutFloat(JNIEnv * jenv,float * result,jsize sz)746 jfloatArray SWIG_JavaArrayOutFloat (JNIEnv *jenv, float *result, jsize sz) {
747   jfloat *arr;
748   int i;
749   jfloatArray jresult = (*jenv)->NewFloatArray(jenv, sz);
750   if (!jresult)
751     return NULL;
752   arr = (*jenv)->GetFloatArrayElements(jenv, jresult, 0);
753   if (!arr)
754     return NULL;
755   for (i=0; i<sz; i++)
756     arr[i] = (jfloat)result[i];
757   (*jenv)->ReleaseFloatArrayElements(jenv, jresult, arr, 0);
758   return jresult;
759 }
760 
761 
762 /* double[] support */
SWIG_JavaArrayInDouble(JNIEnv * jenv,jdouble ** jarr,double ** carr,jdoubleArray input)763 int SWIG_JavaArrayInDouble (JNIEnv *jenv, jdouble **jarr, double **carr, jdoubleArray input) {
764   int i;
765   jsize sz;
766   if (!input) {
767     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
768     return 0;
769   }
770   sz = (*jenv)->GetArrayLength(jenv, input);
771   *jarr = (*jenv)->GetDoubleArrayElements(jenv, input, 0);
772   if (!*jarr)
773     return 0;
774   *carr = (double*) calloc(sz, sizeof(double));
775   if (!*carr) {
776     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
777     return 0;
778   }
779   for (i=0; i<sz; i++)
780     (*carr)[i] = (double)(*jarr)[i];
781   return 1;
782 }
783 
SWIG_JavaArrayArgoutDouble(JNIEnv * jenv,jdouble * jarr,double * carr,jdoubleArray input)784 void SWIG_JavaArrayArgoutDouble (JNIEnv *jenv, jdouble *jarr, double *carr, jdoubleArray input) {
785   int i;
786   jsize sz = (*jenv)->GetArrayLength(jenv, input);
787   for (i=0; i<sz; i++)
788     jarr[i] = (jdouble)carr[i];
789   (*jenv)->ReleaseDoubleArrayElements(jenv, input, jarr, 0);
790 }
791 
SWIG_JavaArrayOutDouble(JNIEnv * jenv,double * result,jsize sz)792 jdoubleArray SWIG_JavaArrayOutDouble (JNIEnv *jenv, double *result, jsize sz) {
793   jdouble *arr;
794   int i;
795   jdoubleArray jresult = (*jenv)->NewDoubleArray(jenv, sz);
796   if (!jresult)
797     return NULL;
798   arr = (*jenv)->GetDoubleArrayElements(jenv, jresult, 0);
799   if (!arr)
800     return NULL;
801   for (i=0; i<sz; i++)
802     arr[i] = (jdouble)result[i];
803   (*jenv)->ReleaseDoubleArrayElements(jenv, jresult, arr, 0);
804   return jresult;
805 }
806 
807 
808 #endif
809 
810 
811 #include "webp/types.h"
812 
813 
814 int SWIG_JavaArrayInUint8 (JNIEnv *jenv, jbyte **jarr, uint8_t **carr, jbyteArray input);
815 void SWIG_JavaArrayArgoutUint8 (JNIEnv *jenv, jbyte *jarr, uint8_t *carr, jbyteArray input);
816 jbyteArray SWIG_JavaArrayOutUint8 (JNIEnv *jenv, uint8_t *result, jsize sz);
817 
818 
819 /* uint8_t[] support */
SWIG_JavaArrayInUint8(JNIEnv * jenv,jbyte ** jarr,uint8_t ** carr,jbyteArray input)820 int SWIG_JavaArrayInUint8 (JNIEnv *jenv, jbyte **jarr, uint8_t **carr, jbyteArray input) {
821   int i;
822   jsize sz;
823   if (!input) {
824     SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
825     return 0;
826   }
827   sz = (*jenv)->GetArrayLength(jenv, input);
828   *jarr = (*jenv)->GetByteArrayElements(jenv, input, 0);
829   if (!*jarr)
830     return 0;
831   *carr = (uint8_t*) calloc(sz, sizeof(uint8_t));
832   if (!*carr) {
833     SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
834     return 0;
835   }
836   for (i=0; i<sz; i++)
837     (*carr)[i] = (uint8_t)(*jarr)[i];
838   return 1;
839 }
840 
SWIG_JavaArrayArgoutUint8(JNIEnv * jenv,jbyte * jarr,uint8_t * carr,jbyteArray input)841 void SWIG_JavaArrayArgoutUint8 (JNIEnv *jenv, jbyte *jarr, uint8_t *carr, jbyteArray input) {
842   int i;
843   jsize sz = (*jenv)->GetArrayLength(jenv, input);
844   for (i=0; i<sz; i++)
845     jarr[i] = (jbyte)carr[i];
846   (*jenv)->ReleaseByteArrayElements(jenv, input, jarr, 0);
847 }
848 
SWIG_JavaArrayOutUint8(JNIEnv * jenv,uint8_t * result,jsize sz)849 jbyteArray SWIG_JavaArrayOutUint8 (JNIEnv *jenv, uint8_t *result, jsize sz) {
850   jbyte *arr;
851   int i;
852   jbyteArray jresult = (*jenv)->NewByteArray(jenv, sz);
853   if (!jresult)
854     return NULL;
855   arr = (*jenv)->GetByteArrayElements(jenv, jresult, 0);
856   if (!arr)
857     return NULL;
858   for (i=0; i<sz; i++)
859     arr[i] = (jbyte)result[i];
860   (*jenv)->ReleaseByteArrayElements(jenv, jresult, arr, 0);
861   return jresult;
862 }
863 
864 
865 #include "webp/decode.h"
866 #include "webp/encode.h"
867 
868 
869 #define FillMeInAsSizeCannotBeDeterminedAutomatically \
870     (result ? (jint)ReturnedBufferSize(__FUNCTION__, arg3, arg4) : 0)
871 
872 
ReturnedBufferSize(const char * function,int * width,int * height)873 static size_t ReturnedBufferSize(
874     const char* function, int* width, int* height) {
875   static const struct sizemap {
876     const char* function;
877     int size_multiplier;
878   } size_map[] = {
879 #ifdef SWIGJAVA
880     { "Java_com_google_webp_libwebpJNI_WebPDecodeRGB",  3 },
881     { "Java_com_google_webp_libwebpJNI_WebPDecodeRGBA", 4 },
882     { "Java_com_google_webp_libwebpJNI_WebPDecodeARGB", 4 },
883     { "Java_com_google_webp_libwebpJNI_WebPDecodeBGR",  3 },
884     { "Java_com_google_webp_libwebpJNI_WebPDecodeBGRA", 4 },
885     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeRGB",  1 },
886     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeBGR",  1 },
887     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeRGBA", 1 },
888     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeBGRA", 1 },
889     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessRGB",  1 },
890     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessBGR",  1 },
891     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessRGBA", 1 },
892     { "Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessBGRA", 1 },
893 #endif
894 #ifdef SWIGPYTHON
895     { "WebPDecodeRGB",  3 },
896     { "WebPDecodeRGBA", 4 },
897     { "WebPDecodeARGB", 4 },
898     { "WebPDecodeBGR",  3 },
899     { "WebPDecodeBGRA", 4 },
900     { "wrap_WebPEncodeRGB",  1 },
901     { "wrap_WebPEncodeBGR",  1 },
902     { "wrap_WebPEncodeRGBA", 1 },
903     { "wrap_WebPEncodeBGRA", 1 },
904     { "wrap_WebPEncodeLosslessRGB",  1 },
905     { "wrap_WebPEncodeLosslessBGR",  1 },
906     { "wrap_WebPEncodeLosslessRGBA", 1 },
907     { "wrap_WebPEncodeLosslessBGRA", 1 },
908 #endif
909     { NULL, 0 }
910   };
911   const struct sizemap* p;
912   size_t size = 0;
913 
914   for (p = size_map; p->function; ++p) {
915     if (!strcmp(function, p->function)) {
916       size = *width * *height * p->size_multiplier;
917       break;
918     }
919   }
920 
921   return size;
922 }
923 
924 
925 typedef size_t (*WebPEncodeFunction)(const uint8_t* rgb,
926                                      int width, int height, int stride,
927                                      float quality_factor, uint8_t** output);
928 typedef size_t (*WebPEncodeLosslessFunction)(const uint8_t* rgb,
929                                              int width, int height, int stride,
930                                              uint8_t** output);
931 
EncodeLossy(const uint8_t * rgb,int width,int height,int stride,float quality_factor,WebPEncodeFunction encfn,int * output_size,int * unused)932 static uint8_t* EncodeLossy(const uint8_t* rgb,
933                             int width, int height, int stride,
934                             float quality_factor,
935                             WebPEncodeFunction encfn,
936                             int* output_size, int* unused) {
937   uint8_t* output = NULL;
938   const size_t image_size =
939       encfn(rgb, width, height, stride, quality_factor, &output);
940   // the values of following two will be interpreted by ReturnedBufferSize()
941   // as 'width' and 'height' in the size calculation.
942   *output_size = image_size;
943   *unused = 1;
944   return image_size ? output : NULL;
945 }
946 
EncodeLossless(const uint8_t * rgb,int width,int height,int stride,WebPEncodeLosslessFunction encfn,int * output_size,int * unused)947 static uint8_t* EncodeLossless(const uint8_t* rgb,
948                                int width, int height, int stride,
949                                WebPEncodeLosslessFunction encfn,
950                                int* output_size, int* unused) {
951   uint8_t* output = NULL;
952   const size_t image_size = encfn(rgb, width, height, stride, &output);
953   // the values of the following two will be interpreted by
954   // ReturnedBufferSize() as 'width' and 'height' in the size calculation.
955   *output_size = image_size;
956   *unused = 1;
957   return image_size ? output : NULL;
958 }
959 
960 
961 // Changes the return type of WebPEncode* to more closely match Decode*.
962 // This also makes it easier to wrap the output buffer in a native type rather
963 // than dealing with the return pointer.
964 // The additional parameters are to allow reuse of ReturnedBufferSize(),
965 // unused2 and output_size will be used in this case.
966 #define LOSSY_WRAPPER(FUNC)                                             \
967   static uint8_t* wrap_##FUNC(                                          \
968       const uint8_t* rgb, int* unused1, int* unused2, int* output_size, \
969       int width, int height, int stride, float quality_factor) {        \
970     return EncodeLossy(rgb, width, height, stride, quality_factor,      \
971                        FUNC, output_size, unused2);                     \
972   }                                                                     \
973 
974 LOSSY_WRAPPER(WebPEncodeRGB)
LOSSY_WRAPPER(WebPEncodeBGR)975 LOSSY_WRAPPER(WebPEncodeBGR)
976 LOSSY_WRAPPER(WebPEncodeRGBA)
977 LOSSY_WRAPPER(WebPEncodeBGRA)
978 
979 #undef LOSSY_WRAPPER
980 
981 #define LOSSLESS_WRAPPER(FUNC)                                          \
982   static uint8_t* wrap_##FUNC(                                          \
983       const uint8_t* rgb, int* unused1, int* unused2, int* output_size, \
984       int width, int height, int stride) {                              \
985     return EncodeLossless(rgb, width, height, stride,                   \
986                           FUNC, output_size, unused2);                  \
987   }                                                                     \
988 
989 LOSSLESS_WRAPPER(WebPEncodeLosslessRGB)
990 LOSSLESS_WRAPPER(WebPEncodeLosslessBGR)
991 LOSSLESS_WRAPPER(WebPEncodeLosslessRGBA)
992 LOSSLESS_WRAPPER(WebPEncodeLosslessBGRA)
993 
994 #undef LOSSLESS_WRAPPER
995 
996 
997 
998 /* Work around broken gcj jni.h */
999 #ifdef __GCJ_JNI_H__
1000 # undef JNIEXPORT
1001 # define JNIEXPORT
1002 # undef JNICALL
1003 # define JNICALL
1004 #endif
1005 
1006 
1007 #ifdef __cplusplus
1008 extern "C" {
1009 #endif
1010 
1011 SWIGEXPORT jint JNICALL Java_com_google_webp_libwebpJNI_WebPGetDecoderVersion(JNIEnv *jenv, jclass jcls) {
1012   jint jresult = 0 ;
1013   int result;
1014 
1015   (void)jenv;
1016   (void)jcls;
1017   result = (int)WebPGetDecoderVersion();
1018   jresult = (jint)result;
1019   return jresult;
1020 }
1021 
1022 
1023 SWIGEXPORT jint JNICALL Java_com_google_webp_libwebpJNI_WebPGetInfo(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jlong jarg2, jintArray jarg3, jintArray jarg4) {
1024   jint jresult = 0 ;
1025   uint8_t *arg1 = (uint8_t *) 0 ;
1026   size_t arg2 ;
1027   int *arg3 = (int *) 0 ;
1028   int *arg4 = (int *) 0 ;
1029   jbyte *jarr1 ;
1030   int temp3 ;
1031   int temp4 ;
1032   int result;
1033 
1034   (void)jenv;
1035   (void)jcls;
1036   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1037   arg2 = (size_t)jarg2;
1038   {
1039     if (!jarg3) {
1040       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1041       return 0;
1042     }
1043     if ((*jenv)->GetArrayLength(jenv, jarg3) == 0) {
1044       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1045       return 0;
1046     }
1047     arg3 = &temp3;
1048   }
1049   {
1050     if (!jarg4) {
1051       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1052       return 0;
1053     }
1054     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1055       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1056       return 0;
1057     }
1058     arg4 = &temp4;
1059   }
1060   result = (int)WebPGetInfo((uint8_t const *)arg1,arg2,arg3,arg4);
1061   jresult = (jint)result;
1062   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1063   {
1064     jint jvalue = (jint)temp3;
1065     (*jenv)->SetIntArrayRegion(jenv, jarg3, 0, 1, &jvalue);
1066   }
1067   {
1068     jint jvalue = (jint)temp4;
1069     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1070   }
1071   free(arg1);
1072 
1073 
1074   return jresult;
1075 }
1076 
1077 
1078 SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_WebPDecodeRGB(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jlong jarg2, jintArray jarg3, jintArray jarg4) {
1079   jbyteArray jresult = 0 ;
1080   uint8_t *arg1 = (uint8_t *) 0 ;
1081   size_t arg2 ;
1082   int *arg3 = (int *) 0 ;
1083   int *arg4 = (int *) 0 ;
1084   jbyte *jarr1 ;
1085   int temp3 ;
1086   int temp4 ;
1087   uint8_t *result = 0 ;
1088 
1089   (void)jenv;
1090   (void)jcls;
1091   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1092   arg2 = (size_t)jarg2;
1093   {
1094     if (!jarg3) {
1095       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1096       return 0;
1097     }
1098     if ((*jenv)->GetArrayLength(jenv, jarg3) == 0) {
1099       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1100       return 0;
1101     }
1102     arg3 = &temp3;
1103   }
1104   {
1105     if (!jarg4) {
1106       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1107       return 0;
1108     }
1109     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1110       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1111       return 0;
1112     }
1113     arg4 = &temp4;
1114   }
1115   result = (uint8_t *)WebPDecodeRGB((uint8_t const *)arg1,arg2,arg3,arg4);
1116   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically);
1117   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1118   {
1119     jint jvalue = (jint)temp3;
1120     (*jenv)->SetIntArrayRegion(jenv, jarg3, 0, 1, &jvalue);
1121   }
1122   {
1123     jint jvalue = (jint)temp4;
1124     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1125   }
1126   free(arg1);
1127 
1128 
1129   free(result);
1130   return jresult;
1131 }
1132 
1133 
1134 SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_WebPDecodeRGBA(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jlong jarg2, jintArray jarg3, jintArray jarg4) {
1135   jbyteArray jresult = 0 ;
1136   uint8_t *arg1 = (uint8_t *) 0 ;
1137   size_t arg2 ;
1138   int *arg3 = (int *) 0 ;
1139   int *arg4 = (int *) 0 ;
1140   jbyte *jarr1 ;
1141   int temp3 ;
1142   int temp4 ;
1143   uint8_t *result = 0 ;
1144 
1145   (void)jenv;
1146   (void)jcls;
1147   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1148   arg2 = (size_t)jarg2;
1149   {
1150     if (!jarg3) {
1151       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1152       return 0;
1153     }
1154     if ((*jenv)->GetArrayLength(jenv, jarg3) == 0) {
1155       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1156       return 0;
1157     }
1158     arg3 = &temp3;
1159   }
1160   {
1161     if (!jarg4) {
1162       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1163       return 0;
1164     }
1165     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1166       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1167       return 0;
1168     }
1169     arg4 = &temp4;
1170   }
1171   result = (uint8_t *)WebPDecodeRGBA((uint8_t const *)arg1,arg2,arg3,arg4);
1172   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically);
1173   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1174   {
1175     jint jvalue = (jint)temp3;
1176     (*jenv)->SetIntArrayRegion(jenv, jarg3, 0, 1, &jvalue);
1177   }
1178   {
1179     jint jvalue = (jint)temp4;
1180     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1181   }
1182   free(arg1);
1183 
1184 
1185   free(result);
1186   return jresult;
1187 }
1188 
1189 
1190 SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_WebPDecodeARGB(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jlong jarg2, jintArray jarg3, jintArray jarg4) {
1191   jbyteArray jresult = 0 ;
1192   uint8_t *arg1 = (uint8_t *) 0 ;
1193   size_t arg2 ;
1194   int *arg3 = (int *) 0 ;
1195   int *arg4 = (int *) 0 ;
1196   jbyte *jarr1 ;
1197   int temp3 ;
1198   int temp4 ;
1199   uint8_t *result = 0 ;
1200 
1201   (void)jenv;
1202   (void)jcls;
1203   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1204   arg2 = (size_t)jarg2;
1205   {
1206     if (!jarg3) {
1207       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1208       return 0;
1209     }
1210     if ((*jenv)->GetArrayLength(jenv, jarg3) == 0) {
1211       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1212       return 0;
1213     }
1214     arg3 = &temp3;
1215   }
1216   {
1217     if (!jarg4) {
1218       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1219       return 0;
1220     }
1221     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1222       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1223       return 0;
1224     }
1225     arg4 = &temp4;
1226   }
1227   result = (uint8_t *)WebPDecodeARGB((uint8_t const *)arg1,arg2,arg3,arg4);
1228   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically);
1229   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1230   {
1231     jint jvalue = (jint)temp3;
1232     (*jenv)->SetIntArrayRegion(jenv, jarg3, 0, 1, &jvalue);
1233   }
1234   {
1235     jint jvalue = (jint)temp4;
1236     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1237   }
1238   free(arg1);
1239 
1240 
1241   free(result);
1242   return jresult;
1243 }
1244 
1245 
1246 SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_WebPDecodeBGR(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jlong jarg2, jintArray jarg3, jintArray jarg4) {
1247   jbyteArray jresult = 0 ;
1248   uint8_t *arg1 = (uint8_t *) 0 ;
1249   size_t arg2 ;
1250   int *arg3 = (int *) 0 ;
1251   int *arg4 = (int *) 0 ;
1252   jbyte *jarr1 ;
1253   int temp3 ;
1254   int temp4 ;
1255   uint8_t *result = 0 ;
1256 
1257   (void)jenv;
1258   (void)jcls;
1259   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1260   arg2 = (size_t)jarg2;
1261   {
1262     if (!jarg3) {
1263       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1264       return 0;
1265     }
1266     if ((*jenv)->GetArrayLength(jenv, jarg3) == 0) {
1267       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1268       return 0;
1269     }
1270     arg3 = &temp3;
1271   }
1272   {
1273     if (!jarg4) {
1274       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1275       return 0;
1276     }
1277     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1278       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1279       return 0;
1280     }
1281     arg4 = &temp4;
1282   }
1283   result = (uint8_t *)WebPDecodeBGR((uint8_t const *)arg1,arg2,arg3,arg4);
1284   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically);
1285   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1286   {
1287     jint jvalue = (jint)temp3;
1288     (*jenv)->SetIntArrayRegion(jenv, jarg3, 0, 1, &jvalue);
1289   }
1290   {
1291     jint jvalue = (jint)temp4;
1292     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1293   }
1294   free(arg1);
1295 
1296 
1297   free(result);
1298   return jresult;
1299 }
1300 
1301 
1302 SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_WebPDecodeBGRA(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jlong jarg2, jintArray jarg3, jintArray jarg4) {
1303   jbyteArray jresult = 0 ;
1304   uint8_t *arg1 = (uint8_t *) 0 ;
1305   size_t arg2 ;
1306   int *arg3 = (int *) 0 ;
1307   int *arg4 = (int *) 0 ;
1308   jbyte *jarr1 ;
1309   int temp3 ;
1310   int temp4 ;
1311   uint8_t *result = 0 ;
1312 
1313   (void)jenv;
1314   (void)jcls;
1315   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1316   arg2 = (size_t)jarg2;
1317   {
1318     if (!jarg3) {
1319       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1320       return 0;
1321     }
1322     if ((*jenv)->GetArrayLength(jenv, jarg3) == 0) {
1323       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1324       return 0;
1325     }
1326     arg3 = &temp3;
1327   }
1328   {
1329     if (!jarg4) {
1330       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1331       return 0;
1332     }
1333     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1334       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1335       return 0;
1336     }
1337     arg4 = &temp4;
1338   }
1339   result = (uint8_t *)WebPDecodeBGRA((uint8_t const *)arg1,arg2,arg3,arg4);
1340   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically);
1341   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1342   {
1343     jint jvalue = (jint)temp3;
1344     (*jenv)->SetIntArrayRegion(jenv, jarg3, 0, 1, &jvalue);
1345   }
1346   {
1347     jint jvalue = (jint)temp4;
1348     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1349   }
1350   free(arg1);
1351 
1352 
1353   free(result);
1354   return jresult;
1355 }
1356 
1357 
1358 SWIGEXPORT jint JNICALL Java_com_google_webp_libwebpJNI_WebPGetEncoderVersion(JNIEnv *jenv, jclass jcls) {
1359   jint jresult = 0 ;
1360   int result;
1361 
1362   (void)jenv;
1363   (void)jcls;
1364   result = (int)WebPGetEncoderVersion();
1365   jresult = (jint)result;
1366   return jresult;
1367 }
1368 
1369 
1370 SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeRGB(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7, jfloat jarg8) {
1371   jbyteArray jresult = 0 ;
1372   uint8_t *arg1 = (uint8_t *) 0 ;
1373   int *arg2 = (int *) 0 ;
1374   int *arg3 = (int *) 0 ;
1375   int *arg4 = (int *) 0 ;
1376   int arg5 ;
1377   int arg6 ;
1378   int arg7 ;
1379   float arg8 ;
1380   jbyte *jarr1 ;
1381   int temp4 ;
1382   uint8_t *result = 0 ;
1383 
1384   (void)jenv;
1385   (void)jcls;
1386   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1387   arg2 = (int *)&jarg2;
1388   arg3 = (int *)&jarg3;
1389   {
1390     if (!jarg4) {
1391       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1392       return 0;
1393     }
1394     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1395       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1396       return 0;
1397     }
1398     arg4 = &temp4;
1399   }
1400   arg5 = (int)jarg5;
1401   arg6 = (int)jarg6;
1402   arg7 = (int)jarg7;
1403   arg8 = (float)jarg8;
1404   result = (uint8_t *)wrap_WebPEncodeRGB((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);
1405   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically);
1406   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1407   {
1408     jint jvalue = (jint)temp4;
1409     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1410   }
1411   free(arg1);
1412 
1413 
1414 
1415   free(result);
1416   return jresult;
1417 }
1418 
1419 
1420 SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeBGR(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7, jfloat jarg8) {
1421   jbyteArray jresult = 0 ;
1422   uint8_t *arg1 = (uint8_t *) 0 ;
1423   int *arg2 = (int *) 0 ;
1424   int *arg3 = (int *) 0 ;
1425   int *arg4 = (int *) 0 ;
1426   int arg5 ;
1427   int arg6 ;
1428   int arg7 ;
1429   float arg8 ;
1430   jbyte *jarr1 ;
1431   int temp4 ;
1432   uint8_t *result = 0 ;
1433 
1434   (void)jenv;
1435   (void)jcls;
1436   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1437   arg2 = (int *)&jarg2;
1438   arg3 = (int *)&jarg3;
1439   {
1440     if (!jarg4) {
1441       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1442       return 0;
1443     }
1444     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1445       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1446       return 0;
1447     }
1448     arg4 = &temp4;
1449   }
1450   arg5 = (int)jarg5;
1451   arg6 = (int)jarg6;
1452   arg7 = (int)jarg7;
1453   arg8 = (float)jarg8;
1454   result = (uint8_t *)wrap_WebPEncodeBGR((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);
1455   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically);
1456   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1457   {
1458     jint jvalue = (jint)temp4;
1459     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1460   }
1461   free(arg1);
1462 
1463 
1464 
1465   free(result);
1466   return jresult;
1467 }
1468 
1469 
1470 SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeRGBA(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7, jfloat jarg8) {
1471   jbyteArray jresult = 0 ;
1472   uint8_t *arg1 = (uint8_t *) 0 ;
1473   int *arg2 = (int *) 0 ;
1474   int *arg3 = (int *) 0 ;
1475   int *arg4 = (int *) 0 ;
1476   int arg5 ;
1477   int arg6 ;
1478   int arg7 ;
1479   float arg8 ;
1480   jbyte *jarr1 ;
1481   int temp4 ;
1482   uint8_t *result = 0 ;
1483 
1484   (void)jenv;
1485   (void)jcls;
1486   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1487   arg2 = (int *)&jarg2;
1488   arg3 = (int *)&jarg3;
1489   {
1490     if (!jarg4) {
1491       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1492       return 0;
1493     }
1494     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1495       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1496       return 0;
1497     }
1498     arg4 = &temp4;
1499   }
1500   arg5 = (int)jarg5;
1501   arg6 = (int)jarg6;
1502   arg7 = (int)jarg7;
1503   arg8 = (float)jarg8;
1504   result = (uint8_t *)wrap_WebPEncodeRGBA((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);
1505   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically);
1506   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1507   {
1508     jint jvalue = (jint)temp4;
1509     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1510   }
1511   free(arg1);
1512 
1513 
1514 
1515   free(result);
1516   return jresult;
1517 }
1518 
1519 
1520 SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeBGRA(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7, jfloat jarg8) {
1521   jbyteArray jresult = 0 ;
1522   uint8_t *arg1 = (uint8_t *) 0 ;
1523   int *arg2 = (int *) 0 ;
1524   int *arg3 = (int *) 0 ;
1525   int *arg4 = (int *) 0 ;
1526   int arg5 ;
1527   int arg6 ;
1528   int arg7 ;
1529   float arg8 ;
1530   jbyte *jarr1 ;
1531   int temp4 ;
1532   uint8_t *result = 0 ;
1533 
1534   (void)jenv;
1535   (void)jcls;
1536   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1537   arg2 = (int *)&jarg2;
1538   arg3 = (int *)&jarg3;
1539   {
1540     if (!jarg4) {
1541       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1542       return 0;
1543     }
1544     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1545       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1546       return 0;
1547     }
1548     arg4 = &temp4;
1549   }
1550   arg5 = (int)jarg5;
1551   arg6 = (int)jarg6;
1552   arg7 = (int)jarg7;
1553   arg8 = (float)jarg8;
1554   result = (uint8_t *)wrap_WebPEncodeBGRA((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);
1555   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically);
1556   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1557   {
1558     jint jvalue = (jint)temp4;
1559     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1560   }
1561   free(arg1);
1562 
1563 
1564 
1565   free(result);
1566   return jresult;
1567 }
1568 
1569 
1570 SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessRGB(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7) {
1571   jbyteArray jresult = 0 ;
1572   uint8_t *arg1 = (uint8_t *) 0 ;
1573   int *arg2 = (int *) 0 ;
1574   int *arg3 = (int *) 0 ;
1575   int *arg4 = (int *) 0 ;
1576   int arg5 ;
1577   int arg6 ;
1578   int arg7 ;
1579   jbyte *jarr1 ;
1580   int temp4 ;
1581   uint8_t *result = 0 ;
1582 
1583   (void)jenv;
1584   (void)jcls;
1585   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1586   arg2 = (int *)&jarg2;
1587   arg3 = (int *)&jarg3;
1588   {
1589     if (!jarg4) {
1590       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1591       return 0;
1592     }
1593     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1594       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1595       return 0;
1596     }
1597     arg4 = &temp4;
1598   }
1599   arg5 = (int)jarg5;
1600   arg6 = (int)jarg6;
1601   arg7 = (int)jarg7;
1602   result = (uint8_t *)wrap_WebPEncodeLosslessRGB((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7);
1603   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically);
1604   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1605   {
1606     jint jvalue = (jint)temp4;
1607     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1608   }
1609   free(arg1);
1610 
1611 
1612 
1613   free(result);
1614   return jresult;
1615 }
1616 
1617 
1618 SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessBGR(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7) {
1619   jbyteArray jresult = 0 ;
1620   uint8_t *arg1 = (uint8_t *) 0 ;
1621   int *arg2 = (int *) 0 ;
1622   int *arg3 = (int *) 0 ;
1623   int *arg4 = (int *) 0 ;
1624   int arg5 ;
1625   int arg6 ;
1626   int arg7 ;
1627   jbyte *jarr1 ;
1628   int temp4 ;
1629   uint8_t *result = 0 ;
1630 
1631   (void)jenv;
1632   (void)jcls;
1633   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1634   arg2 = (int *)&jarg2;
1635   arg3 = (int *)&jarg3;
1636   {
1637     if (!jarg4) {
1638       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1639       return 0;
1640     }
1641     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1642       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1643       return 0;
1644     }
1645     arg4 = &temp4;
1646   }
1647   arg5 = (int)jarg5;
1648   arg6 = (int)jarg6;
1649   arg7 = (int)jarg7;
1650   result = (uint8_t *)wrap_WebPEncodeLosslessBGR((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7);
1651   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically);
1652   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1653   {
1654     jint jvalue = (jint)temp4;
1655     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1656   }
1657   free(arg1);
1658 
1659 
1660 
1661   free(result);
1662   return jresult;
1663 }
1664 
1665 
1666 SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessRGBA(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7) {
1667   jbyteArray jresult = 0 ;
1668   uint8_t *arg1 = (uint8_t *) 0 ;
1669   int *arg2 = (int *) 0 ;
1670   int *arg3 = (int *) 0 ;
1671   int *arg4 = (int *) 0 ;
1672   int arg5 ;
1673   int arg6 ;
1674   int arg7 ;
1675   jbyte *jarr1 ;
1676   int temp4 ;
1677   uint8_t *result = 0 ;
1678 
1679   (void)jenv;
1680   (void)jcls;
1681   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1682   arg2 = (int *)&jarg2;
1683   arg3 = (int *)&jarg3;
1684   {
1685     if (!jarg4) {
1686       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1687       return 0;
1688     }
1689     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1690       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1691       return 0;
1692     }
1693     arg4 = &temp4;
1694   }
1695   arg5 = (int)jarg5;
1696   arg6 = (int)jarg6;
1697   arg7 = (int)jarg7;
1698   result = (uint8_t *)wrap_WebPEncodeLosslessRGBA((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7);
1699   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically);
1700   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1701   {
1702     jint jvalue = (jint)temp4;
1703     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1704   }
1705   free(arg1);
1706 
1707 
1708 
1709   free(result);
1710   return jresult;
1711 }
1712 
1713 
1714 SWIGEXPORT jbyteArray JNICALL Java_com_google_webp_libwebpJNI_wrap_1WebPEncodeLosslessBGRA(JNIEnv *jenv, jclass jcls, jbyteArray jarg1, jint jarg2, jint jarg3, jintArray jarg4, jint jarg5, jint jarg6, jint jarg7) {
1715   jbyteArray jresult = 0 ;
1716   uint8_t *arg1 = (uint8_t *) 0 ;
1717   int *arg2 = (int *) 0 ;
1718   int *arg3 = (int *) 0 ;
1719   int *arg4 = (int *) 0 ;
1720   int arg5 ;
1721   int arg6 ;
1722   int arg7 ;
1723   jbyte *jarr1 ;
1724   int temp4 ;
1725   uint8_t *result = 0 ;
1726 
1727   (void)jenv;
1728   (void)jcls;
1729   if (!SWIG_JavaArrayInUint8(jenv, &jarr1, &arg1, jarg1)) return 0;
1730   arg2 = (int *)&jarg2;
1731   arg3 = (int *)&jarg3;
1732   {
1733     if (!jarg4) {
1734       SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
1735       return 0;
1736     }
1737     if ((*jenv)->GetArrayLength(jenv, jarg4) == 0) {
1738       SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
1739       return 0;
1740     }
1741     arg4 = &temp4;
1742   }
1743   arg5 = (int)jarg5;
1744   arg6 = (int)jarg6;
1745   arg7 = (int)jarg7;
1746   result = (uint8_t *)wrap_WebPEncodeLosslessBGRA((uint8_t const *)arg1,arg2,arg3,arg4,arg5,arg6,arg7);
1747   jresult = SWIG_JavaArrayOutUint8(jenv, result, FillMeInAsSizeCannotBeDeterminedAutomatically);
1748   SWIG_JavaArrayArgoutUint8(jenv, jarr1, arg1, jarg1);
1749   {
1750     jint jvalue = (jint)temp4;
1751     (*jenv)->SetIntArrayRegion(jenv, jarg4, 0, 1, &jvalue);
1752   }
1753   free(arg1);
1754 
1755 
1756 
1757   free(result);
1758   return jresult;
1759 }
1760 
1761 
1762 #ifdef __cplusplus
1763 }
1764 #endif
1765 
1766