Refactoring: TableDrawer belongs to ReplayerAnimator

bs
Laurent 5 years ago
parent 62c042cd0e
commit 280865da43
  1. 11
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayExportService.kt
  2. 21
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerAnimator.kt
  3. 8
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/ReplayerView.kt
  4. 4
      app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/replayer/TableDrawer.kt

@ -57,8 +57,8 @@ class ReplayExportService : Service() {
fun gifExport(handHistoryId: String) { fun gifExport(handHistoryId: String) {
this@ReplayExportService.handHistoryId = handHistoryId this@ReplayExportService.handHistoryId = handHistoryId
startGIFExport() startGIFExport()
} }
private fun startGIFExport() { private fun startGIFExport() {
GlobalScope.launch(coroutineContext) { GlobalScope.launch(coroutineContext) {
@ -76,7 +76,7 @@ class ReplayExportService : Service() {
val width = square val width = square
val height = square val height = square
animator.setDimension(width.toFloat(), height.toFloat()) animator.configure(width.toFloat(), height.toFloat(), context)
val formattedDate = Date().dateTimeFileFormatted val formattedDate = Date().dateTimeFileFormatted
val path = File( val path = File(
@ -92,7 +92,7 @@ class ReplayExportService : Service() {
drawer.configurePaints(context, animator) drawer.configurePaints(context, animator)
var animationCount = 0 var animationCount = 0
animator.frames(drawer, context) { bitmap, count -> animator.frames(context) { bitmap, count ->
when { when {
count > 10 -> { count > 10 -> {
@ -136,13 +136,14 @@ class ReplayExportService : Service() {
val width = square val width = square
val height = square val height = square
animator.setDimension(width.toFloat(), height.toFloat()) animator.configure(width.toFloat(), height.toFloat(), this@ReplayExportService)
// animator.setDimension()
val drawer = TableDrawer() val drawer = TableDrawer()
drawer.configurePaints(context, animator) drawer.configurePaints(context, animator)
// generates all images and file descriptor // generates all images and file descriptor
Timber.d("Generating images for video...") Timber.d("Generating images for video...")
val tmpDir = animator.generateVideoContent(drawer, this@ReplayExportService) val tmpDir = animator.generateVideoContent(this@ReplayExportService)
val dpath = "${tmpDir.path}/$FFMPEG_DESCRIPTOR_FILE" val dpath = "${tmpDir.path}/$FFMPEG_DESCRIPTOR_FILE"
// val directory = context.getExternalFilesDir(null) ?: throw PAIllegalStateException("File is invalid") // val directory = context.getExternalFilesDir(null) ?: throw PAIllegalStateException("File is invalid")

@ -22,6 +22,7 @@ import java.util.*
class ReplayerAnimator(var handHistory: HandHistory, var export: Boolean) { class ReplayerAnimator(var handHistory: HandHistory, var export: Boolean) {
// Steps & Frames // Steps & Frames
private var drawer = TableDrawer()
/*** /***
* The number of frames per second * The number of frames per second
@ -233,10 +234,17 @@ class ReplayerAnimator(var handHistory: HandHistory, var export: Boolean) {
var playerStrokeWidth = 8f var playerStrokeWidth = 8f
var cardStrokeWidth = 8f var cardStrokeWidth = 8f
fun configure(width: Float, height: Float, context: Context) {
this.setDimension(width, height)
this.drawer.configurePaints(context, this)
}
/*** /***
* Calculates the position of all elements to draw * Calculates the position of all elements to draw
*/ */
fun setDimension(width: Float, height: Float) { private fun setDimension(width: Float, height: Float) {
Timber.d("Setting dimensions...") Timber.d("Setting dimensions...")
this.width = width this.width = width
this.height = height this.height = height
@ -352,6 +360,9 @@ class ReplayerAnimator(var handHistory: HandHistory, var export: Boolean) {
} }
} }
fun drawTable(canvas: Canvas, context: Context) {
this.drawer.drawTable(canvas, context)
}
fun stackRectForPlayer(positionIndex: Int): RectF { fun stackRectForPlayer(positionIndex: Int): RectF {
return this.playerStackRects[positionIndex] return this.playerStackRects[positionIndex]
@ -486,7 +497,7 @@ class ReplayerAnimator(var handHistory: HandHistory, var export: Boolean) {
* Generates images and image descriptor to build the video using ffmpeg * Generates images and image descriptor to build the video using ffmpeg
* Command line: https://trac.ffmpeg.org/wiki/Slideshow * Command line: https://trac.ffmpeg.org/wiki/Slideshow
*/ */
suspend fun generateVideoContent(tableDrawer: TableDrawer, context: Context): File { suspend fun generateVideoContent(context: Context): File {
var ffmpegImageDescriptor = "" var ffmpegImageDescriptor = ""
var count = 0 var count = 0
@ -507,7 +518,7 @@ class ReplayerAnimator(var handHistory: HandHistory, var export: Boolean) {
val canvas = Canvas(bitmap) val canvas = Canvas(bitmap)
val vo = this.visualOccurences / 90.0 // this is needed before the call to drawTable which pass to the next frame val vo = this.visualOccurences / 90.0 // this is needed before the call to drawTable which pass to the next frame
tableDrawer.drawTable(canvas, context) this.drawer.drawTable(canvas, context)
imagePath = File(directory, "img_$count.png").path imagePath = File(directory, "img_$count.png").path
@ -545,7 +556,7 @@ class ReplayerAnimator(var handHistory: HandHistory, var export: Boolean) {
* As soon as a bitmap has been created, the [frameHandler] is called with the created * As soon as a bitmap has been created, the [frameHandler] is called with the created
* bitmap, and a appropriate occurrences of the bitmap to be added is passed along * bitmap, and a appropriate occurrences of the bitmap to be added is passed along
*/ */
fun frames(tableDrawer: TableDrawer, context: Context, frameHandler: (Bitmap, Int) -> Unit) { fun frames(context: Context, frameHandler: (Bitmap, Int) -> Unit) {
Timber.d("Step count = ${this.steps.size}") Timber.d("Step count = ${this.steps.size}")
@ -561,7 +572,7 @@ class ReplayerAnimator(var handHistory: HandHistory, var export: Boolean) {
val canvas = Canvas(bitmap) val canvas = Canvas(bitmap)
val vo = this.visualOccurences // this is needed before the call to drawTable which pass to the next frame val vo = this.visualOccurences // this is needed before the call to drawTable which pass to the next frame
tableDrawer.drawTable(canvas, context) this.drawer.drawTable(canvas, context)
frameHandler(bitmap, vo) frameHandler(bitmap, vo)

@ -9,8 +9,6 @@ import android.view.View
class ReplayerView(context: Context, attrs: AttributeSet) : View(context, attrs) { class ReplayerView(context: Context, attrs: AttributeSet) : View(context, attrs) {
private var drawer: TableDrawer = TableDrawer()
lateinit var animator: ReplayerAnimator lateinit var animator: ReplayerAnimator
private val animationHandler = Handler(Looper.getMainLooper()) private val animationHandler = Handler(Looper.getMainLooper())
@ -21,8 +19,8 @@ class ReplayerView(context: Context, attrs: AttributeSet) : View(context, attrs)
init { init {
this.viewTreeObserver.addOnGlobalLayoutListener { this.viewTreeObserver.addOnGlobalLayoutListener {
this.animator.setDimension(width.toFloat(), height.toFloat()) this.animator.configure(width.toFloat(), height.toFloat(), context)
this.drawer.configurePaints(context, this.animator) // this.drawer.configurePaints(context, this.animator)
} }
} }
@ -39,7 +37,7 @@ class ReplayerView(context: Context, attrs: AttributeSet) : View(context, attrs)
super.onDraw(canvas) super.onDraw(canvas)
canvas?.let { canvas?.let {
this.drawer.drawTable(canvas, context) this.animator.drawTable(canvas, context)
} }
} }

@ -30,10 +30,6 @@ class TableDrawer {
private val colorsByAmount = hashMapOf<Double, ChipColor>() private val colorsByAmount = hashMapOf<Double, ChipColor>()
// fun clearColors() {
// this.colorsByAmount.clear()
// }
fun configurePaints(context: Context, animator: ReplayerAnimator) { fun configurePaints(context: Context, animator: ReplayerAnimator) {
this.animator = animator this.animator = animator

Loading…
Cancel
Save