diff options
Diffstat (limited to 'src/com/android/gallery3d/data/UriImage.java')
-rw-r--r-- | src/com/android/gallery3d/data/UriImage.java | 66 |
1 files changed, 6 insertions, 60 deletions
diff --git a/src/com/android/gallery3d/data/UriImage.java b/src/com/android/gallery3d/data/UriImage.java index aaa36a917..e8875b572 100644 --- a/src/com/android/gallery3d/data/UriImage.java +++ b/src/com/android/gallery3d/data/UriImage.java @@ -17,7 +17,6 @@ package com.android.gallery3d.data; import android.content.ContentResolver; -import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory.Options; @@ -26,12 +25,9 @@ import android.net.Uri; import android.os.ParcelFileDescriptor; import com.android.gallery3d.app.GalleryApp; +import com.android.gallery3d.app.PanoramaMetadataSupport; import com.android.gallery3d.common.BitmapUtils; import com.android.gallery3d.common.Utils; -import com.android.gallery3d.util.Future; -import com.android.gallery3d.util.FutureListener; -import com.android.gallery3d.util.LightCycleHelper; -import com.android.gallery3d.util.LightCycleHelper.PanoramaMetadata; import com.android.gallery3d.util.ThreadPool.CancelListener; import com.android.gallery3d.util.ThreadPool.Job; import com.android.gallery3d.util.ThreadPool.JobContext; @@ -59,12 +55,7 @@ public class UriImage extends MediaItem { private int mWidth; private int mHeight; private int mRotation; - - private Object mLock = new Object(); - private Future<PanoramaMetadata> mGetPanoMetadataTask; - private boolean mPanoramaMetadataInitialized; - private PanoramaMetadata mPanoramaMetadata; - private SupportedOperationsListener mListener; + private PanoramaMetadataSupport mPanoramaMetadata = new PanoramaMetadataSupport(this); private GalleryApp mApplication; @@ -225,62 +216,17 @@ public class UriImage extends MediaItem { if (BitmapUtils.isSupportedByRegionDecoder(mContentType)) { supported |= SUPPORT_FULL_IMAGE; } - if (mPanoramaMetadata != null && mPanoramaMetadata.mUsePanoramaViewer) { - supported |= SUPPORT_PANORAMA; - if (mPanoramaMetadata.mIsPanorama360) { - supported |= SUPPORT_PANORAMA360; - // disable destructive crop for 360 degree panorama - supported &= ~SUPPORT_CROP; - } - } return supported; } @Override - public int getSupportedOperations(boolean getAll) { - synchronized (mLock) { - if (getAll && !mPanoramaMetadataInitialized) { - if (mGetPanoMetadataTask == null) { - mGetPanoMetadataTask = getThreadPool().submit( - new PanoramaMetadataJob(mApplication.getAndroidContext(), - getContentUri())); - } - mPanoramaMetadata = mGetPanoMetadataTask.get(); - mPanoramaMetadataInitialized = true; - } - } - return getSupportedOperations(); + public void getPanoramaSupport(PanoramaSupportCallback callback) { + mPanoramaMetadata.getPanoramaSupport(mApplication, callback); } @Override - public void setSupportedOperationsListener(SupportedOperationsListener l) { - synchronized (mLock) { - if (l != null) { - if (mGetPanoMetadataTask != null) { - mGetPanoMetadataTask.cancel(); - mGetPanoMetadataTask = null; - } - } else { - if (mGetPanoMetadataTask == null) { - mGetPanoMetadataTask = getThreadPool().submit( - new PanoramaMetadataJob(mApplication.getAndroidContext(), - getContentUri()), - new FutureListener<PanoramaMetadata>() { - @Override - public void onFutureDone(Future<PanoramaMetadata> future) { - mGetPanoMetadataTask = null; - if (future.isCancelled()) return; - mPanoramaMetadata = future.get(); - mPanoramaMetadataInitialized = true; - if (mListener != null) { - mListener.onChange(UriImage.this, getSupportedOperations()); - } - } - }); - } - } - mListener = l; - } + public void clearCachedPanoramaSupport() { + mPanoramaMetadata.clearCachedValues(); } private boolean isSharable() { |