go-libwebp

Experimental translation from libwebp to Go source.
Log | Files | Refs | README | LICENSE

libwebp_java_wrap.c (53665B)


      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 
    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 
    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 */
    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 
    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 
    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 */
    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 
    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 
    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 */
    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 
    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 
    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 */
    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 
    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 
    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 */
    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 
    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 
    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 */
    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 
    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 
    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 */
    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 
    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 
    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 */
    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 
    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 
    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 */
    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 
    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 
    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 */
    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 
    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 
    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 */
    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 
    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 
    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 */
    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 
    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 
    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 
    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 
    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 
    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)
    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