mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Use Rapid decoder also when no regions are required
This commit is contained in:
		| @@ -2,8 +2,11 @@ package eu.kanade.tachiyomi.ui.reader.viewer.base; | ||||
|  | ||||
| import android.view.MotionEvent; | ||||
|  | ||||
| import com.davemorrissey.labs.subscaleview.decoder.ImageDecoder; | ||||
| import com.davemorrissey.labs.subscaleview.decoder.ImageRegionDecoder; | ||||
| import com.davemorrissey.labs.subscaleview.decoder.RapidImageDecoder; | ||||
| import com.davemorrissey.labs.subscaleview.decoder.RapidImageRegionDecoder; | ||||
| import com.davemorrissey.labs.subscaleview.decoder.SkiaImageDecoder; | ||||
| import com.davemorrissey.labs.subscaleview.decoder.SkiaImageRegionDecoder; | ||||
|  | ||||
| import java.util.List; | ||||
| @@ -17,6 +20,7 @@ public abstract class BaseReader extends BaseFragment { | ||||
|     protected int currentPage; | ||||
|     protected List<Page> pages; | ||||
|     protected Class<? extends ImageRegionDecoder> regionDecoderClass; | ||||
|     protected Class<? extends ImageDecoder> bitmapDecoderClass; | ||||
|  | ||||
|     public static final int RAPID_DECODER = 0; | ||||
|     public static final int SKIA_DECODER = 1; | ||||
| @@ -50,14 +54,16 @@ public abstract class BaseReader extends BaseFragment { | ||||
|     public abstract void onPageListReady(List<Page> pages, int currentPage); | ||||
|     public abstract boolean onImageTouch(MotionEvent motionEvent); | ||||
|  | ||||
|     public void setRegionDecoderClass(int value) { | ||||
|     public void setDecoderClass(int value) { | ||||
|         switch (value) { | ||||
|             case RAPID_DECODER: | ||||
|             default: | ||||
|                 regionDecoderClass = RapidImageRegionDecoder.class; | ||||
|                 bitmapDecoderClass = RapidImageDecoder.class; | ||||
|                 break; | ||||
|             case SKIA_DECODER: | ||||
|                 regionDecoderClass = SkiaImageRegionDecoder.class; | ||||
|                 bitmapDecoderClass = SkiaImageDecoder.class; | ||||
|                 break; | ||||
|         } | ||||
|     } | ||||
| @@ -66,6 +72,10 @@ public abstract class BaseReader extends BaseFragment { | ||||
|         return regionDecoderClass; | ||||
|     } | ||||
|  | ||||
|     public Class<? extends ImageDecoder> getBitmapDecoderClass() { | ||||
|         return bitmapDecoderClass; | ||||
|     } | ||||
|  | ||||
|     public ReaderActivity getReaderActivity() { | ||||
|         return (ReaderActivity) getActivity(); | ||||
|     } | ||||
|   | ||||
| @@ -63,7 +63,7 @@ public abstract class PagerReader extends BaseReader { | ||||
|         subscriptions = new CompositeSubscription(); | ||||
|         subscriptions.add(getReaderActivity().getPreferences().imageDecoder() | ||||
|                 .asObservable() | ||||
|                 .doOnNext(this::setRegionDecoderClass) | ||||
|                 .doOnNext(this::setDecoderClass) | ||||
|                 .skip(1) | ||||
|                 .distinctUntilChanged() | ||||
|                 .subscribe(v -> adapter.notifyDataSetChanged())); | ||||
|   | ||||
| @@ -66,6 +66,7 @@ public class PagerReaderFragment extends BaseFragment { | ||||
|         imageView.setPanLimit(SubsamplingScaleImageView.PAN_LIMIT_INSIDE); | ||||
|         imageView.setMinimumScaleType(parentFragment.scaleType); | ||||
|         imageView.setRegionDecoderClass(parentFragment.getRegionDecoderClass()); | ||||
|         imageView.setBitmapDecoderClass(parentFragment.getBitmapDecoderClass()); | ||||
|         imageView.setOnTouchListener((v, motionEvent) -> parentFragment.onImageTouch(motionEvent)); | ||||
|         imageView.setOnImageEventListener(new SubsamplingScaleImageView.DefaultOnImageEventListener() { | ||||
|             @Override | ||||
|   | ||||
| @@ -38,6 +38,8 @@ public class WebtoonHolder extends RecyclerView.ViewHolder { | ||||
|         imageView.setPanLimit(SubsamplingScaleImageView.PAN_LIMIT_INSIDE); | ||||
|         imageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_FIT_WIDTH); | ||||
|         imageView.setMaxScale(10); | ||||
|         imageView.setRegionDecoderClass(adapter.getReader().getRegionDecoderClass()); | ||||
|         imageView.setBitmapDecoderClass(adapter.getReader().getBitmapDecoderClass()); | ||||
|         imageView.setOnTouchListener(touchListener); | ||||
|         imageView.setMaxDimensions(maxDim, maxDim); | ||||
|         imageView.setOnImageEventListener(new SubsamplingScaleImageView.DefaultOnImageEventListener() { | ||||
| @@ -99,7 +101,6 @@ public class WebtoonHolder extends RecyclerView.ViewHolder { | ||||
|         setErrorButtonVisible(false); | ||||
|         setProgressVisible(false); | ||||
|         setImageVisible(true); | ||||
|         imageView.setRegionDecoderClass(adapter.getReader().getRegionDecoderClass()); | ||||
|         imageView.setImage(ImageSource.uri(page.getImagePath())); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -45,10 +45,10 @@ public class WebtoonReader extends BaseReader { | ||||
|  | ||||
|         decoderSubscription = getReaderActivity().getPreferences().imageDecoder() | ||||
|                 .asObservable() | ||||
|                 .doOnNext(this::setRegionDecoderClass) | ||||
|                 .doOnNext(this::setDecoderClass) | ||||
|                 .skip(1) | ||||
|                 .distinctUntilChanged() | ||||
|                 .subscribe(v -> adapter.notifyDataSetChanged()); | ||||
|                 .subscribe(v -> recycler.setAdapter(adapter)); | ||||
|  | ||||
|         gestureDetector = new GestureDetector(getActivity(), new SimpleOnGestureListener() { | ||||
|             @Override | ||||
|   | ||||
		Reference in New Issue
	
	Block a user