convert some Actions to kotlin

This commit is contained in:
tibbi
2017-04-08 00:32:47 +02:00
parent dadad482ed
commit ef19eafa1f
8 changed files with 152 additions and 145 deletions

View File

@ -0,0 +1,45 @@
package com.simplemobiletools.draw.actions
import android.graphics.Path
import java.io.IOException
import java.io.Writer
import java.security.InvalidParameterException
class Line : Action {
val x: Float
val y: Float
@Throws(InvalidParameterException::class)
constructor(data: String) {
if (data.startsWith("L"))
throw InvalidParameterException("The Line data should start with 'L'.")
try {
val xy = data.substring(1).split(",".toRegex()).dropLastWhile(String::isEmpty).toTypedArray()
x = java.lang.Float.parseFloat(xy[0].trim { it <= ' ' })
y = java.lang.Float.parseFloat(xy[1].trim { it <= ' ' })
} catch (ignored: Exception) {
throw InvalidParameterException("Error parsing the given Line data.")
}
}
constructor(x: Float, y: Float) {
this.x = x
this.y = y
}
override fun perform(path: Path) {
path.lineTo(x, y)
}
@Throws(IOException::class)
override fun perform(writer: Writer) {
writer.write("L")
writer.write(x.toString())
writer.write(",")
writer.write(y.toString())
}
}

View File

@ -0,0 +1,45 @@
package com.simplemobiletools.draw.actions
import android.graphics.Path
import java.io.IOException
import java.io.Writer
import java.security.InvalidParameterException
class Move : Action {
val x: Float
val y: Float
@Throws(InvalidParameterException::class)
constructor(data: String) {
if (data.startsWith("M"))
throw InvalidParameterException("The Move data should start with 'M'.")
try {
val xy = data.substring(1).split(",".toRegex()).dropLastWhile(String::isEmpty).toTypedArray()
x = java.lang.Float.parseFloat(xy[0].trim { it <= ' ' })
y = java.lang.Float.parseFloat(xy[1].trim { it <= ' ' })
} catch (ignored: Exception) {
throw InvalidParameterException("Error parsing the given Move data.")
}
}
constructor(x: Float, y: Float) {
this.x = x
this.y = y
}
override fun perform(path: Path) {
path.moveTo(x, y)
}
@Throws(IOException::class)
override fun perform(writer: Writer) {
writer.write("M")
writer.write(x.toString())
writer.write(",")
writer.write(y.toString())
}
}

View File

@ -0,0 +1,57 @@
package com.simplemobiletools.draw.actions
import android.graphics.Path
import java.io.IOException
import java.io.Writer
import java.security.InvalidParameterException
class Quad : Action {
val x1: Float
val y1: Float
val x2: Float
val y2: Float
constructor(data: String) {
if (data.startsWith("Q"))
throw InvalidParameterException("The Quad data should start with 'Q'.")
try {
val parts = data.split("\\s+".toRegex()).dropLastWhile(String::isEmpty).toTypedArray()
val xy1 = parts[0].substring(1).split(",".toRegex()).dropLastWhile(String::isEmpty).toTypedArray()
val xy2 = parts[1].split(",".toRegex()).dropLastWhile(String::isEmpty).toTypedArray() // No need to skip the 'Q' here
x1 = java.lang.Float.parseFloat(xy1[0].trim { it <= ' ' })
y1 = java.lang.Float.parseFloat(xy1[1].trim { it <= ' ' })
x2 = java.lang.Float.parseFloat(xy2[0].trim { it <= ' ' })
y2 = java.lang.Float.parseFloat(xy2[1].trim { it <= ' ' })
} catch (ignored: Exception) {
throw InvalidParameterException("Error parsing the given Quad data.")
}
}
constructor(x1: Float, y1: Float, x2: Float, y2: Float) {
this.x1 = x1
this.y1 = y1
this.x2 = x2
this.y2 = y2
}
override fun perform(path: Path) {
path.quadTo(x1, y1, x2, y2)
}
@Throws(IOException::class)
override fun perform(writer: Writer) {
writer.write("Q")
writer.write(x1.toString())
writer.write(",")
writer.write(y1.toString())
writer.write(" ")
writer.write(x2.toString())
writer.write(",")
writer.write(y2.toString())
}
}