1ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei/*
2ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei * Copyright (C) 2014 The Android Open Source Project
3ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei *
4ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei * Licensed under the Apache License, Version 2.0 (the "License");
5ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei * you may not use this file except in compliance with the License.
6ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei * You may obtain a copy of the License at
7ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei *
8ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei *      http://www.apache.org/licenses/LICENSE-2.0
9ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei *
10ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei * Unless required by applicable law or agreed to in writing, software
11ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei * distributed under the License is distributed on an "AS IS" BASIS,
12ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei * See the License for the specific language governing permissions and
14ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei * limitations under the License.
15ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei */
16ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
17ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Weipackage com.android.bitmap;
18ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
19ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Weiimport android.content.res.Resources;
20ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
21ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Weiimport java.io.IOException;
22ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Weiimport java.io.InputStream;
23ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
24ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei/**
25ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei * Simple RequestKey for decoding from a resource id.
26ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei */
27ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Weipublic class ResourceRequestKey implements RequestKey {
28ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
29ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    private Resources mResources;
30ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    private int mResId;
31ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
32ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    /**
33ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei     * Create a new request key with the given resource id. A resId of 0 will
34ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei     * return a null request key.
35ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei     */
36ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    public static ResourceRequestKey from(Resources res, int resId) {
37ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        if (resId != 0) {
38ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei            return new ResourceRequestKey(res, resId);
39ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        }
40ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        return null;
41ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    }
42ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
43ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    private ResourceRequestKey(Resources res, int resId) {
44ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        mResources = res;
45ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        mResId = resId;
46ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    }
47ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
48ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    @Override
49ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    public Cancelable createFileDescriptorFactoryAsync(RequestKey requestKey, Callback callback) {
50ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        return null;
51ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    }
52ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
53ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    @Override
54ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    public InputStream createInputStream() throws IOException {
55ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        return mResources.openRawResource(mResId);
56ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    }
57ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
58ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    @Override
59ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    public boolean hasOrientationExif() throws IOException {
60ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        return false;
61ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    }
62ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
63ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    // START AUTO-GENERATED CODE
64ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
65ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    @Override
66ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    public boolean equals(Object o) {
67ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        if (this == o) {
68ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei            return true;
69ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        }
70ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        if (o == null || getClass() != o.getClass()) {
71ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei            return false;
72ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        }
73ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
74ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        ResourceRequestKey that = (ResourceRequestKey) o;
75ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
76ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        if (mResId != that.mResId) {
77ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei            return false;
78ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        }
79ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
80ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        return true;
81ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    }
82ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
83ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    @Override
84ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    public int hashCode() {
85ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        return mResId;
86ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    }
87ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
88ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    // END AUTO-GENERATED CODE
89ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei
90ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    @Override
91ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    public String toString() {
92ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei        return String.format("ResourceRequestKey: %d", mResId);
93ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei    }
94ad6ca3f895022ded1a11f3eedc50d70ea90cd4daMark Wei}
95