1f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague/*
2f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague * Copyright (C) 2015 The Android Open Source Project
3f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague *
4f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague * Licensed under the Apache License, Version 2.0 (the "License");
5f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague * you may not use this file except in compliance with the License.
6f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague * You may obtain a copy of the License at
7f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague *
8f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague *      http://www.apache.org/licenses/LICENSE-2.0
9f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague *
10f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague * Unless required by applicable law or agreed to in writing, software
11f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague * distributed under the License is distributed on an "AS IS" BASIS,
12f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague * See the License for the specific language governing permissions and
14f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague * limitations under the License.
15f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague */
16f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague
17f6031c016d916db9789026dc0a6c559d8163a088Spike Spraguepackage com.android.camera.one.v2.imagesaver;
18f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague
19f6031c016d916db9789026dc0a6c559d8163a088Spike Spragueimport com.android.camera.one.v2.camera2proxy.ForwardingImageProxy;
20f6031c016d916db9789026dc0a6c559d8163a088Spike Spragueimport com.android.camera.one.v2.camera2proxy.ImageProxy;
21f6031c016d916db9789026dc0a6c559d8163a088Spike Spragueimport com.android.camera.one.v2.camera2proxy.TotalCaptureResultProxy;
22f6031c016d916db9789026dc0a6c559d8163a088Spike Spragueimport com.google.common.util.concurrent.ListenableFuture;
23f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague
24f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague/**
25f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague * An ImageProxy decorator that attaches a TotalCaptureResultProxy metadata to
26f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague * an ImageProxy
27f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague */
28f6031c016d916db9789026dc0a6c559d8163a088Spike Spraguepublic final class MetadataImage extends ForwardingImageProxy {
29f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague    private final ListenableFuture<TotalCaptureResultProxy> mMetadata;
30f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague
31f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague    /**
32f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague     * Create a new MetadataImage
33f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague     *
34f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague     * @param image The image.
35f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague     * @param metadata The TotalCaptureResultProxy metadata associated with image.
36f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague     */
37f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague    public MetadataImage(ImageProxy image, ListenableFuture<TotalCaptureResultProxy> metadata) {
38f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague        super(image);
39f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague        mMetadata = metadata;
40f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague    }
41f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague
42f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague    /**
43f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague     * @return The TotalCaptureResultProxy metadata associated with image.
44f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague     */
45f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague    public ListenableFuture<TotalCaptureResultProxy> getMetadata() {
46f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague        return mMetadata;
47f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague    }
48f6031c016d916db9789026dc0a6c559d8163a088Spike Sprague}
49