1d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/*
2d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Copyright (C) 2015 The Android Open Source Project
3d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
4d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Licensed under the Apache License, Version 2.0 (the "License");
5d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * you may not use this file except in compliance with the License.
6d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * You may obtain a copy of the License at
7d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
8d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *      http://www.apache.org/licenses/LICENSE-2.0
9d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
10d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Unless required by applicable law or agreed to in writing, software
11d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * distributed under the License is distributed on an "AS IS" BASIS,
12d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * See the License for the specific language governing permissions and
14d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * limitations under the License.
15d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */
16d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpackage com.android.messaging.datamodel.media;
17d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
18d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.content.Context;
19d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
20d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.ImageUtils;
21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.UriUtil;
22d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
23d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/**
24d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Holds image request info about file system based image resource.
25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */
26d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpublic class FileImageRequestDescriptor extends UriImageRequestDescriptor {
27d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public final String path;
28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
29d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    // Can we use the thumbnail image from Exif data?
30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public final boolean canUseThumbnail;
31d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Convenience constructor for when the image file's dimensions are not known.
34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
35d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public FileImageRequestDescriptor(final String path, final int desiredWidth,
36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final int desiredHeight, final boolean canUseThumbnail, final boolean canCompress,
37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final boolean isStatic) {
38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        this(path, desiredWidth, desiredHeight, FileImageRequest.UNSPECIFIED_SIZE,
39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                FileImageRequest.UNSPECIFIED_SIZE, canUseThumbnail, canCompress, isStatic);
40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Creates a new file image request with this descriptor. Oftentimes image file metadata
44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * has information such as the size of the image. Provide these metrics if they are known.
45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public FileImageRequestDescriptor(final String path, final int desiredWidth,
47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final int desiredHeight, final int sourceWidth, final int sourceHeight,
48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final boolean canUseThumbnail, final boolean canCompress, final boolean isStatic) {
49d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super(UriUtil.getUriForResourceFile(path), desiredWidth, desiredHeight, sourceWidth,
50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                sourceHeight, canCompress,  isStatic, false /* cropToCircle */,
51d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                ImageUtils.DEFAULT_CIRCLE_BACKGROUND_COLOR /* circleBackgroundColor */,
52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                ImageUtils.DEFAULT_CIRCLE_STROKE_COLOR /* circleStrokeColor */);
53d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        this.path = path;
54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        this.canUseThumbnail = canUseThumbnail;
55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public String getKey() {
59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        final String prefixKey = super.getKey();
60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return prefixKey == null ? null : new StringBuilder(prefixKey).append(KEY_PART_DELIMITER)
61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                .append(canUseThumbnail).toString();
62d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
63d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
64d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
65d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public MediaRequest<ImageResource> buildSyncMediaRequest(final Context context) {
66d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return new FileImageRequest(context, this);
67d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
68d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}