aboutsummaryrefslogtreecommitdiff
path: root/library
diff options
context:
space:
mode:
authorDavid Morrissey <davemorrissey@gmail.com>2017-11-26 08:37:31 +0000
committerDavid Morrissey <davemorrissey@gmail.com>2017-11-26 08:37:31 +0000
commitbd263d84ae69394213478267cb742b1b6e07613a (patch)
tree222c45b6a5160c372e412a4a955ffd25432ca9a6 /library
parent504362d8a26226fa2cbfebe7cb6a348e6e475c41 (diff)
downloadsubsampling-scale-image-view-bd263d84ae69394213478267cb742b1b6e07613a.tar.gz
Simple global bitmap config with a static field
Diffstat (limited to 'library')
-rw-r--r--library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java22
-rw-r--r--library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.java11
-rw-r--r--library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.java11
-rw-r--r--library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java11
4 files changed, 46 insertions, 9 deletions
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java
index 4298edd..a5a29f8 100644
--- a/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.java
@@ -279,6 +279,8 @@ public class SubsamplingScaleImageView extends View {
//The logical density of the display
private float density;
+ // A global preference for bitmap format, available to decoder classes that respect it
+ private static Bitmap.Config preferredBitmapConfig;
public SubsamplingScaleImageView(Context context, AttributeSet attr) {
super(context, attr);
@@ -336,6 +338,26 @@ public class SubsamplingScaleImageView extends View {
}
/**
+ * Get the current preferred configuration for decoding bitmaps. {@link ImageDecoder} and {@link ImageRegionDecoder}
+ * instances can read this and use it when decoding images.
+ * @return the preferred bitmap configuration, or null if none has been set.
+ */
+ public static Bitmap.Config getPreferredBitmapConfig() {
+ return preferredBitmapConfig;
+ }
+
+ /**
+ * Set a global preferred bitmap config shared by all view instances and applied to new instances
+ * initialised after the call is made. This is a hint only; the bundled {@link ImageDecoder} and
+ * {@link ImageRegionDecoder} classes all respect this (except when they were constructed with
+ * an instance-specific config) but custom decoder classes will not.
+ * @param preferredBitmapConfig the bitmap configuration to be used by future instances of the view. Pass null to restore the default.
+ */
+ public static void setPreferredBitmapConfig(Bitmap.Config preferredBitmapConfig) {
+ SubsamplingScaleImageView.preferredBitmapConfig = preferredBitmapConfig;
+ }
+
+ /**
* Sets the image orientation. It's best to call this before setting the image file or asset, because it may waste
* loading of tiles. However, this can be freely called at any time.
* @param orientation orientation to be set. See ORIENTATION_ static fields for valid values.
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.java
index aed751f..292502c 100644
--- a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.java
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageDecoder.java
@@ -9,6 +9,8 @@ import android.graphics.BitmapFactory;
import android.net.Uri;
import android.text.TextUtils;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+
import java.io.InputStream;
import java.util.List;
@@ -31,10 +33,13 @@ public class SkiaImageDecoder implements ImageDecoder {
}
public SkiaImageDecoder(Bitmap.Config bitmapConfig) {
- if (bitmapConfig == null) {
- this.bitmapConfig = Bitmap.Config.RGB_565;
- } else {
+ Bitmap.Config globalBitmapConfig = SubsamplingScaleImageView.getPreferredBitmapConfig();
+ if (bitmapConfig != null) {
this.bitmapConfig = bitmapConfig;
+ } else if (globalBitmapConfig != null) {
+ this.bitmapConfig = globalBitmapConfig;
+ } else {
+ this.bitmapConfig = Bitmap.Config.RGB_565;
}
}
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.java
index 28f5d80..8be3822 100644
--- a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.java
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaImageRegionDecoder.java
@@ -10,6 +10,8 @@ import android.net.Uri;
import android.os.Build;
import android.text.TextUtils;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+
import java.io.InputStream;
import java.util.List;
import java.util.concurrent.locks.Lock;
@@ -43,10 +45,13 @@ public class SkiaImageRegionDecoder implements ImageRegionDecoder {
}
public SkiaImageRegionDecoder(Bitmap.Config bitmapConfig) {
- if (bitmapConfig == null) {
- this.bitmapConfig = Bitmap.Config.RGB_565;
- } else {
+ Bitmap.Config globalBitmapConfig = SubsamplingScaleImageView.getPreferredBitmapConfig();
+ if (bitmapConfig != null) {
this.bitmapConfig = bitmapConfig;
+ } else if (globalBitmapConfig != null) {
+ this.bitmapConfig = globalBitmapConfig;
+ } else {
+ this.bitmapConfig = Bitmap.Config.RGB_565;
}
}
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java
index abf88b4..9edb5cd 100644
--- a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java
+++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/SkiaPooledImageRegionDecoder.java
@@ -17,6 +17,8 @@ import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
+import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
+
import java.io.File;
import java.io.FileFilter;
import java.io.InputStream;
@@ -77,10 +79,13 @@ public class SkiaPooledImageRegionDecoder implements ImageRegionDecoder {
}
public SkiaPooledImageRegionDecoder(Bitmap.Config bitmapConfig) {
- if (bitmapConfig == null) {
- this.bitmapConfig = Bitmap.Config.RGB_565;
- } else {
+ Bitmap.Config globalBitmapConfig = SubsamplingScaleImageView.getPreferredBitmapConfig();
+ if (bitmapConfig != null) {
this.bitmapConfig = bitmapConfig;
+ } else if (globalBitmapConfig != null) {
+ this.bitmapConfig = globalBitmapConfig;
+ } else {
+ this.bitmapConfig = Bitmap.Config.RGB_565;
}
}