Remove unused imports and split long lines modified
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / preview / PreviewImageFragment.java
index 70ab80d..505a326 100644 (file)
@@ -30,9 +30,7 @@ import android.app.Activity;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.BitmapFactory.Options;
-import android.graphics.Matrix;
 import android.graphics.Point;
-import android.media.ExifInterface;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.support.v4.app.FragmentStatePagerAdapter;
@@ -55,6 +53,7 @@ import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
 import com.owncloud.android.ui.dialog.RemoveFileDialogFragment;
 import com.owncloud.android.ui.fragment.FileFragment;
+import com.owncloud.android.utils.BitmapUtils;
 import com.owncloud.android.utils.TouchImageViewCustom;
 
 
@@ -384,7 +383,8 @@ public class PreviewImageFragment extends FileFragment {
                 File picture = new File(storagePath);
 
                 if (picture != null) {
-                    //Decode file into a bitmap in real size for being able to make zoom on the image
+                    // Decode file into a bitmap in real size for being able to make zoom on 
+                    // the image
                     result = BitmapFactory.decodeStream(new FlushedInputStream
                             (new BufferedInputStream(new FileInputStream(picture))));
                 }
@@ -392,22 +392,29 @@ public class PreviewImageFragment extends FileFragment {
                 if (result == null) {
                     mErrorMessageId = R.string.preview_image_error_unknown_format;
                     Log_OC.e(TAG, "File could not be loaded as a bitmap: " + storagePath);
+                } else {
+                    // Rotate image, obeying exif tag.
+                    result = BitmapUtils.rotateImage(result, storagePath);
                 }
                 
             } catch (OutOfMemoryError e) {
                 Log_OC.e(TAG, "Out of memory occured for file " + storagePath, e);
 
-                // If out of memory error when loading image, try to load it scaled
+                // If out of memory error when loading or rotating image, try to load it scaled
                 result = loadScaledImage(storagePath);
 
                 if (result == null) {
                     mErrorMessageId = R.string.preview_image_error_unknown_format;
                     Log_OC.e(TAG, "File could not be loaded as a bitmap: " + storagePath);
+                } else {
+                    // Rotate scaled image, obeying exif tag
+                    result = BitmapUtils.rotateImage(result, storagePath);
                 }
                     
             } catch (NoSuchFieldError e) {
                 mErrorMessageId = R.string.common_error_unknown;
-                Log_OC.e(TAG, "Error from access to unexisting field despite protection; file " + storagePath, e);
+                Log_OC.e(TAG, "Error from access to unexisting field despite protection; file " 
+                                + storagePath, e);
                     
             } catch (Throwable t) {
                 mErrorMessageId = R.string.common_error_unknown;
@@ -415,79 +422,9 @@ public class PreviewImageFragment extends FileFragment {
                 
             }
             
-            result = rotateImage(result, storagePath);
-           
-            
             return result;
         }
         
-        /**
-         * Rotate bitmap according to EXIF orientation. 
-         * Cf. http://www.daveperrett.com/articles/2012/07/28/exif-orientation-handling-is-a-ghetto/ 
-         * @param bitmap Bitmap to be rotated
-         * @param storagePath Path to source file of bitmap. Needed for EXIF information. 
-         * @return correctly EXIF-rotated bitmap
-         */
-        private Bitmap rotateImage(Bitmap bitmap, String storagePath){
-            Bitmap resultBitmap = bitmap;
-
-            try
-            {
-                ExifInterface exifInterface = new ExifInterface(storagePath);
-                int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1);
-
-                Matrix matrix = new Matrix();
-
-                // 1: nothing to do
-                
-                // 2
-                if (orientation == ExifInterface.ORIENTATION_FLIP_HORIZONTAL)
-                {
-                    matrix.postScale(-1.0f, 1.0f);
-                }
-                // 3
-                else if (orientation == ExifInterface.ORIENTATION_ROTATE_180)
-                {
-                    matrix.postRotate(180);
-                }
-                // 4
-                else if (orientation == ExifInterface.ORIENTATION_FLIP_VERTICAL)
-                {
-                    matrix.postScale(1.0f, -1.0f);
-                }
-                // 5
-                else if (orientation == ExifInterface.ORIENTATION_TRANSPOSE)
-                {
-                    matrix.postRotate(-90);
-                    matrix.postScale(1.0f, -1.0f);
-                }
-                // 6
-                else if (orientation == ExifInterface.ORIENTATION_ROTATE_90)
-                {
-                    matrix.postRotate(90);
-                }
-                // 7
-                else if (orientation == ExifInterface.ORIENTATION_TRANSVERSE)
-                {
-                    matrix.postRotate(90);
-                    matrix.postScale(1.0f, -1.0f);
-                }
-                // 8
-                else if (orientation == ExifInterface.ORIENTATION_ROTATE_270)
-                {
-                    matrix.postRotate(270);
-                } 
-                
-                // Rotate the bitmap
-                resultBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
-            }
-            catch (Exception exception)
-            {
-                Log_OC.e(TAG, "Could not rotate the image: " + storagePath);
-            }
-            return resultBitmap;
-        }
-        
         @Override
         protected void onPostExecute(Bitmap result) {
             hideProgressWheel();