summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/data/UriImage.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/data/UriImage.java')
-rw-r--r--src/com/android/gallery3d/data/UriImage.java66
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() {