diff options
6 files changed, 48 insertions, 42 deletions
diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java index 3c64fa32b..c60c3b9e2 100644 --- a/src/com/android/gallery3d/app/PhotoPage.java +++ b/src/com/android/gallery3d/app/PhotoPage.java @@ -578,8 +578,9 @@ public class PhotoPage extends ActivityState implements } Intent intent = new Intent(ACTION_NEXTGEN_EDIT); - intent.setData(mActivity.getDataManager().getContentUri(current.getPath())).setFlags( - Intent.FLAG_GRANT_READ_URI_PERMISSION); + + intent.setDataAndType(current.getContentUri(), current.getMimeType()) + .setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); if (mActivity.getPackageManager() .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY).size() == 0) { intent.setAction(Intent.ACTION_EDIT); diff --git a/src/com/android/gallery3d/data/LocalImage.java b/src/com/android/gallery3d/data/LocalImage.java index c19649c3e..ffcf9760a 100644 --- a/src/com/android/gallery3d/data/LocalImage.java +++ b/src/com/android/gallery3d/data/LocalImage.java @@ -249,6 +249,8 @@ public class LocalImage extends LocalMediaItem { if (usePanoramaViewer()) { operation |= SUPPORT_PANORAMA; + // disable destructive rotate for lightcycle panorama + operation &= ~SUPPORT_ROTATE; } return operation; } diff --git a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java index 100a17bf0..ac16c13cd 100644 --- a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java +++ b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java @@ -1,22 +1,7 @@ package com.android.gallery3d.filtershow.cache; -import java.io.Closeable; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.util.Vector; - -import com.android.gallery3d.common.Utils; -import com.android.gallery3d.filtershow.FilterShowActivity; -import com.android.gallery3d.filtershow.HistoryAdapter; -import com.android.gallery3d.filtershow.imageshow.ImageShow; -import com.android.gallery3d.filtershow.presets.ImagePreset; -import com.android.gallery3d.filtershow.tools.SaveCopyTask; -import com.android.gallery3d.filtershow.tools.ProcessedBitmap; -import com.android.gallery3d.R; - +import android.content.ContentResolver; import android.content.Context; import android.content.res.Resources; import android.database.Cursor; @@ -29,6 +14,22 @@ import android.net.Uri; import android.provider.MediaStore; import android.util.Log; +import com.android.gallery3d.R; +import com.android.gallery3d.common.Utils; +import com.android.gallery3d.filtershow.FilterShowActivity; +import com.android.gallery3d.filtershow.HistoryAdapter; +import com.android.gallery3d.filtershow.imageshow.ImageShow; +import com.android.gallery3d.filtershow.presets.ImagePreset; +import com.android.gallery3d.filtershow.tools.ProcessedBitmap; +import com.android.gallery3d.filtershow.tools.SaveCopyTask; + +import java.io.Closeable; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.util.Vector; + public class ImageLoader { private static final String LOGTAG = "ImageLoader"; @@ -66,6 +67,10 @@ public class ImageLoader { } private int getOrientation(Uri uri) { + if (ContentResolver.SCHEME_FILE.equals(uri.getScheme())) { + return getOrientationFromPath(uri.getPath()); + } + Cursor cursor = null; try { cursor = mContext.getContentResolver().query(uri, @@ -73,17 +78,12 @@ public class ImageLoader { MediaStore.Images.ImageColumns.ORIENTATION }, null, null, null); + return cursor.moveToNext() ? cursor.getInt(0) : -1; } catch (SQLiteException e){ - Utils.closeSilently(cursor); return ExifInterface.ORIENTATION_UNDEFINED; + } finally { + Utils.closeSilently(cursor); } - - if (cursor.getCount() != 1) { - return -1; - } - - cursor.moveToFirst(); - return cursor.getInt(0); } private int getOrientationFromPath(String path) { diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterGradient.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterGradient.java index 4e46943fc..d27dd34b6 100644 --- a/src/com/android/gallery3d/filtershow/filters/ImageFilterGradient.java +++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterGradient.java @@ -25,9 +25,8 @@ public class ImageFilterGradient extends ImageFilter { @Override public ImageFilter clone() throws CloneNotSupportedException { ImageFilterGradient filter = (ImageFilterGradient) super.clone(); - for (int i = 0; i < mColors.length; i++) { - filter.addColor(mColors[i], mPositions[i]); - } + System.arraycopy(mColors, 0, filter.mColors, 0, mColors.length); + System.arraycopy(mPositions, 0, filter.mPositions, 0, mPositions.length); return filter; } diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java b/src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java index fbc4666c0..c4f0456cb 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageStraighten.java @@ -89,12 +89,19 @@ public class ImageStraighten extends ImageShow { public void setActionUp() { mMode = MODES.UP; + updatePreset(); } public void setNoAction() { mMode = MODES.NONE; } + private void updatePreset() { + ImagePreset copy = new ImagePreset(getImagePreset()); + copy.setStraightenRotation(mImageRotation, mImageRotationZoomFactor); + setImagePreset(copy); + } + public boolean onTouchEvent(MotionEvent event) { switch (event.getActionMasked()) { case (MotionEvent.ACTION_DOWN): @@ -232,13 +239,6 @@ public class ImageStraighten extends ImageShow { mImageRotationZoomFactor = (float) (rw / boundsRect.width()); - ImagePreset copy = new ImagePreset(getImagePreset()); - Log.v(LOGTAG, "creating a new image preset with rotation " + mImageRotation - + " and zoom factor: " + mImageRotationZoomFactor); - - copy.setStraightenRotation(mImageRotation, mImageRotationZoomFactor); - setImagePreset(copy); - if (mMode == MODES.MOVE) { canvas.save(); canvas.clipPath(path); diff --git a/src/com/android/gallery3d/ui/PhotoView.java b/src/com/android/gallery3d/ui/PhotoView.java index 8c9c6d757..a5a15bf43 100644 --- a/src/com/android/gallery3d/ui/PhotoView.java +++ b/src/com/android/gallery3d/ui/PhotoView.java @@ -941,6 +941,8 @@ public class PhotoView extends GLView { private int mDeltaY; // The accumulated scaling change from a scaling gesture. private float mAccScale; + // If an onFling happened after the last onDown + private boolean mHadFling; @Override public boolean onSingleTapUp(float x, float y) { @@ -1059,6 +1061,7 @@ public class PhotoView extends GLView { } else { flingImages(velocityX, velocityY); } + mHadFling = true; return true; } @@ -1212,7 +1215,7 @@ public class PhotoView extends GLView { } else { mDownInScrolling = false; } - + mHadFling = false; mScrolledAfterDown = false; if (mFilmMode) { int xi = (int) (x + 0.5f); @@ -1256,8 +1259,11 @@ public class PhotoView extends GLView { mIgnoreUpEvent = false; return; } - - snapback(); + if (!mFilmMode || mHadFling) { + snapback(); + } else { + snapToNeighborImage(); + } } public void setSwipingEnabled(boolean enabled) { @@ -1531,14 +1537,12 @@ public class PhotoView extends GLView { private void snapback() { if ((mHolding & ~HOLD_DELETE) != 0) return; - if (!snapToNeighborImage()) { + if (mFilmMode || !snapToNeighborImage()) { mPositionController.snapback(); } } private boolean snapToNeighborImage() { - if (mFilmMode) return false; - Rect r = mPositionController.getPosition(0); int viewW = getWidth(); // Setting the move threshold proportional to the width of the view |