| 124 | } |
| 125 | |
| 126 | Java::LocalObject |
| 127 | NativeView::LoadFileTiff(JNIEnv *env, Path path) |
| 128 | { |
| 129 | UncompressedImage image = LoadTiff(path); |
| 130 | |
| 131 | // create a Bitmap.Config enum |
| 132 | Java::String config_name(env, "ARGB_8888"); |
| 133 | Java::LocalObject bitmap_config{env, |
| 134 | env->CallStaticObjectMethod(clsBitmapConfig, bitmapConfigValueOf_method, |
| 135 | config_name.Get())}; |
| 136 | |
| 137 | // convert ABGR to ARGB |
| 138 | // TODO: I am not sure if this conversion depends on endianess. So |
| 139 | // it might be wrong for Intel CPUs?! |
| 140 | ConvertABGRToARGB(image); |
| 141 | |
| 142 | // create int array |
| 143 | unsigned size = image.GetWidth() * image.GetHeight(); |
| 144 | Java::LocalRef<jintArray> intArray{env, env->NewIntArray(size)}; |
| 145 | env->SetIntArrayRegion(intArray, 0, size, static_cast<const jint*>(image.GetData())); |
| 146 | |
| 147 | // call Bitmap.createBitmap() |
| 148 | return {env, |
| 149 | env->CallStaticObjectMethod(clsBitmap, createBitmap_method, |
| 150 | intArray.Get(), |
| 151 | image.GetWidth(), image.GetHeight(), |
| 152 | bitmap_config.Get())}; |
| 153 | } |
| 154 | |
| 155 | Java::LocalObject |
| 156 | NativeView::LoadFileBitmap(JNIEnv *env, Path path) |