diff --git a/app/src/main/cpp/image.c b/app/src/main/cpp/image.c index a210c5560..69627b17f 100644 --- a/app/src/main/cpp/image.c +++ b/app/src/main/cpp/image.c @@ -122,29 +122,6 @@ bool copy_pixels(const void *src, int src_w, int src_h, int src_x, int src_y, return true; } -JNIEXPORT void JNICALL -Java_com_hippo_image_Image_nativeRender(JNIEnv *env, jclass clazz, jobject srcBitmap, jint src_x, - jint src_y, jobject dst, jint dst_x, jint dst_y, jint width, - jint height) { - AndroidBitmapInfo dstInfo; - AndroidBitmapInfo srcInfo; - void *srcPixels = NULL; - void *dstPixels = NULL; - - AndroidBitmap_lockPixels(env, srcBitmap, &srcPixels); - AndroidBitmap_lockPixels(env, dst, &dstPixels); - AndroidBitmap_getInfo(env, srcBitmap, &srcInfo); - AndroidBitmap_getInfo(env, dst, &dstInfo); - - copy_pixels(srcPixels, srcInfo.width, srcInfo.height, src_x, src_y, dstPixels, dstInfo.width, - dstInfo.height, dst_x, dst_y, - width, - height); - - AndroidBitmap_unlockPixels(env, dst); - AndroidBitmap_unlockPixels(env, srcBitmap); -} - JNIEXPORT void JNICALL Java_com_hippo_image_Image_nativeTexImage(JNIEnv *env, jclass clazz, jobject bitmap, jboolean init, jint offset_x, jint offset_y, jint width, jint height) { diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ArchiveGalleryProvider.java b/app/src/main/java/com/hippo/ehviewer/gallery/ArchiveGalleryProvider.java index 71f7307f3..7156214e7 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/ArchiveGalleryProvider.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ArchiveGalleryProvider.java @@ -335,7 +335,7 @@ public class ArchiveGalleryProvider extends GalleryProvider2 { Image image = null; if (buffer != null) { try { - image = Image.decode(buffer, false, () -> { + image = Image.decode(buffer, () -> { archiveAccessor.releaseByteBuffer(buffer); return null; }); diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/DirGalleryProvider.java b/app/src/main/java/com/hippo/ehviewer/gallery/DirGalleryProvider.java index 2ae02be96..08ac607a1 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/DirGalleryProvider.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/DirGalleryProvider.java @@ -259,7 +259,7 @@ public class DirGalleryProvider extends GalleryProvider2 implements Runnable { InputStream is = null; try { is = files[index].openInputStream(); - Image image = Image.decode((FileInputStream) is, false); + Image image = Image.decode((FileInputStream) is); mDecodingIndex.lazySet(GalleryPageView.INVALID_INDEX); notifyPageSucceed(index, image); } catch (IOException e) { diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java index f89766e62..25a2aed2d 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java @@ -1679,7 +1679,7 @@ public final class SpiderQueen implements Runnable { if (is != null) { try { - image = Image.decode(((FileInputStream) is), false); + image = Image.decode(((FileInputStream) is)); } catch (ImageDecoder.DecodeException e) { e.printStackTrace(); } finally { diff --git a/app/src/main/java/com/hippo/glview/image/ImageWrapper.java b/app/src/main/java/com/hippo/glview/image/ImageWrapper.java index f4ef02ce9..2007e87e4 100644 --- a/app/src/main/java/com/hippo/glview/image/ImageWrapper.java +++ b/app/src/main/java/com/hippo/glview/image/ImageWrapper.java @@ -122,15 +122,6 @@ public class ImageWrapper { return mCut.height(); } - /** - * @see Image#render(int, int, Bitmap, int, int, int, int) - */ - public void render(int srcX, int srcY, Bitmap dst, int dstX, int dstY, - int width, int height, boolean fillBlank, int defaultColor) { - mImage.render(srcX + mCut.left, srcY + mCut.top, dst, dstX, dstY, - width, height); - } - /** * @see Image#texImage(boolean, int, int, int, int) */ diff --git a/app/src/main/java/com/hippo/image/Image.kt b/app/src/main/java/com/hippo/image/Image.kt index 6249f6382..10fd2038b 100644 --- a/app/src/main/java/com/hippo/image/Image.kt +++ b/app/src/main/java/com/hippo/image/Image.kt @@ -21,7 +21,6 @@ import android.content.res.Resources import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.ImageDecoder -import android.graphics.ImageDecoder.ALLOCATOR_DEFAULT import android.graphics.ImageDecoder.ALLOCATOR_SOFTWARE import android.graphics.ImageDecoder.DecodeException import android.graphics.ImageDecoder.ImageInfo @@ -39,10 +38,9 @@ import kotlin.math.max class Image private constructor( source: Source?, drawable: Drawable? = null, - val hardware: Boolean = true, val release: () -> Unit? = {} ) { - internal var mObtainedDrawable: Drawable? + private var mObtainedDrawable: Drawable? private var mBitmap: Bitmap? = null private var mCanvas: Canvas? = null @@ -51,7 +49,7 @@ class Image private constructor( source?.let { mObtainedDrawable = ImageDecoder.decodeDrawable(source) { decoder: ImageDecoder, info: ImageInfo, src: Source -> - decoder.allocator = if (hardware) ALLOCATOR_DEFAULT else ALLOCATOR_SOFTWARE + decoder.allocator = ALLOCATOR_SOFTWARE // Sadly we must use software memory since we need copy it to tile buffer, fuck glgallery // Idk it will cause how much performance regression @@ -63,7 +61,6 @@ class Image private constructor( ), 1 ) ) - // Don't } // Should we lazy decode it? } if (mObtainedDrawable == null) { @@ -105,31 +102,7 @@ class Image private constructor( mObtainedDrawable!!.draw(mCanvas!!) } - fun render( - srcX: Int, srcY: Int, dst: Bitmap, dstX: Int, dstY: Int, - width: Int, height: Int - ) { - check(!hardware) { "Hardware buffer cannot be used in glgallery" } - val bitmap: Bitmap = if (animated) { - updateBitmap() - mBitmap!! - } else { - (mObtainedDrawable as BitmapDrawable).bitmap - } - nativeRender( - bitmap, - srcX, - srcY, - dst, - dstX, - dstY, - width, - height - ) - } - fun texImage(init: Boolean, offsetX: Int, offsetY: Int, width: Int, height: Int) { - check(!hardware) { "Hardware buffer cannot be used in glgallery" } val bitmap: Bitmap? = if (animated) { updateBitmap() mBitmap @@ -177,37 +150,30 @@ class Image private constructor( @Throws(DecodeException::class) @JvmStatic - fun decode(stream: FileInputStream, hardware: Boolean = true): Image { + fun decode(stream: FileInputStream): Image { val src = ImageDecoder.createSource( stream.channel.map( FileChannel.MapMode.READ_ONLY, 0, stream.available().toLong() ) ) - return Image(src, hardware = hardware) + return Image(src) } @Throws(DecodeException::class) @JvmStatic - fun decode(buffer: ByteBuffer, hardware: Boolean = true, release: () -> Unit? = {}): Image { + fun decode(buffer: ByteBuffer, release: () -> Unit? = {}): Image { val src = ImageDecoder.createSource(buffer) - return Image(src, hardware = hardware) { + return Image(src) { release() } } @JvmStatic fun create(bitmap: Bitmap): Image { - return Image(null, bitmap.toDrawable(Resources.getSystem()), false) + return Image(null, bitmap.toDrawable(Resources.getSystem())) } - @JvmStatic - private external fun nativeRender( - bitmap: Bitmap, - srcX: Int, srcY: Int, dst: Bitmap, dstX: Int, dstY: Int, - width: Int, height: Int - ) - @JvmStatic private external fun nativeTexImage( bitmap: Bitmap, diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 829521e81..d714ee6e1 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -27,8 +27,6 @@ @android:color/transparent @android:color/transparent - false - true false true false