add OI File Manager and AndroidSupportV2 used by it
[android_pandora.git] / apps / oi-filemanager / FileManager / src / org / openintents / filemanager / util / ImageUtils.java
diff --git a/apps/oi-filemanager/FileManager/src/org/openintents/filemanager/util/ImageUtils.java b/apps/oi-filemanager/FileManager/src/org/openintents/filemanager/util/ImageUtils.java
new file mode 100644 (file)
index 0000000..8428493
--- /dev/null
@@ -0,0 +1,64 @@
+package org.openintents.filemanager.util;\r
+\r
+import android.graphics.Bitmap;\r
+import android.graphics.Canvas;\r
+import android.graphics.Matrix;\r
+import android.graphics.drawable.BitmapDrawable;\r
+import android.graphics.drawable.Drawable;\r
+\r
+public final class ImageUtils {\r
+\r
+       /**\r
+        * Resizes specific a Bitmap with keeping ratio.\r
+        */\r
+       public static Bitmap resizeBitmap(Bitmap drawable, int desireWidth,\r
+                       int desireHeight) {\r
+               int width = drawable.getWidth();\r
+               int height = drawable.getHeight();\r
+\r
+               if (0 < width && 0 < height && desireWidth < width\r
+                               || desireHeight < height) {\r
+                       // Calculate scale\r
+                       float scale;\r
+                       if (width < height) {\r
+                               scale = (float) desireHeight / (float) height;\r
+                               if (desireWidth < width * scale) {\r
+                                       scale = (float) desireWidth / (float) width;\r
+                               }\r
+                       } else {\r
+                               scale = (float) desireWidth / (float) width;\r
+                       }\r
+\r
+                       // Draw resized image\r
+                       Matrix matrix = new Matrix();\r
+                       matrix.postScale(scale, scale);\r
+                       Bitmap bitmap = Bitmap.createBitmap(drawable, 0, 0, width, height,\r
+                                       matrix, true);\r
+                       Canvas canvas = new Canvas(bitmap);\r
+                       canvas.drawBitmap(bitmap, 0, 0, null);\r
+\r
+                       drawable = bitmap;\r
+               }\r
+\r
+               return drawable;\r
+       }\r
+\r
+       /**\r
+        * Resizes specific a Drawable with keeping ratio.\r
+        */\r
+       public static Drawable resizeDrawable(Drawable drawable, int desireWidth,\r
+                       int desireHeight) {\r
+               int width = drawable.getIntrinsicWidth();\r
+               int height = drawable.getIntrinsicHeight();\r
+\r
+               if (0 < width && 0 < height && desireWidth < width\r
+                               || desireHeight < height) {\r
+                       drawable = new BitmapDrawable(resizeBitmap(\r
+                                       ((BitmapDrawable) drawable).getBitmap(), desireWidth,\r
+                                       desireHeight));\r
+               }\r
+\r
+               return drawable;\r
+       }\r
+\r
+}\r