diff options
Diffstat (limited to 'android/source/src/java/org/libreoffice/canvas/ImageUtils.java')
-rw-r--r-- | android/source/src/java/org/libreoffice/canvas/ImageUtils.java | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/android/source/src/java/org/libreoffice/canvas/ImageUtils.java b/android/source/src/java/org/libreoffice/canvas/ImageUtils.java index fd62444c41be..b99d4256de27 100644 --- a/android/source/src/java/org/libreoffice/canvas/ImageUtils.java +++ b/android/source/src/java/org/libreoffice/canvas/ImageUtils.java @@ -1,24 +1,31 @@ package org.libreoffice.canvas; import android.graphics.Bitmap; +import android.graphics.Canvas; import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; public class ImageUtils { - /** - * Convert transparent pixels to gray ones. - */ - public static Bitmap bitmapToPressed(Bitmap input) { - Bitmap op = Bitmap.createBitmap(input.getWidth(), input.getHeight(), input.getConfig()); - for(int i=0; i<op.getWidth(); i++){ - for(int j=0; j<op.getHeight(); j++){ - int p = input.getPixel(i, j); - // assign gray color if the pixel in input is transparent. - int newColor = Color.alpha(p) == 0 ? Color.argb(255, 200, 200, 200) : p; - op.setPixel(i, j, newColor); - } - } - - return op; + public static Bitmap getBitmapForDrawable(Drawable drawable) { + drawable = drawable.mutate(); + + int width = !drawable.getBounds().isEmpty() ? + drawable.getBounds().width() : drawable.getIntrinsicWidth(); + + width = width <= 0 ? 1 : width; + + int height = !drawable.getBounds().isEmpty() ? + drawable.getBounds().height() : drawable.getIntrinsicHeight(); + + height = height <= 0 ? 1 : height; + + final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + drawable.draw(canvas); + + return bitmap; } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |