/*******************************************************************************
|
* Copyright 2013-2014 Sergey Tarasevich
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*******************************************************************************/
|
package com.nostra13.universalimageloader.core.decode;
|
|
import android.annotation.TargetApi;
|
import android.graphics.BitmapFactory.Options;
|
import android.os.Build;
|
|
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
|
import com.nostra13.universalimageloader.core.assist.ImageSize;
|
import com.nostra13.universalimageloader.core.assist.ViewScaleType;
|
import com.nostra13.universalimageloader.core.download.ImageDownloader;
|
|
/**
|
* Contains needed information for decoding image to Bitmap
|
*
|
* @author Sergey Tarasevich (nostra13[at]gmail[dot]com)
|
* @since 1.8.3
|
*/
|
public class ImageDecodingInfo {
|
|
private final String imageKey;
|
private final String imageUri;
|
private final String originalImageUri;
|
private final ImageSize targetSize;
|
|
private final ImageScaleType imageScaleType;
|
private final ViewScaleType viewScaleType;
|
|
private final ImageDownloader downloader;
|
private final Object extraForDownloader;
|
|
private final boolean considerExifParams;
|
private final Options decodingOptions;
|
|
public ImageDecodingInfo(String imageKey, String imageUri, String originalImageUri, ImageSize targetSize, ViewScaleType viewScaleType,
|
ImageDownloader downloader, DisplayImageOptions displayOptions) {
|
this.imageKey = imageKey;
|
this.imageUri = imageUri;
|
this.originalImageUri = originalImageUri;
|
this.targetSize = targetSize;
|
|
this.imageScaleType = displayOptions.getImageScaleType();
|
this.viewScaleType = viewScaleType;
|
|
this.downloader = downloader;
|
this.extraForDownloader = displayOptions.getExtraForDownloader();
|
|
considerExifParams = displayOptions.isConsiderExifParams();
|
decodingOptions = new Options();
|
copyOptions(displayOptions.getDecodingOptions(), decodingOptions);
|
}
|
|
private void copyOptions(Options srcOptions, Options destOptions) {
|
destOptions.inDensity = srcOptions.inDensity;
|
destOptions.inDither = srcOptions.inDither;
|
destOptions.inInputShareable = srcOptions.inInputShareable;
|
destOptions.inJustDecodeBounds = srcOptions.inJustDecodeBounds;
|
destOptions.inPreferredConfig = srcOptions.inPreferredConfig;
|
destOptions.inPurgeable = srcOptions.inPurgeable;
|
destOptions.inSampleSize = srcOptions.inSampleSize;
|
destOptions.inScaled = srcOptions.inScaled;
|
destOptions.inScreenDensity = srcOptions.inScreenDensity;
|
destOptions.inTargetDensity = srcOptions.inTargetDensity;
|
destOptions.inTempStorage = srcOptions.inTempStorage;
|
if (Build.VERSION.SDK_INT >= 10) copyOptions10(srcOptions, destOptions);
|
if (Build.VERSION.SDK_INT >= 11) copyOptions11(srcOptions, destOptions);
|
}
|
|
@TargetApi(10)
|
private void copyOptions10(Options srcOptions, Options destOptions) {
|
destOptions.inPreferQualityOverSpeed = srcOptions.inPreferQualityOverSpeed;
|
}
|
|
@TargetApi(11)
|
private void copyOptions11(Options srcOptions, Options destOptions) {
|
destOptions.inBitmap = srcOptions.inBitmap;
|
destOptions.inMutable = srcOptions.inMutable;
|
}
|
|
/** @return Original {@linkplain com.nostra13.universalimageloader.utils.MemoryCacheUtils#generateKey(String, ImageSize) image key} (used in memory cache). */
|
public String getImageKey() {
|
return imageKey;
|
}
|
|
/** @return Image URI for decoding (usually image from disk cache) */
|
public String getImageUri() {
|
return imageUri;
|
}
|
|
/** @return The original image URI which was passed to ImageLoader */
|
public String getOriginalImageUri() {
|
return originalImageUri;
|
}
|
|
/**
|
* @return Target size for image. Decoded bitmap should close to this size according to {@linkplain ImageScaleType
|
* image scale type} and {@linkplain ViewScaleType view scale type}.
|
*/
|
public ImageSize getTargetSize() {
|
return targetSize;
|
}
|
|
/**
|
* @return {@linkplain ImageScaleType Scale type for image sampling and scaling}. This parameter affects result size
|
* of decoded bitmap.
|
*/
|
public ImageScaleType getImageScaleType() {
|
return imageScaleType;
|
}
|
|
/** @return {@linkplain ViewScaleType View scale type}. This parameter affects result size of decoded bitmap. */
|
public ViewScaleType getViewScaleType() {
|
return viewScaleType;
|
}
|
|
/** @return Downloader for image loading */
|
public ImageDownloader getDownloader() {
|
return downloader;
|
}
|
|
/** @return Auxiliary object for downloader */
|
public Object getExtraForDownloader() {
|
return extraForDownloader;
|
}
|
|
/** @return <b>true</b> - if EXIF params of image should be considered; <b>false</b> - otherwise */
|
public boolean shouldConsiderExifParams() {
|
return considerExifParams;
|
}
|
|
/** @return Decoding options */
|
public Options getDecodingOptions() {
|
return decodingOptions;
|
}
|
}
|