@@ -12,6 +12,7 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
12
12
13
13
private val sharedPaint = Paint ()
14
14
private val sharedPath = Path ()
15
+ private val sharedPath2 = Path ()
15
16
private val sharedContentTransform = Matrix ()
16
17
17
18
override fun drawFrame (frameIndex : Int , scaleType : ImageView .ScaleType ) {
@@ -191,15 +192,31 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
191
192
sharedPaint.color = it
192
193
sharedPaint.alpha = (sprite.frameEntity.alpha * 255 ).toInt()
193
194
sharedPaint.isAntiAlias = true
195
+ if (sprite.frameEntity.maskPath != = null ) canvas.save()
196
+ sprite.frameEntity.maskPath?.let { maskPath ->
197
+ sharedPath2.reset()
198
+ maskPath.buildPath(sharedPath2)
199
+ sharedPath2.transform(this .sharedContentTransform)
200
+ canvas.clipPath(sharedPath2)
201
+ }
194
202
canvas.drawPath(sharedPath, sharedPaint)
203
+ if (sprite.frameEntity.maskPath != = null ) canvas.restore()
195
204
}
196
205
}
197
206
shape.styles?.strokeWidth?.let {
198
207
if (it > 0 ) {
199
208
sharedPaint.reset()
200
209
sharedPaint.alpha = (sprite.frameEntity.alpha * 255 ).toInt()
201
210
resetShapeStrokePaint(shape)
211
+ if (sprite.frameEntity.maskPath != = null ) canvas.save()
212
+ sprite.frameEntity.maskPath?.let { maskPath ->
213
+ sharedPath2.reset()
214
+ maskPath.buildPath(sharedPath2)
215
+ sharedPath2.transform(this .sharedContentTransform)
216
+ canvas.clipPath(sharedPath2)
217
+ }
202
218
canvas.drawPath(sharedPath, sharedPaint)
219
+ if (sprite.frameEntity.maskPath != = null ) canvas.restore()
203
220
}
204
221
}
205
222
}
0 commit comments