diff options
author | Jon Miranda <jonmiranda@google.com> | 2018-02-08 19:10:54 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-02-08 19:10:54 +0000 |
commit | 45ca08280baebd7342764bdbc9b520d7183d6ad7 (patch) | |
tree | fea66d74c8b32d168fc354d281a68937c582a928 /library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.java | |
parent | eb2ff754284dce6eece14bdbc02d0d02928cf4b9 (diff) | |
parent | 851c104050afcffacb009c98c79de0ba3d945db1 (diff) | |
download | subsampling-scale-image-view-45ca08280baebd7342764bdbc9b520d7183d6ad7.tar.gz |
Merge branch 'upstream-master' am: a067d8ec0a am: 8fa2d463d1android-wear-8.0.0_r2android-9.0.0_r47android-9.0.0_r46android-9.0.0_r45android-9.0.0_r44android-9.0.0_r43android-9.0.0_r42android-9.0.0_r41android-9.0.0_r40android-9.0.0_r39android-9.0.0_r38android-9.0.0_r37android-9.0.0_r36android-9.0.0_r35android-9.0.0_r34android-9.0.0_r33android-9.0.0_r32android-9.0.0_r31android-9.0.0_r30android-9.0.0_r22android-9.0.0_r21android-9.0.0_r20android-9.0.0_r19android-9.0.0_r16android-9.0.0_r12android-9.0.0_r11pie-qpr3-s1-releasepie-qpr3-releasepie-qpr3-b-releasepie-qpr2-releasepie-qpr1-s3-releasepie-qpr1-s2-releasepie-qpr1-s1-releasepie-qpr1-releasepie-dr1-releasepie-dr1-devpie-devpie-b4s4-releasepie-b4s4-devmaster-cuttlefish-testing-release
am: 851c104050
Change-Id: I372e079b8ebd5beb7648a352bf2d5127b6539615
Diffstat (limited to 'library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.java')
-rw-r--r-- | library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.java | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.java b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.java new file mode 100644 index 0000000..870489f --- /dev/null +++ b/library/src/main/java/com/davemorrissey/labs/subscaleview/decoder/CompatDecoderFactory.java @@ -0,0 +1,47 @@ +package com.davemorrissey.labs.subscaleview.decoder; + +import android.graphics.Bitmap; +import android.support.annotation.NonNull; + +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; + +/** + * Compatibility factory to instantiate decoders with empty public constructors. + * @param <T> The base type of the decoder this factory will produce. + */ +@SuppressWarnings("WeakerAccess") +public class CompatDecoderFactory<T> implements DecoderFactory<T> { + + private final Class<? extends T> clazz; + private final Bitmap.Config bitmapConfig; + + /** + * Construct a factory for the given class. This must have a default constructor. + * @param clazz a class that implements {@link ImageDecoder} or {@link ImageRegionDecoder}. + */ + public CompatDecoderFactory(@NonNull Class<? extends T> clazz) { + this(clazz, null); + } + + /** + * Construct a factory for the given class. This must have a constructor that accepts a {@link Bitmap.Config} instance. + * @param clazz a class that implements {@link ImageDecoder} or {@link ImageRegionDecoder}. + * @param bitmapConfig bitmap configuration to be used when loading images. + */ + public CompatDecoderFactory(@NonNull Class<? extends T> clazz, Bitmap.Config bitmapConfig) { + this.clazz = clazz; + this.bitmapConfig = bitmapConfig; + } + + @Override + public T make() throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException { + if (bitmapConfig == null) { + return clazz.newInstance(); + } else { + Constructor<? extends T> ctor = clazz.getConstructor(Bitmap.Config.class); + return ctor.newInstance(bitmapConfig); + } + } + +} |