1
1
package com.opensource.svgaplayer
2
2
3
3
import android.graphics.*
4
- import android.os.Build
5
- import android.R.attr.x
6
4
import android.widget.ImageView
7
5
8
6
9
7
/* *
10
8
* Created by cuiminghui on 2017/3/29.
11
9
*/
12
10
13
- class SVGACanvasDrawer (videoItem : SVGAVideoEntity , val dynamicItem : SVGADynamicEntity , val canvas : Canvas ) : SGVADrawer(videoItem) {
11
+ class SVGACanvasDrawer (videoItem : SVGAVideoEntity , val dynamicItem : SVGADynamicEntity , private val canvas : Canvas ) : SGVADrawer(videoItem) {
14
12
15
- val sharedPaint = Paint ()
16
- val sharedPath = Path ()
17
- val sharedContentTransform = Matrix ()
13
+ private val sharedPaint = Paint ()
14
+ private val sharedPath = Path ()
15
+ private val sharedContentTransform = Matrix ()
18
16
19
17
override fun drawFrame (frameIndex : Int , scaleType : ImageView .ScaleType ) {
20
18
super .drawFrame(frameIndex, scaleType)
@@ -111,20 +109,19 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
111
109
112
110
private fun drawImage (sprite : SVGADrawerSprite , scaleType : ImageView .ScaleType ) {
113
111
(dynamicItem.dynamicImage[sprite.imageKey] ? : videoItem.images[sprite.imageKey])?.let {
114
- val drawingBitmap = it
115
112
sharedPaint.reset()
116
113
sharedContentTransform.reset()
117
114
sharedPaint.isAntiAlias = videoItem.antiAlias
118
115
sharedPaint.alpha = (sprite.frameEntity.alpha * 255 ).toInt()
119
116
performScaleType(scaleType)
120
117
sharedContentTransform.preConcat(sprite.frameEntity.transform)
121
- sharedContentTransform.preScale((sprite.frameEntity.layout.width / drawingBitmap .width).toFloat(), (sprite.frameEntity.layout.width / drawingBitmap .width).toFloat())
118
+ sharedContentTransform.preScale((sprite.frameEntity.layout.width / it .width).toFloat(), (sprite.frameEntity.layout.width / it .width).toFloat())
122
119
if (sprite.frameEntity.maskPath != null ) {
123
120
val maskPath = sprite.frameEntity.maskPath ? : return @let
124
121
canvas.save()
125
122
canvas.concat(sharedContentTransform)
126
- canvas.clipRect(0 , 0 , drawingBitmap .width, drawingBitmap .height)
127
- val bitmapShader = BitmapShader (drawingBitmap , Shader .TileMode .REPEAT , Shader .TileMode .REPEAT )
123
+ canvas.clipRect(0 , 0 , it .width, it .height)
124
+ val bitmapShader = BitmapShader (it , Shader .TileMode .REPEAT , Shader .TileMode .REPEAT )
128
125
sharedPaint.shader = bitmapShader
129
126
sharedPaint.isAntiAlias = true
130
127
sharedPath.reset()
@@ -133,17 +130,15 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
133
130
canvas.restore()
134
131
}
135
132
else {
136
- canvas.drawBitmap(drawingBitmap , sharedContentTransform, sharedPaint)
133
+ canvas.drawBitmap(it , sharedContentTransform, sharedPaint)
137
134
}
138
- drawText(drawingBitmap , sprite)
135
+ drawText(it , sprite)
139
136
}
140
137
}
141
138
142
139
private fun drawText (drawingBitmap : Bitmap , sprite : SVGADrawerSprite ) {
143
- dynamicItem.dynamicText[sprite.imageKey]?.let {
144
- val drawingText = it
145
- dynamicItem.dynamicTextPaint[sprite.imageKey]?.let {
146
- val drawingTextPaint = it
140
+ dynamicItem.dynamicText[sprite.imageKey]?.let { drawingText ->
141
+ dynamicItem.dynamicTextPaint[sprite.imageKey]?.let { drawingTextPaint ->
147
142
val textBitmap = Bitmap .createBitmap(drawingBitmap.width, drawingBitmap.height, Bitmap .Config .ARGB_8888 )
148
143
val textCanvas = Canvas (textBitmap)
149
144
drawingTextPaint.isAntiAlias = true
@@ -178,8 +173,7 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
178
173
sharedContentTransform.reset()
179
174
performScaleType(scaleType)
180
175
sharedContentTransform.preConcat(sprite.frameEntity.transform)
181
- sprite.frameEntity.shapes.forEach {
182
- val shape = it
176
+ sprite.frameEntity.shapes.forEach { shape ->
183
177
sharedPath.reset()
184
178
shape.shapePath?.let {
185
179
sharedPath.addPath(it)
@@ -223,25 +217,17 @@ class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVGADynamicE
223
217
sharedPaint.strokeWidth = it
224
218
}
225
219
shape.styles?.lineCap?.let {
226
- if (it.equals(" butt" , true )) {
227
- sharedPaint.strokeCap = Paint .Cap .BUTT
228
- }
229
- else if (it.equals(" round" , true )) {
230
- sharedPaint.strokeCap = Paint .Cap .ROUND
231
- }
232
- else if (it.equals(" square" , true )) {
233
- sharedPaint.strokeCap = Paint .Cap .SQUARE
220
+ when {
221
+ it.equals(" butt" , true ) -> sharedPaint.strokeCap = Paint .Cap .BUTT
222
+ it.equals(" round" , true ) -> sharedPaint.strokeCap = Paint .Cap .ROUND
223
+ it.equals(" square" , true ) -> sharedPaint.strokeCap = Paint .Cap .SQUARE
234
224
}
235
225
}
236
226
shape.styles?.lineJoin?.let {
237
- if (it.equals(" miter" , true )) {
238
- sharedPaint.strokeJoin = Paint .Join .MITER
239
- }
240
- else if (it.equals(" round" , true )) {
241
- sharedPaint.strokeJoin = Paint .Join .ROUND
242
- }
243
- else if (it.equals(" bevel" , true )) {
244
- sharedPaint.strokeJoin = Paint .Join .BEVEL
227
+ when {
228
+ it.equals(" miter" , true ) -> sharedPaint.strokeJoin = Paint .Join .MITER
229
+ it.equals(" round" , true ) -> sharedPaint.strokeJoin = Paint .Join .ROUND
230
+ it.equals(" bevel" , true ) -> sharedPaint.strokeJoin = Paint .Join .BEVEL
245
231
}
246
232
}
247
233
shape.styles?.miterLimit?.let {
0 commit comments