From 53b37fc2768b62f1e2b0b44f377464e23f590f99 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Thu, 17 Jul 2025 01:57:49 +0530 Subject: [PATCH 1/4] fix(canvas): translate touch point properly before bucket fill See: https://github.com/FossifyOrg/Paint/issues/20 --- .../org/fossify/paint/views/MyCanvas.kt | 47 ++++++++++++------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/paint/views/MyCanvas.kt b/app/src/main/kotlin/org/fossify/paint/views/MyCanvas.kt index 673e41ba..4195f24a 100644 --- a/app/src/main/kotlin/org/fossify/paint/views/MyCanvas.kt +++ b/app/src/main/kotlin/org/fossify/paint/views/MyCanvas.kt @@ -5,6 +5,7 @@ import android.content.Context import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.Color +import android.graphics.Matrix import android.graphics.Paint import android.graphics.Point import android.graphics.PointF @@ -394,23 +395,35 @@ class MyCanvas(context: Context, attrs: AttributeSet) : View(context, attrs) { } private fun bucketFill() { - val touchedX = mCurX.toInt() - val touchedY = mCurY.toInt() - if (contains(touchedX, touchedY)) { - val bitmap = getBitmap() - val color = mPaintOptions.color - - ensureBackgroundThread { - val path = bitmap.vectorFloodFill( - color = color, - x = touchedX, - y = touchedY, - tolerance = FLOOD_FILL_TOLERANCE - ) - val paintOpts = PaintOptions(color = color, strokeWidth = 5f) - addOperation(path, paintOpts) - post { invalidate() } - } + if (mCenter == null) { + mCenter = PointF(width / 2f, height / 2f) + } + + val touchedX = mLastTouchX.toInt() + val touchedY = mLastTouchY.toInt() + if (!contains(touchedX, touchedY)) return + + val toScreen = Matrix().apply { + preTranslate(mPosX, mPosY) + preScale(mScaleFactor, mScaleFactor, mCenter!!.x, mCenter!!.y) + } + + val fromScreen = Matrix().apply { toScreen.invert(this) } + + val bitmap = getBitmap() + val color = mPaintOptions.color + ensureBackgroundThread { + val path = bitmap.vectorFloodFill( + color = color, + x = touchedX, + y = touchedY, + tolerance = FLOOD_FILL_TOLERANCE + ) + + path.transform(fromScreen) + val paintOpts = PaintOptions(color = color, strokeWidth = 5f) + addOperation(path, paintOpts) + post { invalidate() } } } From 08d5ddea385fc0086292c8ad9cce405eb62efbe2 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Thu, 17 Jul 2025 02:10:33 +0530 Subject: [PATCH 2/4] docs: update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 23585f56..73e4761b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Editing images from other apps now works as expected ([#76]) +- Fixed broken bucket fill when zoomed in ([#20]) ## [1.1.0] - 2025-05-05 @@ -32,6 +33,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial release. +[#20]: https://github.com/FossifyOrg/Paint/issues/20 [#76]: https://github.com/FossifyOrg/Paint/issues/76 [Unreleased]: https://github.com/FossifyOrg/Paint/compare/1.1.0...HEAD From 6591acab53ad5dd013962cc346ba8c8fa489b576 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Thu, 17 Jul 2025 02:11:31 +0530 Subject: [PATCH 3/4] docs: add comment --- app/src/main/kotlin/org/fossify/paint/views/MyCanvas.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/org/fossify/paint/views/MyCanvas.kt b/app/src/main/kotlin/org/fossify/paint/views/MyCanvas.kt index 4195f24a..2f571bc2 100644 --- a/app/src/main/kotlin/org/fossify/paint/views/MyCanvas.kt +++ b/app/src/main/kotlin/org/fossify/paint/views/MyCanvas.kt @@ -403,6 +403,7 @@ class MyCanvas(context: Context, attrs: AttributeSet) : View(context, attrs) { val touchedY = mLastTouchY.toInt() if (!contains(touchedX, touchedY)) return + // apply same transformation as in onDraw() val toScreen = Matrix().apply { preTranslate(mPosX, mPosY) preScale(mScaleFactor, mScaleFactor, mCenter!!.x, mCenter!!.y) From 2f06cc0d8d39a6d07ac1eed3dc74a760e0cb68da Mon Sep 17 00:00:00 2001 From: Naveen Singh <36371707+naveensingh@users.noreply.github.com> Date: Mon, 21 Jul 2025 09:19:38 +0530 Subject: [PATCH 4/4] docs(changelog): add entry about sentence case --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 73e4761b..558a9e34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Preference category labels now use sentence case + ### Fixed - Editing images from other apps now works as expected ([#76])