/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_badlogic_gdx_graphics_glutils_ETC1 */

#ifndef _Included_com_badlogic_gdx_graphics_glutils_ETC1
#define _Included_com_badlogic_gdx_graphics_glutils_ETC1
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_badlogic_gdx_graphics_glutils_ETC1
 * Method:    getCompressedDataSize
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_getCompressedDataSize
  (JNIEnv *, jclass, jint, jint);

/*
 * Class:     com_badlogic_gdx_graphics_glutils_ETC1
 * Method:    formatHeader
 * Signature: (Ljava/nio/ByteBuffer;III)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_formatHeader
  (JNIEnv *, jclass, jobject, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_graphics_glutils_ETC1
 * Method:    getWidthPKM
 * Signature: (Ljava/nio/ByteBuffer;I)I
 */
JNIEXPORT jint JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_getWidthPKM
  (JNIEnv *, jclass, jobject, jint);

/*
 * Class:     com_badlogic_gdx_graphics_glutils_ETC1
 * Method:    getHeightPKM
 * Signature: (Ljava/nio/ByteBuffer;I)I
 */
JNIEXPORT jint JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_getHeightPKM
  (JNIEnv *, jclass, jobject, jint);

/*
 * Class:     com_badlogic_gdx_graphics_glutils_ETC1
 * Method:    isValidPKM
 * Signature: (Ljava/nio/ByteBuffer;I)Z
 */
JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_isValidPKM
  (JNIEnv *, jclass, jobject, jint);

/*
 * Class:     com_badlogic_gdx_graphics_glutils_ETC1
 * Method:    decodeImage
 * Signature: (Ljava/nio/ByteBuffer;ILjava/nio/ByteBuffer;IIII)V
 */
JNIEXPORT void JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_decodeImage
  (JNIEnv *, jclass, jobject, jint, jobject, jint, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_graphics_glutils_ETC1
 * Method:    encodeImage
 * Signature: (Ljava/nio/ByteBuffer;IIII)Ljava/nio/ByteBuffer;
 */
JNIEXPORT jobject JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_encodeImage
  (JNIEnv *, jclass, jobject, jint, jint, jint, jint);

/*
 * Class:     com_badlogic_gdx_graphics_glutils_ETC1
 * Method:    encodeImagePKM
 * Signature: (Ljava/nio/ByteBuffer;IIII)Ljava/nio/ByteBuffer;
 */
JNIEXPORT jobject JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_encodeImagePKM
  (JNIEnv *, jclass, jobject, jint, jint, jint, jint);

#ifdef __cplusplus
}
#endif
#endif
/* Header for class com_badlogic_gdx_graphics_glutils_ETC1_ETC1Data */

#ifndef _Included_com_badlogic_gdx_graphics_glutils_ETC1_ETC1Data
#define _Included_com_badlogic_gdx_graphics_glutils_ETC1_ETC1Data
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif
