1 #include <com.badlogic.gdx.graphics.glutils.ETC1.h>
2 #include <android/log.h>
3
4 #define APP_LOG "GDX"
5
6 //@line:196
7
8 #include <etc1/etc1_utils.h>
9 #include <stdlib.h>
Java_com_badlogic_gdx_graphics_glutils_ETC1_getCompressedDataSize(JNIEnv * env,jclass clazz,jint width,jint height)10 JNIEXPORT jint JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_getCompressedDataSize(JNIEnv* env, jclass clazz, jint width, jint height) {
11
12
13 //@line:204
14
15 return etc1_get_encoded_data_size(width, height);
16
17
18 }
19
Java_com_badlogic_gdx_graphics_glutils_ETC1_formatHeader(JNIEnv * env,jclass clazz,jobject obj_header,jint offset,jint width,jint height)20 JNIEXPORT void JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_formatHeader(JNIEnv* env, jclass clazz, jobject obj_header, jint offset, jint width, jint height) {
21 char* header = (char*)(obj_header?env->GetDirectBufferAddress(obj_header):0);
22
23
24 //@line:214
25
26 etc1_pkm_format_header((etc1_byte*)header + offset, width, height);
27
28
29 }
30
wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_getWidthPKM(JNIEnv * env,jclass clazz,jobject obj_header,jint offset,char * header)31 static inline jint wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_getWidthPKM
32 (JNIEnv* env, jclass clazz, jobject obj_header, jint offset, char* header) {
33
34 //@line:221
35
36 return etc1_pkm_get_width((etc1_byte*)header + offset);
37
38 }
39
Java_com_badlogic_gdx_graphics_glutils_ETC1_getWidthPKM(JNIEnv * env,jclass clazz,jobject obj_header,jint offset)40 JNIEXPORT jint JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_getWidthPKM(JNIEnv* env, jclass clazz, jobject obj_header, jint offset) {
41 char* header = (char*)(obj_header?env->GetDirectBufferAddress(obj_header):0);
42
43 jint JNI_returnValue = wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_getWidthPKM(env, clazz, obj_header, offset, header);
44
45
46 return JNI_returnValue;
47 }
48
wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_getHeightPKM(JNIEnv * env,jclass clazz,jobject obj_header,jint offset,char * header)49 static inline jint wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_getHeightPKM
50 (JNIEnv* env, jclass clazz, jobject obj_header, jint offset, char* header) {
51
52 //@line:228
53
54 return etc1_pkm_get_height((etc1_byte*)header + offset);
55
56 }
57
Java_com_badlogic_gdx_graphics_glutils_ETC1_getHeightPKM(JNIEnv * env,jclass clazz,jobject obj_header,jint offset)58 JNIEXPORT jint JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_getHeightPKM(JNIEnv* env, jclass clazz, jobject obj_header, jint offset) {
59 char* header = (char*)(obj_header?env->GetDirectBufferAddress(obj_header):0);
60
61 jint JNI_returnValue = wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_getHeightPKM(env, clazz, obj_header, offset, header);
62
63
64 return JNI_returnValue;
65 }
66
wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_isValidPKM(JNIEnv * env,jclass clazz,jobject obj_header,jint offset,char * header)67 static inline jboolean wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_isValidPKM
68 (JNIEnv* env, jclass clazz, jobject obj_header, jint offset, char* header) {
69
70 //@line:235
71
72 return etc1_pkm_is_valid((etc1_byte*)header + offset) != 0?true:false;
73
74 }
75
Java_com_badlogic_gdx_graphics_glutils_ETC1_isValidPKM(JNIEnv * env,jclass clazz,jobject obj_header,jint offset)76 JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_isValidPKM(JNIEnv* env, jclass clazz, jobject obj_header, jint offset) {
77 char* header = (char*)(obj_header?env->GetDirectBufferAddress(obj_header):0);
78
79 jboolean JNI_returnValue = wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_isValidPKM(env, clazz, obj_header, offset, header);
80
81
82 return JNI_returnValue;
83 }
84
Java_com_badlogic_gdx_graphics_glutils_ETC1_decodeImage(JNIEnv * env,jclass clazz,jobject obj_compressedData,jint offset,jobject obj_decodedData,jint offsetDec,jint width,jint height,jint pixelSize)85 JNIEXPORT void JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_decodeImage(JNIEnv* env, jclass clazz, jobject obj_compressedData, jint offset, jobject obj_decodedData, jint offsetDec, jint width, jint height, jint pixelSize) {
86 char* compressedData = (char*)(obj_compressedData?env->GetDirectBufferAddress(obj_compressedData):0);
87 char* decodedData = (char*)(obj_decodedData?env->GetDirectBufferAddress(obj_decodedData):0);
88
89
90 //@line:249
91
92 // Nothing to decode, or no target
93 if (compressedData == 0 || decodedData == 0) {
94 __android_log_print(ANDROID_LOG_VERBOSE, APP_LOG, "Invalid buffers, null pointer.");
95 return;
96 }
97
98 /// Verify if requested bounds are valid
99 jlong compressedLength = env->GetDirectBufferCapacity(obj_compressedData);
100 jlong decodedLength = env->GetDirectBufferCapacity(obj_decodedData);
101 if (offset < 0 || compressedLength - offset > decodedLength - offsetDec) {
102 __android_log_print(ANDROID_LOG_VERBOSE,
103 APP_LOG, "Invalid buffers, would cause heap overflow. %lu > %lu",
104 compressedLength - offset,
105 decodedLength - offsetDec);
106 return;
107 }
108
109 etc1_decode_image((etc1_byte*)compressedData + offset,
110 (etc1_byte*)decodedData + offsetDec,
111 width,
112 height,
113 pixelSize,
114 width * pixelSize);
115 }
116
wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_encodeImage(JNIEnv * env,jclass clazz,jobject obj_imageData,jint offset,jint width,jint height,jint pixelSize,char * imageData)117 static inline jobject wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_encodeImage
118 (JNIEnv* env, jclass clazz, jobject obj_imageData, jint offset, jint width, jint height, jint pixelSize, char* imageData) {
119
120 //@line:260
121
122 int compressedSize = etc1_get_encoded_data_size(width, height);
123 etc1_byte* compressedData = (etc1_byte*)malloc(compressedSize);
124 etc1_encode_image((etc1_byte*)imageData + offset, width, height, pixelSize, width * pixelSize, compressedData);
125 return env->NewDirectByteBuffer(compressedData, compressedSize);
126
127 }
128
Java_com_badlogic_gdx_graphics_glutils_ETC1_encodeImage(JNIEnv * env,jclass clazz,jobject obj_imageData,jint offset,jint width,jint height,jint pixelSize)129 JNIEXPORT jobject JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_encodeImage(JNIEnv* env, jclass clazz, jobject obj_imageData, jint offset, jint width, jint height, jint pixelSize) {
130 char* imageData = (char*)(obj_imageData?env->GetDirectBufferAddress(obj_imageData):0);
131
132 jobject JNI_returnValue = wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_encodeImage(env, clazz, obj_imageData, offset, width, height, pixelSize, imageData);
133
134
135 return JNI_returnValue;
136 }
137
wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_encodeImagePKM(JNIEnv * env,jclass clazz,jobject obj_imageData,jint offset,jint width,jint height,jint pixelSize,char * imageData)138 static inline jobject wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_encodeImagePKM
139 (JNIEnv* env, jclass clazz, jobject obj_imageData, jint offset, jint width, jint height, jint pixelSize, char* imageData) {
140
141 //@line:274
142
143 int compressedSize = etc1_get_encoded_data_size(width, height);
144 etc1_byte* compressed = (etc1_byte*)malloc(compressedSize + ETC_PKM_HEADER_SIZE);
145 etc1_pkm_format_header(compressed, width, height);
146 etc1_encode_image((etc1_byte*)imageData + offset, width, height, pixelSize, width * pixelSize, compressed + ETC_PKM_HEADER_SIZE);
147 return env->NewDirectByteBuffer(compressed, compressedSize + ETC_PKM_HEADER_SIZE);
148
149 }
150
Java_com_badlogic_gdx_graphics_glutils_ETC1_encodeImagePKM(JNIEnv * env,jclass clazz,jobject obj_imageData,jint offset,jint width,jint height,jint pixelSize)151 JNIEXPORT jobject JNICALL Java_com_badlogic_gdx_graphics_glutils_ETC1_encodeImagePKM(JNIEnv* env, jclass clazz, jobject obj_imageData, jint offset, jint width, jint height, jint pixelSize) {
152 char* imageData = (char*)(obj_imageData?env->GetDirectBufferAddress(obj_imageData):0);
153
154 jobject JNI_returnValue = wrapped_Java_com_badlogic_gdx_graphics_glutils_ETC1_encodeImagePKM(env, clazz, obj_imageData, offset, width, height, pixelSize, imageData);
155
156
157 return JNI_returnValue;
158 }
159
160