|
@@ -301,134 +301,3 @@ problems:
|
|
|
|
|
|
return NULL;
|
|
|
}
|
|
|
-
|
|
|
-JNIEXPORT jobject JNICALL Java_com_jme3_texture_plugins_AndroidNativeImageLoader_getFailureReason
|
|
|
- (JNIEnv * env, jclass clazz)
|
|
|
-{
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-
|
|
|
-JNIEXPORT jint JNICALL Java_com_jme3_texture_plugins_AndroidNativeImageLoader_getImageInfo
|
|
|
- (JNIEnv * env, jclass clazz, jobject inBuffer, jint bufSize, jobject outBuffer, jint outSize)
|
|
|
-{
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-JNIEXPORT jint JNICALL Java_com_jme3_texture_plugins_AndroidNativeImageLoader_decodeBuffer
|
|
|
- (JNIEnv * env, jclass clazz, jobject inBuffer, jint inSize, jboolean flipY, jobject outBuffer, jint outSize)
|
|
|
-{
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
-JNIEXPORT jobject JNICALL Java_com_jme3_texture_plugins_AndroidNativeImageLoader_getFailureReason
|
|
|
- (JNIEnv * env, jclass clazz)
|
|
|
-{
|
|
|
- return stbi_failure_reason();
|
|
|
-}
|
|
|
-
|
|
|
-JNIEXPORT jint JNICALL Java_com_jme3_texture_plugins_AndroidNativeImageLoader_getImageInfo
|
|
|
- (JNIEnv * env, jclass clazz, jobject inBuffer, jint bufSize, jobject outBuffer, jint outSize)
|
|
|
-{
|
|
|
- stbi_uc* pInBuffer = (stbi_uc*) (*env)->GetDirectBufferAddress(env, inBuffer);
|
|
|
- stbi_uc* pOutBuffer = (stbi_uc*) (*env)->GetDirectBufferAddress(env, outBuffer);
|
|
|
- uint32 width, height, comp;
|
|
|
-
|
|
|
- uint32 result = stbi_info_from_memory(pInBuffer, bufSize, &width, &height, &comp);
|
|
|
- if (result == 1) {
|
|
|
- uint32 numBytes = (width) * (height) * (comp);
|
|
|
-
|
|
|
- __android_log_print(ANDROID_LOG_INFO, "NativeImageLoader", "getImageInfo width: %d", width);
|
|
|
- __android_log_print(ANDROID_LOG_INFO, "NativeImageLoader", "getImageInfo height: %d", height);
|
|
|
- __android_log_print(ANDROID_LOG_INFO, "NativeImageLoader", "getImageInfo comp: %d", comp);
|
|
|
- __android_log_print(ANDROID_LOG_INFO, "NativeImageLoader", "getImageInfo data size: %d", numBytes);
|
|
|
-
|
|
|
- // each element is a 4 byte int
|
|
|
- if (outSize != 12) {
|
|
|
- return 2;
|
|
|
- }
|
|
|
- memcpy(pOutBuffer+0, &width, 4);
|
|
|
- memcpy(pOutBuffer+4, &height, 4);
|
|
|
- memcpy(pOutBuffer+8, &comp, 4);
|
|
|
-
|
|
|
- return (jint) 0;
|
|
|
- }
|
|
|
-
|
|
|
- return 1;
|
|
|
-}
|
|
|
-
|
|
|
-JNIEXPORT jint JNICALL Java_com_jme3_texture_plugins_AndroidNativeImageLoader_decodeBuffer
|
|
|
- (JNIEnv * env, jclass clazz, jobject inBuffer, jint inSize, jboolean flipY, jobject outBuffer, jint outSize)
|
|
|
-{
|
|
|
- stbi_uc* pInBuffer = (stbi_uc*) (*env)->GetDirectBufferAddress(env, inBuffer);
|
|
|
- stbi_uc* pOutBuffer = (stbi_uc*) (*env)->GetDirectBufferAddress(env, outBuffer);
|
|
|
- uint32 width, height, comp;
|
|
|
- uint32 req_comp = 0;
|
|
|
-
|
|
|
- stbi_uc* pData = stbi_load_from_memory(pInBuffer, inSize, &width, &height, &comp, req_comp);
|
|
|
- if(pData == NULL) {
|
|
|
- return 1;
|
|
|
- }
|
|
|
- uint32 numBytes = width * height * comp;
|
|
|
-
|
|
|
- __android_log_print(ANDROID_LOG_INFO, "NativeImageLoader", "decodeBuffer width: %d", width);
|
|
|
- __android_log_print(ANDROID_LOG_INFO, "NativeImageLoader", "decodeBuffer height: %d", height);
|
|
|
- __android_log_print(ANDROID_LOG_INFO, "NativeImageLoader", "decodeBuffer comp: %d", comp);
|
|
|
- __android_log_print(ANDROID_LOG_INFO, "NativeImageLoader", "decodeBuffer data size: %d", numBytes);
|
|
|
-
|
|
|
- if (numBytes != outSize) {
|
|
|
- return 2;
|
|
|
- }
|
|
|
-
|
|
|
- int i;
|
|
|
-// for (i=0; i<outSize; i+=4) {
|
|
|
-// __android_log_print(ANDROID_LOG_INFO, "NativeImageLoader",
|
|
|
-// "pData byte[%d] r: %02x, g: %02x, b: %02x, a: %02x",
|
|
|
-// i, *(pData+i), *(pData+i+1), *(pData+i+2), *(pData+i+3));
|
|
|
-// }
|
|
|
-
|
|
|
- if (!flipY) {
|
|
|
- memcpy(pOutBuffer, pData, outSize);
|
|
|
- stbi_image_free(pData);
|
|
|
- return 0;
|
|
|
- } else {
|
|
|
- uint32 yNew = 0;
|
|
|
- uint32 yOrig = 0;
|
|
|
- // stb_image always outputs in bpp = 8
|
|
|
- uint32 bytesPerLine = (width * comp);
|
|
|
- stbi_uc* newData = (stbi_uc *) malloc(bytesPerLine * height);
|
|
|
- if (newData == NULL) {
|
|
|
- stbi_image_free(pData);
|
|
|
- return 3;
|
|
|
- }
|
|
|
-
|
|
|
- for (yOrig = 0; yOrig < height; yOrig++){
|
|
|
- yNew = height - yOrig - 1;
|
|
|
-// __android_log_print(ANDROID_LOG_INFO, "NativeImageLoader", "yOrig: %d, yNew: %d, bytes: %d", yOrig, yNew, bytesPerLine);
|
|
|
- memcpy(newData + (yNew * bytesPerLine), pData + (yOrig * bytesPerLine), bytesPerLine);
|
|
|
- }
|
|
|
-
|
|
|
-// for (i=0; i<outSize; i+=4) {
|
|
|
-// __android_log_print(ANDROID_LOG_INFO, "NativeImageLoader",
|
|
|
-// "newData byte[%d] r: %02x, g: %02x, b: %02x, a: %02x",
|
|
|
-// i, *(newData+i), *(newData+i+1), *(newData+i+2), *(newData+i+3));
|
|
|
-// }
|
|
|
-
|
|
|
- memcpy(pOutBuffer, newData, outSize);
|
|
|
-
|
|
|
-// for (i=0; i<outSize; i+=4) {
|
|
|
-// __android_log_print(ANDROID_LOG_INFO, "NativeImageLoader",
|
|
|
-// "pOutBuffer byte[%d] r: %02x, g: %02x, b: %02x, a: %02x",
|
|
|
-// i, *(pOutBuffer+i), *(pOutBuffer+i+1), *(pOutBuffer+i+2), *(pOutBuffer+i+3));
|
|
|
-// }
|
|
|
-
|
|
|
- stbi_image_free(pData);
|
|
|
- free(newData);
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-
|
|
|
-// stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp);
|
|
|
-}
|
|
|
-*/
|