Skip to content

Commit da339bb

Browse files
authored
Update SVGACanvasDrawer.kt
remove local var canvas
1 parent ad4c6da commit da339bb

File tree

1 file changed

+19
-27
lines changed

1 file changed

+19
-27
lines changed

library/src/main/java/com/opensource/svgaplayer/SVGACanvasDrawer.kt

+19-27
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import android.widget.ImageView
1010

1111
class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicEntity) : SGVADrawer(videoItem) {
1212

13-
private val scaleEntity = ScaleEntity()
13+
private val canvasW = 0
14+
private val canvasH = 0
1415
private val sharedPaint = Paint()
1516
private val sharedPath = Path()
1617
private val sharedPath2 = Path()
@@ -19,46 +20,41 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
1920

2021
override fun drawFrame(canvas :Canvas, frameIndex: Int, scaleType: ImageView.ScaleType) {
2122
super.drawFrame(canvas,frameIndex, scaleType)
22-
performScaleType(scaleType)
23-
resetCachePath()
23+
resetCachePath(canvas)
2424

2525
val sprites = requestFrameSprites(frameIndex)
2626
sprites.forEach {
27-
drawSprite(it)
27+
drawSprite(it,canvas)
2828
}
2929
}
3030

31-
private fun resetCachePath(){
32-
if(canvasSizeChange){
31+
private fun resetCachePath(canvas :Canvas){
32+
if(canvasW != canvas.width || canvasH != canvas.height){
3333
sharedPathMap.clear()
3434
}
3535
}
3636

37-
private fun enableScaleEntity(){
37+
private fun resetShareMatrix(transform :Matrix){
3838
sharedContentTransform.reset()
3939
sharedContentTransform.postScale(scaleEntity.scaleFx, scaleEntity.scaleFy)
4040
sharedContentTransform.postTranslate(scaleEntity.tranFx, scaleEntity.tranFy)
41+
sharedContentTransform.preConcat(transform)
4142
}
4243

43-
private fun performScaleType(scaleType: ImageView.ScaleType) {
44-
val canvas = this.canvas ?: return
45-
scaleEntity.performScaleType(canvas.width.toFloat(),canvas.height.toFloat(),videoItem.videoSize.width.toFloat(),videoItem.videoSize.height.toFloat(),scaleType)
44+
private fun drawSprite(sprite: SVGADrawerSprite,canvas :Canvas) {
45+
drawImage(sprite, canvas)
46+
drawShape(sprite, canvas)
4647
}
4748

48-
private fun drawSprite(sprite: SVGADrawerSprite) {
49-
drawImage(sprite)
50-
drawShape(sprite)
51-
}
52-
53-
private fun drawImage(sprite: SVGADrawerSprite) {
54-
val canvas = this.canvas ?: return
49+
private fun drawImage(sprite: SVGADrawerSprite, canvas :Canvas) {
5550
(dynamicItem.dynamicImage[sprite.imageKey] ?: videoItem.images[sprite.imageKey])?.let {
51+
resetShareMatrix(sprite.frameEntity.transform)
52+
5653
sharedPaint.reset()
5754
sharedPaint.isAntiAlias = videoItem.antiAlias
5855
sharedPaint.isFilterBitmap = videoItem.antiAlias
5956
sharedPaint.alpha = (sprite.frameEntity.alpha * 255).toInt()
60-
enableScaleEntity()
61-
sharedContentTransform.preConcat(sprite.frameEntity.transform)
57+
6258
if (sprite.frameEntity.maskPath != null) {
6359
val maskPath = sprite.frameEntity.maskPath ?: return@let
6460
canvas.save()
@@ -74,12 +70,11 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
7470
sharedContentTransform.preScale((sprite.frameEntity.layout.width / it.width).toFloat(), (sprite.frameEntity.layout.width / it.width).toFloat())
7571
canvas.drawBitmap(it, sharedContentTransform, sharedPaint)
7672
}
77-
drawText(it, sprite)
73+
drawText(canvas,it, sprite)
7874
}
7975
}
8076

81-
private fun drawText(drawingBitmap: Bitmap, sprite: SVGADrawerSprite) {
82-
val canvas = this.canvas ?: return
77+
private fun drawText(canvas :Canvas, drawingBitmap: Bitmap, sprite: SVGADrawerSprite) {
8378
dynamicItem.dynamicText[sprite.imageKey]?.let { drawingText ->
8479
dynamicItem.dynamicTextPaint[sprite.imageKey]?.let { drawingTextPaint ->
8580
val textBitmap = Bitmap.createBitmap(drawingBitmap.width, drawingBitmap.height, Bitmap.Config.ARGB_8888)
@@ -115,11 +110,8 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
115110
}
116111
}
117112

118-
private fun drawShape(sprite: SVGADrawerSprite) {
119-
val canvas = this.canvas ?: return
120-
enableScaleEntity()
121-
sharedContentTransform.preConcat(sprite.frameEntity.transform)
122-
113+
private fun drawShape(sprite: SVGADrawerSprite, canvas :Canvas) {
114+
resetShareMatrix(sprite.frameEntity.transform)
123115
sprite.frameEntity.shapes.forEach { shape ->
124116
shape.buildPath()
125117
shape.shapePath?.let {

0 commit comments

Comments
 (0)