android: convert unsupported bitmap formats

- might fix png8 on older devices
This commit is contained in:
Hannes Janetzek
2014-10-09 03:43:49 +02:00
parent ded178be6c
commit 7053cf8405

View File

@@ -16,6 +16,8 @@
*/ */
package org.oscim.android.canvas; package org.oscim.android.canvas;
import static android.graphics.Bitmap.Config.ARGB_8888;
import java.io.InputStream; import java.io.InputStream;
import android.graphics.Bitmap; import android.graphics.Bitmap;
@@ -27,7 +29,13 @@ public class AndroidBitmap implements org.oscim.backend.canvas.Bitmap {
final Bitmap mBitmap; final Bitmap mBitmap;
public AndroidBitmap(InputStream inputStream) { public AndroidBitmap(InputStream inputStream) {
mBitmap = BitmapFactory.decodeStream(inputStream); Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
try {
GLUtils.getType(bitmap);
} catch (IllegalArgumentException e) {
bitmap = bitmap.copy(ARGB_8888, false);
}
mBitmap = bitmap;
} }
@Override @Override
@@ -40,7 +48,7 @@ public class AndroidBitmap implements org.oscim.backend.canvas.Bitmap {
*/ */
public AndroidBitmap(int width, int height, int format) { public AndroidBitmap(int width, int height, int format) {
mBitmap = android.graphics.Bitmap mBitmap = android.graphics.Bitmap
.createBitmap(width, height, android.graphics.Bitmap.Config.ARGB_8888); .createBitmap(width, height, ARGB_8888);
} }
public AndroidBitmap(android.graphics.Bitmap bitmap) { public AndroidBitmap(android.graphics.Bitmap bitmap) {
@@ -74,15 +82,15 @@ public class AndroidBitmap implements org.oscim.backend.canvas.Bitmap {
@Override @Override
public void uploadToTexture(boolean replace) { public void uploadToTexture(boolean replace) {
int format = GLUtils.getInternalFormat(mBitmap); int format = GLUtils.getInternalFormat(mBitmap);
int type = GLUtils.getType(mBitmap); int type = GLUtils.getType(mBitmap);
if (replace) if (replace)
GLUtils.texSubImage2D(GLES20.GL_TEXTURE_2D, 0, 0, 0, mBitmap, format, GLUtils.texSubImage2D(GLES20.GL_TEXTURE_2D, 0, 0, 0,
type); mBitmap, format, type);
else else
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, format, mBitmap, type, 0); GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, format,
mBitmap, type, 0);
} }
@Override @Override