@@ -14,6 +14,7 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
14
14
15
15
val sharedPaint = Paint ()
16
16
val sharedPath = Path ()
17
+ val sharedPath2 = Path ()
17
18
val sharedContentTransform = Matrix ()
18
19
19
20
override fun drawFrame (frameIndex : Int , scaleType : ImageView .ScaleType ) {
@@ -178,8 +179,7 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
178
179
sharedContentTransform.reset()
179
180
performScaleType(scaleType)
180
181
sharedContentTransform.preConcat(sprite.frameEntity.transform)
181
- sprite.frameEntity.shapes.forEach {
182
- val shape = it
182
+ sprite.frameEntity.shapes.forEach { shape ->
183
183
sharedPath.reset()
184
184
shape.shapePath?.let {
185
185
sharedPath.addPath(it)
@@ -197,15 +197,31 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
197
197
sharedPaint.color = it
198
198
sharedPaint.alpha = (sprite.frameEntity.alpha * 255 ).toInt()
199
199
sharedPaint.isAntiAlias = true
200
+ if (sprite.frameEntity.maskPath != = null ) canvas.save()
201
+ sprite.frameEntity.maskPath?.let { maskPath ->
202
+ sharedPath2.reset()
203
+ maskPath.buildPath(sharedPath2)
204
+ sharedPath2.transform(this .sharedContentTransform)
205
+ canvas.clipPath(sharedPath2)
206
+ }
200
207
canvas.drawPath(sharedPath, sharedPaint)
208
+ if (sprite.frameEntity.maskPath != = null ) canvas.restore()
201
209
}
202
210
}
203
211
shape.styles?.strokeWidth?.let {
204
212
if (it > 0 ) {
205
213
sharedPaint.reset()
206
214
sharedPaint.alpha = (sprite.frameEntity.alpha * 255 ).toInt()
207
215
resetShapeStrokePaint(shape)
216
+ if (sprite.frameEntity.maskPath != = null ) canvas.save()
217
+ sprite.frameEntity.maskPath?.let { maskPath ->
218
+ sharedPath2.reset()
219
+ maskPath.buildPath(sharedPath2)
220
+ sharedPath2.transform(this .sharedContentTransform)
221
+ canvas.clipPath(sharedPath2)
222
+ }
208
223
canvas.drawPath(sharedPath, sharedPaint)
224
+ if (sprite.frameEntity.maskPath != = null ) canvas.restore()
209
225
}
210
226
}
211
227
}
0 commit comments