Skip to content

Commit b6ef6a1

Browse files
authored
Merge pull request svga#32 from andyliumstar/master
Update SVGACanvasDrawer.kt
2 parents b74282c + a06fb4c commit b6ef6a1

File tree

1 file changed

+9
-19
lines changed

1 file changed

+9
-19
lines changed

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

+9-19
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ import android.widget.ImageView
88
* Created by cuiminghui on 2017/3/29.
99
*/
1010

11-
private var sharedDrawFilter = PaintFlagsDrawFilter(0, Paint.FILTER_BITMAP_FLAG or Paint.ANTI_ALIAS_FLAG)
12-
1311
class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicEntity) : SGVADrawer(videoItem) {
1412

1513
var canvas: Canvas? = null
@@ -22,18 +20,10 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
2220

2321
override fun drawFrame(frameIndex: Int, scaleType: ImageView.ScaleType) {
2422
super.drawFrame(frameIndex, scaleType)
25-
var originalFilter: DrawFilter? = null
26-
if (videoItem.antiAlias) {
27-
originalFilter = this.canvas?.drawFilter
28-
this.canvas?.drawFilter = sharedDrawFilter
29-
}
3023
val sprites = requestFrameSprites(frameIndex)
3124
sprites.forEach {
3225
drawSprite(it, scaleType)
3326
}
34-
if (videoItem.antiAlias) {
35-
this.canvas?.drawFilter = originalFilter
36-
}
3727
}
3828

3929
private fun performScaleType(scaleType: ImageView.ScaleType) {
@@ -189,20 +179,23 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
189179
val targetRectBottom = drawingBitmap.height
190180
val y = (targetRectBottom + targetRectTop - drawingTextPaint.fontMetrics.bottom - drawingTextPaint.fontMetrics.top) / 2
191181
textCanvas.drawText(drawingText, x.toFloat(), y, drawingTextPaint)
182+
183+
sharedPaint.reset()
184+
sharedPaint.isAntiAlias = videoItem.antiAlias
192185
if (sprite.frameEntity.maskPath != null) {
193186
val maskPath = sprite.frameEntity.maskPath ?: return@let
194187
canvas.save()
195188
canvas.concat(sharedContentTransform)
196189
canvas.clipRect(0, 0, drawingBitmap.width, drawingBitmap.height)
197190
val bitmapShader = BitmapShader(textBitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT)
198191
sharedPaint.shader = bitmapShader
199-
sharedPaint.isAntiAlias = true
200192
sharedPath.reset()
201193
maskPath.buildPath(sharedPath)
202194
canvas.drawPath(sharedPath, sharedPaint)
203195
canvas.restore()
204196
}
205197
else {
198+
sharedPaint.isFilterBitmap = videoItem.antiAlias
206199
canvas.drawBitmap(textBitmap, sharedContentTransform, sharedPaint)
207200
}
208201
}
@@ -226,13 +219,13 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
226219
thisTransform.postConcat(it)
227220
}
228221
thisTransform.postConcat(sharedContentTransform)
229-
sharedPath.transform(thisTransform)
222+
sharedPath.transform(sharedContentTransform)
223+
sharedPaint.reset()
224+
sharedPaint.isAntiAlias = videoItem.antiAlias
225+
sharedPaint.alpha = (sprite.frameEntity.alpha * 255).toInt()
230226
shape.styles?.fill?.let {
231227
if (it != 0x00000000) {
232-
sharedPaint.reset()
233228
sharedPaint.color = it
234-
sharedPaint.alpha = (sprite.frameEntity.alpha * 255).toInt()
235-
sharedPaint.isAntiAlias = true
236229
if (sprite.frameEntity.maskPath !== null) canvas.save()
237230
sprite.frameEntity.maskPath?.let { maskPath ->
238231
sharedPath2.reset()
@@ -246,8 +239,6 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
246239
}
247240
shape.styles?.strokeWidth?.let {
248241
if (it > 0) {
249-
sharedPaint.reset()
250-
sharedPaint.alpha = (sprite.frameEntity.alpha * 255).toInt()
251242
resetShapeStrokePaint(shape)
252243
if (sprite.frameEntity.maskPath !== null) canvas.save()
253244
sprite.frameEntity.maskPath?.let { maskPath ->
@@ -293,9 +284,8 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
293284
}
294285

295286
private fun resetShapeStrokePaint(shape: SVGAVideoShapeEntity) {
296-
297287
sharedPaint.reset()
298-
sharedPaint.isAntiAlias = true
288+
sharedPaint.isAntiAlias = videoItem.antiAlias
299289
sharedPaint.style = Paint.Style.STROKE
300290
shape.styles?.stroke?.let {
301291
sharedPaint.color = it

0 commit comments

Comments
 (0)