From 294609c643a7777cfe14ce2be6dd402489646443 Mon Sep 17 00:00:00 2001 From: Naveen Date: Mon, 10 Oct 2022 23:12:21 +0530 Subject: [PATCH] Do color filling on background thread --- .../simplemobiletools/draw/pro/extensions/Bitmap.kt | 1 - .../simplemobiletools/draw/pro/helpers/FloodFill.kt | 2 -- .../com/simplemobiletools/draw/pro/models/CanvasOp.kt | 1 - .../com/simplemobiletools/draw/pro/views/MyCanvas.kt | 11 +++++++---- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/draw/pro/extensions/Bitmap.kt b/app/src/main/kotlin/com/simplemobiletools/draw/pro/extensions/Bitmap.kt index 7a2dc1c..40bea58 100644 --- a/app/src/main/kotlin/com/simplemobiletools/draw/pro/extensions/Bitmap.kt +++ b/app/src/main/kotlin/com/simplemobiletools/draw/pro/extensions/Bitmap.kt @@ -3,7 +3,6 @@ package com.simplemobiletools.draw.pro.extensions import android.graphics.Bitmap import com.simplemobiletools.draw.pro.helpers.QueueLinearFloodFiller - fun Bitmap.floodFill(color: Int, x: Int, y: Int, tolerance: Int = 10): Bitmap { val floodFiller = QueueLinearFloodFiller(this).apply { fillColor = color diff --git a/app/src/main/kotlin/com/simplemobiletools/draw/pro/helpers/FloodFill.kt b/app/src/main/kotlin/com/simplemobiletools/draw/pro/helpers/FloodFill.kt index 07066fa..227d2a2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/draw/pro/helpers/FloodFill.kt +++ b/app/src/main/kotlin/com/simplemobiletools/draw/pro/helpers/FloodFill.kt @@ -4,11 +4,9 @@ import android.graphics.Bitmap import android.graphics.Color import java.util.* - // Original algorithm by J. Dunlap http:// www.codeproject.com/KB/GDI-plus/queuelinearflood-fill.aspx // Java port by Owen Kaluza // Android port by Darrin Smith (Standard Android) - class QueueLinearFloodFiller(img: Bitmap) { var image: Bitmap? = null diff --git a/app/src/main/kotlin/com/simplemobiletools/draw/pro/models/CanvasOp.kt b/app/src/main/kotlin/com/simplemobiletools/draw/pro/models/CanvasOp.kt index 0be7a7a..9b1d65f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/draw/pro/models/CanvasOp.kt +++ b/app/src/main/kotlin/com/simplemobiletools/draw/pro/models/CanvasOp.kt @@ -3,7 +3,6 @@ package com.simplemobiletools.draw.pro.models import android.graphics.Bitmap import java.io.Serializable - sealed class CanvasOp : Serializable { class PathOp( val path: MyPath, diff --git a/app/src/main/kotlin/com/simplemobiletools/draw/pro/views/MyCanvas.kt b/app/src/main/kotlin/com/simplemobiletools/draw/pro/views/MyCanvas.kt index 328e23b..ee22bf1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/draw/pro/views/MyCanvas.kt +++ b/app/src/main/kotlin/com/simplemobiletools/draw/pro/views/MyCanvas.kt @@ -393,9 +393,12 @@ class MyCanvas(context: Context, attrs: AttributeSet) : View(context, attrs) { if (contains(touchedX, touchedY)) { val bitmap = getBitmap() val color = mPaintOptions.color - val img = bitmap.floodFill(color = color, x = touchedX, y = touchedY) - addOperation(CanvasOp.BitmapOp(img)) - invalidate() + + ensureBackgroundThread { + val img = bitmap.floodFill(color = color, x = touchedX, y = touchedY) + addOperation(CanvasOp.BitmapOp(img)) + post { invalidate() } + } } } @@ -408,7 +411,7 @@ class MyCanvas(context: Context, attrs: AttributeSet) : View(context, attrs) { mPath.lineTo(mCurX + 1, mCurY + 2) mPath.lineTo(mCurX + 1, mCurY) } - mOperations.add(CanvasOp.PathOp(mPath, mPaintOptions)) + addOperation(CanvasOp.PathOp(mPath, mPaintOptions)) } private fun addOperation(operation: CanvasOp) {