@@ -8,8 +8,6 @@ import android.widget.ImageView
8
8
* Created by cuiminghui on 2017/3/29.
9
9
*/
10
10
11
- private var sharedDrawFilter = PaintFlagsDrawFilter (0 , Paint .FILTER_BITMAP_FLAG or Paint .ANTI_ALIAS_FLAG )
12
-
13
11
class SVGACanvasDrawer (videoItem : SVGAVideoEntity , val dynamicItem : SVGADynamicEntity ) : SGVADrawer(videoItem) {
14
12
15
13
var canvas: Canvas ? = null
@@ -22,18 +20,10 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
22
20
23
21
override fun drawFrame (frameIndex : Int , scaleType : ImageView .ScaleType ) {
24
22
super .drawFrame(frameIndex, scaleType)
25
- var originalFilter: DrawFilter ? = null
26
- if (videoItem.antiAlias) {
27
- originalFilter = this .canvas?.drawFilter
28
- this .canvas?.drawFilter = sharedDrawFilter
29
- }
30
23
val sprites = requestFrameSprites(frameIndex)
31
24
sprites.forEach {
32
25
drawSprite(it, scaleType)
33
26
}
34
- if (videoItem.antiAlias) {
35
- this .canvas?.drawFilter = originalFilter
36
- }
37
27
}
38
28
39
29
private fun performScaleType (scaleType : ImageView .ScaleType ) {
@@ -189,20 +179,23 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
189
179
val targetRectBottom = drawingBitmap.height
190
180
val y = (targetRectBottom + targetRectTop - drawingTextPaint.fontMetrics.bottom - drawingTextPaint.fontMetrics.top) / 2
191
181
textCanvas.drawText(drawingText, x.toFloat(), y, drawingTextPaint)
182
+
183
+ sharedPaint.reset()
184
+ sharedPaint.isAntiAlias = videoItem.antiAlias
192
185
if (sprite.frameEntity.maskPath != null ) {
193
186
val maskPath = sprite.frameEntity.maskPath ? : return @let
194
187
canvas.save()
195
188
canvas.concat(sharedContentTransform)
196
189
canvas.clipRect(0 , 0 , drawingBitmap.width, drawingBitmap.height)
197
190
val bitmapShader = BitmapShader (textBitmap, Shader .TileMode .REPEAT , Shader .TileMode .REPEAT )
198
191
sharedPaint.shader = bitmapShader
199
- sharedPaint.isAntiAlias = true
200
192
sharedPath.reset()
201
193
maskPath.buildPath(sharedPath)
202
194
canvas.drawPath(sharedPath, sharedPaint)
203
195
canvas.restore()
204
196
}
205
197
else {
198
+ sharedPaint.isFilterBitmap = videoItem.antiAlias
206
199
canvas.drawBitmap(textBitmap, sharedContentTransform, sharedPaint)
207
200
}
208
201
}
@@ -226,13 +219,13 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
226
219
thisTransform.postConcat(it)
227
220
}
228
221
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()
230
226
shape.styles?.fill?.let {
231
227
if (it != 0x00000000 ) {
232
- sharedPaint.reset()
233
228
sharedPaint.color = it
234
- sharedPaint.alpha = (sprite.frameEntity.alpha * 255 ).toInt()
235
- sharedPaint.isAntiAlias = true
236
229
if (sprite.frameEntity.maskPath != = null ) canvas.save()
237
230
sprite.frameEntity.maskPath?.let { maskPath ->
238
231
sharedPath2.reset()
@@ -246,8 +239,6 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
246
239
}
247
240
shape.styles?.strokeWidth?.let {
248
241
if (it > 0 ) {
249
- sharedPaint.reset()
250
- sharedPaint.alpha = (sprite.frameEntity.alpha * 255 ).toInt()
251
242
resetShapeStrokePaint(shape)
252
243
if (sprite.frameEntity.maskPath != = null ) canvas.save()
253
244
sprite.frameEntity.maskPath?.let { maskPath ->
@@ -293,9 +284,8 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
293
284
}
294
285
295
286
private fun resetShapeStrokePaint (shape : SVGAVideoShapeEntity ) {
296
-
297
287
sharedPaint.reset()
298
- sharedPaint.isAntiAlias = true
288
+ sharedPaint.isAntiAlias = videoItem.antiAlias
299
289
sharedPaint.style = Paint .Style .STROKE
300
290
shape.styles?.stroke?.let {
301
291
sharedPaint.color = it
0 commit comments