summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d')
-rw-r--r--src/com/android/gallery3d/filtershow/FilterShowActivity.java7
-rw-r--r--src/com/android/gallery3d/filtershow/crop/CropLoader.java56
-rw-r--r--src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java6
-rw-r--r--src/com/android/gallery3d/filtershow/state/StateView.java1
4 files changed, 46 insertions, 24 deletions
diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
index 1cef27170..fbe09b999 100644
--- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java
+++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java
@@ -31,6 +31,7 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
@@ -41,6 +42,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
+import android.view.ViewPropertyAnimator;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
@@ -209,7 +211,10 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL
View container = mainPanel.getView().findViewById(R.id.category_panel_container);
View bottom = mainPanel.getView().findViewById(R.id.bottom_panel);
int panelHeight = container.getHeight() + bottom.getHeight();
- mainPanel.getView().animate().translationY(panelHeight).withEndAction(showEditor).start();
+ ViewPropertyAnimator anim = mainPanel.getView().animate();
+ anim.translationY(panelHeight).start();
+ final Handler handler = new Handler();
+ handler.postDelayed(showEditor, anim.getDuration());
} else {
showEditor.run();
}
diff --git a/src/com/android/gallery3d/filtershow/crop/CropLoader.java b/src/com/android/gallery3d/filtershow/crop/CropLoader.java
index fc461f5d0..53a9ebc14 100644
--- a/src/com/android/gallery3d/filtershow/crop/CropLoader.java
+++ b/src/com/android/gallery3d/filtershow/crop/CropLoader.java
@@ -30,6 +30,7 @@ import android.provider.MediaStore;
import android.provider.MediaStore.Images;
import android.provider.MediaStore.Images.ImageColumns;
import android.util.Log;
+import android.webkit.MimeTypeMap;
import com.android.gallery3d.common.Utils;
import com.android.gallery3d.exif.ExifInterface;
@@ -64,39 +65,45 @@ public abstract class CropLoader {
if (uri == null || context == null) {
throw new IllegalArgumentException("bad argument to getScaledBitmap");
}
- if (ContentResolver.SCHEME_FILE.equals(uri.getScheme())) {
- String mimeType = context.getContentResolver().getType(uri);
- if (mimeType != JPEG_MIME_TYPE) {
- return 0;
- }
- String path = uri.getPath();
- int orientation = 0;
- ExifInterface exif = new ExifInterface();
- try {
- exif.readExif(path);
- orientation = ExifInterface.getRotationForOrientationValue(
- exif.getTagIntValue(ExifInterface.TAG_ORIENTATION).shortValue());
- } catch (IOException e) {
- Log.w(LOGTAG, "Failed to read EXIF orientation", e);
- }
- return orientation;
- }
+
+ // First try to find orientation data in Gallery's ContentProvider.
Cursor cursor = null;
try {
cursor = context.getContentResolver().query(uri,
new String[] { MediaStore.Images.ImageColumns.ORIENTATION },
null, null, null);
- if (cursor.moveToNext()) {
+ if (cursor != null && cursor.moveToNext()) {
int ori = cursor.getInt(0);
return (ori < 0) ? 0 : ori;
}
} catch (SQLiteException e) {
- return 0;
+ // Do nothing
} catch (IllegalArgumentException e) {
- return 0;
+ // Do nothing
} finally {
Utils.closeSilently(cursor);
}
+
+ // Fall back to checking EXIF tags in file.
+ if (ContentResolver.SCHEME_FILE.equals(uri.getScheme())) {
+ String mimeType = getMimeType(uri);
+ if (!JPEG_MIME_TYPE.equals(mimeType)) {
+ return 0;
+ }
+ String path = uri.getPath();
+ int orientation = 0;
+ ExifInterface exif = new ExifInterface();
+ try {
+ exif.readExif(path);
+ Integer tagval = exif.getTagIntValue(ExifInterface.TAG_ORIENTATION);
+ if (tagval != null) {
+ orientation = ExifInterface.getRotationForOrientationValue(tagval.shortValue());
+ }
+ } catch (IOException e) {
+ Log.w(LOGTAG, "Failed to read EXIF orientation", e);
+ }
+ return orientation;
+ }
return 0;
}
@@ -252,6 +259,15 @@ public abstract class CropLoader {
return dir[0];
}
+ private static String getMimeType(Uri src) {
+ String postfix = MimeTypeMap.getFileExtensionFromUrl(src.toString());
+ String ret = null;
+ if (postfix != null) {
+ ret = MimeTypeMap.getSingleton().getMimeTypeFromExtension(postfix);
+ }
+ return ret;
+ }
+
public static Uri insertContent(Context context, Uri sourceUri, File file, String saveFileName,
long time) {
time /= 1000;
diff --git a/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java b/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java
index 701fabba7..c95a15a99 100644
--- a/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java
+++ b/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java
@@ -24,7 +24,7 @@ public class FilterRepresentation implements Cloneable {
private static final boolean DEBUG = false;
private String mName;
private int mPriority = TYPE_NORMAL;
- private Class mFilterClass;
+ private Class<?> mFilterClass;
private boolean mSupportsPartialRendering = false;
private int mTextId = 0;
private int mEditorId = BasicEditor.ID;
@@ -157,11 +157,11 @@ public class FilterRepresentation implements Cloneable {
return false;
}
- public Class getFilterClass() {
+ public Class<?> getFilterClass() {
return mFilterClass;
}
- public void setFilterClass(Class filterClass) {
+ public void setFilterClass(Class<?> filterClass) {
mFilterClass = filterClass;
}
diff --git a/src/com/android/gallery3d/filtershow/state/StateView.java b/src/com/android/gallery3d/filtershow/state/StateView.java
index 9353a430a..73d57846a 100644
--- a/src/com/android/gallery3d/filtershow/state/StateView.java
+++ b/src/com/android/gallery3d/filtershow/state/StateView.java
@@ -78,6 +78,7 @@ public class StateView extends View {
mTextColor = res.getColor(R.color.filtershow_stateview_text);
mSelectedBackgroundColor = res.getColor(R.color.filtershow_stateview_selected_background);
mSelectedTextColor = res.getColor(R.color.filtershow_stateview_selected_text);
+ mTextSize = res.getDimensionPixelSize(R.dimen.state_panel_text_size);
}
public String getText() {