Skip to content

Commit 09e0773

Browse files
committed
feat: Cat Editor draw logic
Signed-off-by: Hu Shenghao <[email protected]>
1 parent 476c32a commit 09e0773

File tree

3 files changed

+19
-24
lines changed

3 files changed

+19
-24
lines changed

feature/cat-editor/src/main/java/com/dede/android_eggs/cat_editor/CatEditor.kt

+12-6
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import androidx.compose.ui.ExperimentalComposeUiApi
3131
import androidx.compose.ui.Modifier
3232
import androidx.compose.ui.geometry.Offset
3333
import androidx.compose.ui.geometry.Size
34+
import androidx.compose.ui.graphics.Color
3435
import androidx.compose.ui.graphics.Matrix
3536
import androidx.compose.ui.graphics.graphicsLayer
3637
import androidx.compose.ui.input.pointer.pointerInput
@@ -148,6 +149,15 @@ internal fun CatEditor(
148149
label = "HighlightColorBlend"
149150
)
150151

152+
val partColorBlend: (index: Int) -> Color = { index ->
153+
var color = controllerImpl.colorList[index]
154+
if (selectedPart == index) {
155+
val blend = Utilities.getHighlightColor(color)
156+
color = Utilities.blendColor(color, blend, blendRatio)
157+
}
158+
color
159+
}
160+
151161
var canvasSize by remember { mutableStateOf(Size.Zero) }
152162
val canvasMatrix = remember(canvasSize) { createCanvasMatrix(canvasSize) }
153163

@@ -205,17 +215,13 @@ internal fun CatEditor(
205215
androidCanvasDraw(
206216
canvasMatrix.asAndroidMatrix(),
207217
bitmap,
208-
controllerImpl.colorList,
209-
selectedPart,
210-
blendRatio
218+
partColorBlend
211219
)
212220
} else {
213221
// compose canvas draw
214222
composeCanvasDraw(
215223
canvasMatrix,
216-
controllerImpl.colorList,
217-
selectedPart,
218-
blendRatio
224+
partColorBlend
219225
)
220226
}
221227
}

feature/cat-editor/src/main/java/com/dede/android_eggs/cat_editor/CatEditorAndroidCanvasDraw.kt

+2-4
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,15 @@ private val androidPaint = Paint(Paint.ANTI_ALIAS_FLAG)
3535
internal fun DrawScope.androidCanvasDraw(
3636
matrix: Matrix,
3737
bitmap: Bitmap,
38-
colorList: List<androidx.compose.ui.graphics.Color>,
39-
selectedPart: Int,
40-
blendRatio: Float
38+
onPartColor: (index: Int) -> androidx.compose.ui.graphics.Color,
4139
) {
4240
// clear bitmap
4341
bitmap.eraseColor(Color.TRANSPARENT)
4442

4543
// draw bitmap
4644
bitmap.applyCanvas {
4745
withMatrix(matrix) {
48-
forEachCatDrawPart(colorList, selectedPart, blendRatio) { part, color ->
46+
forEachCatDrawPart(onPartColor) { part, color ->
4947
part.androidDrawLambda(this, color, androidPaint)
5048
}
5149
}

feature/cat-editor/src/main/java/com/dede/android_eggs/cat_editor/CatEditorComposeCanvasDraw.kt

+5-14
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,20 @@ import androidx.compose.ui.graphics.drawscope.withTransform
77

88

99
internal fun forEachCatDrawPart(
10-
colorList: List<Color>,
11-
selectedPart: Int,
12-
blendRatio: Float,
13-
block: (part: CatParts.PathDraw, color: Color) -> Unit
10+
onPartColor: (index: Int) -> Color,
11+
onDrawPart: (part: CatParts.PathDraw, color: Color) -> Unit
1412
) {
1513
CatParts.drawOrders.forEachIndexed { index, pathDraw ->
16-
var color = colorList[index]
17-
if (selectedPart == index) {
18-
val blend = Utilities.getHighlightColor(color)
19-
color = Utilities.blendColor(color, blend, blendRatio)
20-
}
21-
block(pathDraw, color)
14+
onDrawPart(pathDraw, onPartColor(index))
2215
}
2316
}
2417

2518
internal fun DrawScope.composeCanvasDraw(
2619
matrix: Matrix,
27-
colorList: List<Color>,
28-
selectedPart: Int,
29-
blendRatio: Float
20+
onPartColor: (index: Int) -> Color
3021
) {
3122
withTransform({ transform(matrix) }) {
32-
forEachCatDrawPart(colorList, selectedPart, blendRatio) { part, color ->
23+
forEachCatDrawPart(onPartColor) { part, color ->
3324
part.drawLambda(this, color)
3425
}
3526
}

0 commit comments

Comments
 (0)