Skip to content

Commit

Permalink
Fix blur crash on smaller image size
Browse files Browse the repository at this point in the history
  • Loading branch information
shubertm committed Feb 24, 2024
1 parent 55f9025 commit 115efbc
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,9 @@ fun BlurIntensityPopup(
editManager.blurOperation.blurSize.value = it
editManager.blurOperation.resize()
},
valueRange = 100f..500f,
valueRange =
editManager.blurOperation.minBlurSize..editManager
.blurOperation.maxBlurSize,
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,23 @@ class BlurOperation(private val editManager: EditManager) : Operation {
private val redoBlurs = Stack<ImageBitmap>()
private var offset = Offset.Zero
private var bitmapPosition = IntOffset.Zero

val blurSize = mutableStateOf(BRUSH_SIZE.toFloat())
val blurSize = mutableStateOf(0f)
private var _minBlurSize = 0f
private var _maxBlurSize = 0f
val minBlurSize get() = _minBlurSize
val maxBlurSize get() = _maxBlurSize

fun init() {
editManager.apply {
backgroundImage.value?.let {
_minBlurSize = if (it.width <= it.height) {
_maxBlurSize = it.width.toFloat()
it.width * 0.2f
} else {
_maxBlurSize = it.height.toFloat()
it.height * 0.2f
}
blurSize.value = minBlurSize
bitmapPosition = IntOffset(
(it.width / 2) - (blurSize.value.toInt() / 2),
(it.height / 2) - (blurSize.value.toInt() / 2)
Expand Down Expand Up @@ -61,22 +72,20 @@ class BlurOperation(private val editManager: EditManager) : Operation {
}

fun draw(context: Context, canvas: Canvas) {
if (blurSize.value in MIN_SIZE..MAX_SIZE) {
editManager.backgroundImage.value?.let {
this.context = context
if (isWithinBounds(it)) {
offset = Offset(
bitmapPosition.x.toFloat(),
bitmapPosition.y.toFloat()
)
}
blur(context)
canvas.drawImage(
blurredBitmap.asImageBitmap(),
offset,
Paint()
editManager.backgroundImage.value?.let {
this.context = context
if (isWithinBounds(it)) {
offset = Offset(
bitmapPosition.x.toFloat(),
bitmapPosition.y.toFloat()
)
}
blur(context)
canvas.drawImage(
blurredBitmap.asImageBitmap(),
offset,
Paint()
)
}
}

Expand Down Expand Up @@ -174,10 +183,4 @@ class BlurOperation(private val editManager: EditManager) : Operation {
blurProcessor.blur(brushBitmap)
}
}

companion object {
private const val BRUSH_SIZE = 250
const val MAX_SIZE = 500f
const val MIN_SIZE = 100f
}
}

0 comments on commit 115efbc

Please sign in to comment.