1f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling/*
2f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling * Copyright (C) 2013 The Android Open Source Project
3f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling *
4f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling * Licensed under the Apache License, Version 2.0 (the "License");
5f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling * you may not use this file except in compliance with the License.
6f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling * You may obtain a copy of the License at
7f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling *
8f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling *      http://www.apache.org/licenses/LICENSE-2.0
9f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling *
10f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling * Unless required by applicable law or agreed to in writing, software
11f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling * distributed under the License is distributed on an "AS IS" BASIS,
12f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling * See the License for the specific language governing permissions and
14f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling * limitations under the License.
15f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling */
16f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling
17f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberlingpackage com.android.camera.data;
18f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling
19f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberlingimport android.content.Context;
20f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberlingimport android.net.Uri;
21f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling
228e963a5a6016d246184ed65906f9d103e92b17e2Sascha Haeberlingimport com.android.camera.util.PhotoSphereHelper;
23f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling
24f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling/**
25f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling * This class breaks out the off-thread panorama support.
26f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling */
27f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberlingpublic class PanoramaMetadataLoader {
28f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling    /**
297190c6a9018e95ff0c49642442c7a069e16a6a7aSascha Haeberling     * Extracts panorama metadata from the item with the given URI and fills the
307190c6a9018e95ff0c49642442c7a069e16a6a7aSascha Haeberling     * {@code metadata}.
31f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling     */
328e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger    public static boolean loadPanoramaMetadata(final Context context, Uri contentUri,
338ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde            Metadata metadata) {
348a2350a3d557465b53445685db0f9ac838cf90c5Angus Kong        PhotoSphereHelper.PanoramaMetadata panoramaMetadata =
358ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde              PhotoSphereHelper.getPanoramaMetadata(context, contentUri);
368e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger        // Note: The use of '==' here is in purpose as this is a singleton that
378e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger        // is returned if this is not a panorama, so pointer comparison works.
388e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger        if (panoramaMetadata == null || panoramaMetadata == PhotoSphereHelper.NOT_PANORAMA) {
398e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger            return false;
40f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling        }
417190c6a9018e95ff0c49642442c7a069e16a6a7aSascha Haeberling
428e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger        metadata.setPanorama(true);
438ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde        metadata.setPanorama360(panoramaMetadata.mIsPanorama360);
448ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde        metadata.setUsePanoramaViewer(panoramaMetadata.mUsePanoramaViewer);
458e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger
468e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger        return true;
47f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling    }
48f1f5186f7d3fd8bf35009d9e65a43914c664d82bSascha Haeberling}
49