From a70b8c6dfffabd8451e96fc5b04ca3119f9b5c5c Mon Sep 17 00:00:00 2001 From: tarsin Date: Thu, 23 Feb 2023 21:45:57 +0800 Subject: [PATCH] Cleanup SubsamplingScaleImageView InputStream sucks, we may add ImageDecoder impl later --- .../labs/subscaleview/ImageSource.kt | 49 ------------------- .../subscaleview/SubsamplingScaleImageView.kt | 39 --------------- .../labs/subscaleview/decoder/ImageDecoder.kt | 4 +- .../provider/AssetInputProvider.kt | 11 ----- .../subscaleview/provider/InputProvider.kt | 9 +--- .../provider/OpenStreamProvider.kt | 16 ------ .../provider/ResourceInputProvider.kt | 11 ----- .../subscaleview/provider/UriInputProvider.kt | 13 ----- app/src/main/res/values/arrays.xml | 9 ---- 9 files changed, 2 insertions(+), 159 deletions(-) delete mode 100644 app/src/main/java/com/davemorrissey/labs/subscaleview/provider/AssetInputProvider.kt delete mode 100644 app/src/main/java/com/davemorrissey/labs/subscaleview/provider/OpenStreamProvider.kt delete mode 100644 app/src/main/java/com/davemorrissey/labs/subscaleview/provider/ResourceInputProvider.kt delete mode 100644 app/src/main/java/com/davemorrissey/labs/subscaleview/provider/UriInputProvider.kt diff --git a/app/src/main/java/com/davemorrissey/labs/subscaleview/ImageSource.kt b/app/src/main/java/com/davemorrissey/labs/subscaleview/ImageSource.kt index 8d8ce0dba..9c58dee0d 100644 --- a/app/src/main/java/com/davemorrissey/labs/subscaleview/ImageSource.kt +++ b/app/src/main/java/com/davemorrissey/labs/subscaleview/ImageSource.kt @@ -1,15 +1,8 @@ package com.davemorrissey.labs.subscaleview -import android.content.Context import android.graphics.Bitmap import android.graphics.Rect -import android.net.Uri -import com.davemorrissey.labs.subscaleview.provider.AssetInputProvider import com.davemorrissey.labs.subscaleview.provider.InputProvider -import com.davemorrissey.labs.subscaleview.provider.OpenStreamProvider -import com.davemorrissey.labs.subscaleview.provider.ResourceInputProvider -import com.davemorrissey.labs.subscaleview.provider.UriInputProvider -import java.io.InputStream /** * Helper class used to set the source and additional attributes from a variety of sources. Supports @@ -83,38 +76,6 @@ class ImageSource { } companion object { - /** - * Create an instance from a resource. The correct resource for the device screen resolution will be used. - * - * @param resId resource ID. - * @return an [ImageSource] instance. - */ - @JvmStatic - fun resource(context: Context, resId: Int): ImageSource { - return ImageSource(ResourceInputProvider(context, resId)) - } - - /** - * Create an instance from an asset name. - * - * @param assetName asset name. - * @return an [ImageSource] instance. - */ - @JvmStatic - fun asset(context: Context, assetName: String): ImageSource { - return ImageSource(AssetInputProvider(context, assetName)) - } - - /** - * Create an instance from a URI. - * - * @param uri image URI. - * @return an [ImageSource] instance. - */ - fun uri(context: Context, uri: Uri): ImageSource { - return ImageSource(UriInputProvider(context, uri)) - } - /** * Create an instance from an input provider. * @@ -125,16 +86,6 @@ class ImageSource { return ImageSource(provider) } - /** - * Create an instance from an input stream. - * - * @param stream open input stream. - * @return an [ImageSource] instance. - */ - fun inputStream(stream: InputStream): ImageSource { - return ImageSource(OpenStreamProvider(stream)) - } - /** * Provide a loaded bitmap for display. * diff --git a/app/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.kt b/app/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.kt index 7e9f44dc3..c35a6d5cd 100644 --- a/app/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.kt +++ b/app/src/main/java/com/davemorrissey/labs/subscaleview/SubsamplingScaleImageView.kt @@ -19,12 +19,9 @@ import android.view.MotionEvent import android.view.View import androidx.annotation.AnyThread import androidx.annotation.IntDef -import com.davemorrissey.labs.subscaleview.ImageSource.Companion.asset -import com.davemorrissey.labs.subscaleview.ImageSource.Companion.resource import com.davemorrissey.labs.subscaleview.decoder.Decoder import com.davemorrissey.labs.subscaleview.decoder.ImageDecoder import com.davemorrissey.labs.subscaleview.provider.InputProvider -import com.hippo.ehviewer.R import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -303,42 +300,6 @@ open class SubsamplingScaleImageView @JvmOverloads constructor( setMinimumDpi(160) setDoubleTapZoomDpi(160) setGestureDetector(context) - - // Handle XML attributes - if (attr != null) { - val typedAttr = getContext().obtainStyledAttributes(attr, R.styleable.SubsamplingScaleImageView) - if (typedAttr.hasValue(R.styleable.SubsamplingScaleImageView_assetName)) { - val assetName = typedAttr.getString(R.styleable.SubsamplingScaleImageView_assetName) - if (assetName != null && assetName.isNotEmpty()) { - setImage(asset(context, assetName)) - } - } - if (typedAttr.hasValue(R.styleable.SubsamplingScaleImageView_src)) { - val resId = typedAttr.getResourceId(R.styleable.SubsamplingScaleImageView_src, 0) - if (resId > 0) { - setImage(resource(context, resId)) - } - } - if (typedAttr.hasValue(R.styleable.SubsamplingScaleImageView_panEnabled)) { - setPanEnabled(typedAttr.getBoolean(R.styleable.SubsamplingScaleImageView_panEnabled, true)) - } - if (typedAttr.hasValue(R.styleable.SubsamplingScaleImageView_zoomEnabled)) { - isZoomEnabled = typedAttr.getBoolean(R.styleable.SubsamplingScaleImageView_zoomEnabled, true) - } - if (typedAttr.hasValue(R.styleable.SubsamplingScaleImageView_quickScaleEnabled)) { - isQuickScaleEnabled = - typedAttr.getBoolean(R.styleable.SubsamplingScaleImageView_quickScaleEnabled, true) - } - if (typedAttr.hasValue(R.styleable.SubsamplingScaleImageView_tileBackgroundColor)) { - setTileBackgroundColor( - typedAttr.getColor( - R.styleable.SubsamplingScaleImageView_tileBackgroundColor, - Color.argb(0, 0, 0, 0) - ) - ) - } - typedAttr.recycle() - } quickScaleThreshold = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20F, context.resources.displayMetrics) } diff --git a/app/src/main/java/com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.kt b/app/src/main/java/com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.kt index 8acbc4241..d7d0cd788 100644 --- a/app/src/main/java/com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.kt +++ b/app/src/main/java/com/davemorrissey/labs/subscaleview/decoder/ImageDecoder.kt @@ -4,10 +4,8 @@ import android.content.Context import android.graphics.Bitmap import android.graphics.Point import android.graphics.Rect -import kotlin.Throws -import com.davemorrissey.labs.subscaleview.provider.InputProvider import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView -import java.lang.Exception +import com.davemorrissey.labs.subscaleview.provider.InputProvider class ImageDecoder @JvmOverloads constructor( private val cropBorders: Boolean, diff --git a/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/AssetInputProvider.kt b/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/AssetInputProvider.kt deleted file mode 100644 index eba85fc58..000000000 --- a/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/AssetInputProvider.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.davemorrissey.labs.subscaleview.provider - -import android.content.Context -import java.io.IOException - -class AssetInputProvider(context: Context, val assetName: String) : InputProvider { - private val assets = context.assets - - @Throws(IOException::class) - override fun openStream() = assets.open(assetName) -} diff --git a/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/InputProvider.kt b/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/InputProvider.kt index 95359e291..89ec1c24e 100644 --- a/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/InputProvider.kt +++ b/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/InputProvider.kt @@ -1,10 +1,3 @@ package com.davemorrissey.labs.subscaleview.provider -import java.io.IOException -import java.io.InputStream -import kotlin.Throws - -interface InputProvider { - @Throws(IOException::class) - fun openStream(): InputStream? -} +interface InputProvider diff --git a/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/OpenStreamProvider.kt b/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/OpenStreamProvider.kt deleted file mode 100644 index 0ee6a5c97..000000000 --- a/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/OpenStreamProvider.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.davemorrissey.labs.subscaleview.provider - -import java.io.IOException -import java.io.InputStream -import kotlin.Throws - -/** - * Provider from an already open input stream. - * - * - * Please keep in mind this provider is not reusable. - */ -class OpenStreamProvider(private val stream: InputStream) : InputProvider { - @Throws(IOException::class) - override fun openStream() = stream -} diff --git a/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/ResourceInputProvider.kt b/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/ResourceInputProvider.kt deleted file mode 100644 index 6e7197ed7..000000000 --- a/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/ResourceInputProvider.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.davemorrissey.labs.subscaleview.provider - -import android.content.Context -import java.io.IOException - -class ResourceInputProvider(context: Context, val resource: Int) : InputProvider { - private val resources = context.resources - - @Throws(IOException::class) - override fun openStream() = resources.openRawResource(resource) -} diff --git a/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/UriInputProvider.kt b/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/UriInputProvider.kt deleted file mode 100644 index f3745ce14..000000000 --- a/app/src/main/java/com/davemorrissey/labs/subscaleview/provider/UriInputProvider.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.davemorrissey.labs.subscaleview.provider - -import android.content.Context -import android.net.Uri -import java.io.IOException -import kotlin.Throws - -class UriInputProvider(context: Context, val uri: Uri) : InputProvider { - private val resolver = context.contentResolver - - @Throws(IOException::class) - override fun openStream() = resolver.openInputStream(uri) -} diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 827ee5fca..bc1dc61af 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -250,15 +250,6 @@ @string/download_state_failed - - - - - - - - - @string/label_default @string/left_to_right_viewer