From f37722fe4106f9cbd9ba0e052ca86afdd58f1b7c Mon Sep 17 00:00:00 2001 From: PonyCui Date: Wed, 3 Jul 2019 15:19:33 +0800 Subject: [PATCH] feat: Add dynamicDrawerSized logic. --- .../java/com/opensource/svgaplayer/SVGADynamicEntity.kt | 7 +++++++ .../com/opensource/svgaplayer/drawer/SVGACanvasDrawer.kt | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/library/src/main/java/com/opensource/svgaplayer/SVGADynamicEntity.kt b/library/src/main/java/com/opensource/svgaplayer/SVGADynamicEntity.kt index b5475593..940544e5 100644 --- a/library/src/main/java/com/opensource/svgaplayer/SVGADynamicEntity.kt +++ b/library/src/main/java/com/opensource/svgaplayer/SVGADynamicEntity.kt @@ -26,6 +26,8 @@ class SVGADynamicEntity { internal var dynamicDrawer: HashMap Boolean> = hashMapOf() + internal var dynamicDrawerSized: HashMap Boolean> = hashMapOf() + internal var isTextDirty = false fun setHidden(value: Boolean, forKey: String) { @@ -77,6 +79,10 @@ class SVGADynamicEntity { this.dynamicDrawer.put(forKey, drawer) } + fun setDynamicDrawerSized(drawer: (canvas: Canvas, frameIndex: Int, width: Int, height: Int) -> Boolean, forKey: String) { + this.dynamicDrawerSized.put(forKey, drawer) + } + fun clearDynamicObjects() { this.isTextDirty = true this.dynamicHidden.clear() @@ -85,6 +91,7 @@ class SVGADynamicEntity { this.dynamicTextPaint.clear() this.dynamicLayoutText.clear() this.dynamicDrawer.clear() + this.dynamicDrawerSized.clear() } } \ No newline at end of file diff --git a/library/src/main/java/com/opensource/svgaplayer/drawer/SVGACanvasDrawer.kt b/library/src/main/java/com/opensource/svgaplayer/drawer/SVGACanvasDrawer.kt index 99b56e68..69f03e47 100644 --- a/library/src/main/java/com/opensource/svgaplayer/drawer/SVGACanvasDrawer.kt +++ b/library/src/main/java/com/opensource/svgaplayer/drawer/SVGACanvasDrawer.kt @@ -326,6 +326,13 @@ internal class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVG it.invoke(canvas, frameIndex) canvas.restore() } + dynamicItem.dynamicDrawerSized[imageKey]?.let { + val frameMatrix = shareFrameMatrix(sprite.frameEntity.transform) + canvas.save() + canvas.concat(frameMatrix) + it.invoke(canvas, frameIndex, sprite.frameEntity.layout.width.toInt(), sprite.frameEntity.layout.height.toInt()) + canvas.restore() + } } class ShareValues {