1e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong/*
2e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * Copyright (C) 2013 The Android Open Source Project
3e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong *
4e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * Licensed under the Apache License, Version 2.0 (the "License");
5e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * you may not use this file except in compliance with the License.
6e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * You may obtain a copy of the License at
7e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong *
8e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong *      http://www.apache.org/licenses/LICENSE-2.0
9e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong *
10e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * Unless required by applicable law or agreed to in writing, software
11e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * distributed under the License is distributed on an "AS IS" BASIS,
12e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * See the License for the specific language governing permissions and
14e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * limitations under the License.
15e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong */
16e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong
17e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kongpackage com.android.camera.data;
18e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong
19e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kongimport android.content.Context;
20e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong
21e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong/**
22e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong * A helper class to load the metadata of
238ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * {@link FilmstripItem}.
24e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong */
25810b0b6c5e1539ddd94c3a268b3f03301c35998bAngus Kongpublic class MetadataLoader {
26e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong
27de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd    /**
28de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd     * Adds information to the data's metadata bundle if any is available and returns
29de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd     * true if metadata was added and false otherwise. In either case, sets
30de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd     * a flag indicating that we've cached any available metadata and don't need to
31de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd     * load metadata again for this particular item.
32de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd     *
338ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde     * TODO: Replace with more explicit polymorphism.
348ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde     *
35de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd     * @param context A context.
36de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd     * @param data The data to update metadata for.
37de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd     * @return true if any metadata was added to the data, false otherwise.
38de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd     */
398ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde    public static boolean loadMetadata(final Context context, final FilmstripItem data) {
40de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd        boolean metadataAdded = false;
418ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde        if (data.getAttributes().isImage()) {
428e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger            metadataAdded |= PanoramaMetadataLoader.loadPanoramaMetadata(
438e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger                    context, data.getData().getUri(), data.getMetadata());
448e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger            metadataAdded |=  RgbzMetadataLoader.loadRgbzMetadata(
458e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger                    context, data.getData().getUri(), data.getMetadata());
468ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde        } else if (data.getAttributes().isVideo()) {
478e29072ca69229a25dc4a856e3635d131613f4caAlan Newberger            metadataAdded = VideoRotationMetadataLoader.loadRotationMetadata(data);
48de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd        }
498ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde        data.getMetadata().setLoaded(true);
50de3e9abaa241dc2aa66e5d02ba8b7bd35e0d8f00Sam Judd        return metadataAdded;
51e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong    }
52e2f4c03eaea059e15adf34d8782c433b1f7164dcAngus Kong}
538ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde
54