switch to alsa.omap3 module
[android_pandora.git] / apps / oi-filemanager / FileManager / src / org / openintents / filemanager / util / ImageUtils.java
1 package org.openintents.filemanager.util;\r
2 \r
3 import android.graphics.Bitmap;\r
4 import android.graphics.Canvas;\r
5 import android.graphics.Matrix;\r
6 import android.graphics.drawable.BitmapDrawable;\r
7 import android.graphics.drawable.Drawable;\r
8 \r
9 public final class ImageUtils {\r
10 \r
11         /**\r
12          * Resizes specific a Bitmap with keeping ratio.\r
13          */\r
14         public static Bitmap resizeBitmap(Bitmap drawable, int desireWidth,\r
15                         int desireHeight) {\r
16                 int width = drawable.getWidth();\r
17                 int height = drawable.getHeight();\r
18 \r
19                 if (0 < width && 0 < height && desireWidth < width\r
20                                 || desireHeight < height) {\r
21                         // Calculate scale\r
22                         float scale;\r
23                         if (width < height) {\r
24                                 scale = (float) desireHeight / (float) height;\r
25                                 if (desireWidth < width * scale) {\r
26                                         scale = (float) desireWidth / (float) width;\r
27                                 }\r
28                         } else {\r
29                                 scale = (float) desireWidth / (float) width;\r
30                         }\r
31 \r
32                         // Draw resized image\r
33                         Matrix matrix = new Matrix();\r
34                         matrix.postScale(scale, scale);\r
35                         Bitmap bitmap = Bitmap.createBitmap(drawable, 0, 0, width, height,\r
36                                         matrix, true);\r
37                         Canvas canvas = new Canvas(bitmap);\r
38                         canvas.drawBitmap(bitmap, 0, 0, null);\r
39 \r
40                         drawable = bitmap;\r
41                 }\r
42 \r
43                 return drawable;\r
44         }\r
45 \r
46         /**\r
47          * Resizes specific a Drawable with keeping ratio.\r
48          */\r
49         public static Drawable resizeDrawable(Drawable drawable, int desireWidth,\r
50                         int desireHeight) {\r
51                 int width = drawable.getIntrinsicWidth();\r
52                 int height = drawable.getIntrinsicHeight();\r
53 \r
54                 if (0 < width && 0 < height && desireWidth < width\r
55                                 || desireHeight < height) {\r
56                         drawable = new BitmapDrawable(resizeBitmap(\r
57                                         ((BitmapDrawable) drawable).getBitmap(), desireWidth,\r
58                                         desireHeight));\r
59                 }\r
60 \r
61                 return drawable;\r
62         }\r
63 \r
64 }\r