mirror of
https://github.com/SimpleMobileTools/Simple-Draw.git
synced 2025-06-05 21:59:17 +02:00
properly handle exporting and importing eraser, by setting "none" stroke
This commit is contained in:
@ -200,7 +200,7 @@ class MyCanvas(context: Context, attrs: AttributeSet) : View(context, attrs) {
|
|||||||
mPaths.put(mPath, mPaintOptions)
|
mPaths.put(mPath, mPaintOptions)
|
||||||
pathsUpdated()
|
pathsUpdated()
|
||||||
mPath = MyPath()
|
mPath = MyPath()
|
||||||
mPaintOptions = PaintOptions(mPaintOptions.color, mPaintOptions.strokeWidth)
|
mPaintOptions = PaintOptions(mPaintOptions.color, mPaintOptions.strokeWidth, mPaintOptions.isEraser)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun pathsUpdated() {
|
private fun pathsUpdated() {
|
||||||
@ -256,7 +256,7 @@ class MyCanvas(context: Context, attrs: AttributeSet) : View(context, attrs) {
|
|||||||
val size = parcel.readInt()
|
val size = parcel.readInt()
|
||||||
for (i in 0 until size) {
|
for (i in 0 until size) {
|
||||||
val key = parcel.readSerializable() as MyPath
|
val key = parcel.readSerializable() as MyPath
|
||||||
val paintOptions = PaintOptions(parcel.readInt(), parcel.readFloat())
|
val paintOptions = PaintOptions(parcel.readInt(), parcel.readFloat(), parcel.readInt() == 1)
|
||||||
paths.put(key, paintOptions)
|
paths.put(key, paintOptions)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -268,6 +268,7 @@ class MyCanvas(context: Context, attrs: AttributeSet) : View(context, attrs) {
|
|||||||
out.writeSerializable(path)
|
out.writeSerializable(path)
|
||||||
out.writeInt(paintOptions.color)
|
out.writeInt(paintOptions.color)
|
||||||
out.writeFloat(paintOptions.strokeWidth)
|
out.writeFloat(paintOptions.strokeWidth)
|
||||||
|
out.writeInt(if (paintOptions.isEraser) 1 else 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,11 +5,15 @@ import android.graphics.Color
|
|||||||
class PaintOptions {
|
class PaintOptions {
|
||||||
var color = Color.BLACK
|
var color = Color.BLACK
|
||||||
var strokeWidth = 5f
|
var strokeWidth = 5f
|
||||||
|
var isEraser = false
|
||||||
|
|
||||||
constructor()
|
constructor()
|
||||||
|
|
||||||
constructor(color: Int, strokeWidth: Float) {
|
constructor(color: Int, strokeWidth: Float, isEraser: Boolean) {
|
||||||
this.color = color
|
this.color = color
|
||||||
this.strokeWidth = strokeWidth
|
this.strokeWidth = strokeWidth
|
||||||
|
this.isEraser = isEraser
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getColorToExport() = if (isEraser) "none" else Integer.toHexString(color).substring(2)
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ object Svg {
|
|||||||
}
|
}
|
||||||
|
|
||||||
write("\" fill=\"none\" stroke=\"#")
|
write("\" fill=\"none\" stroke=\"#")
|
||||||
write(Integer.toHexString(options.color).substring(2))
|
write(options.getColorToExport())
|
||||||
write("\" stroke-width=\"")
|
write("\" stroke-width=\"")
|
||||||
write(options.strokeWidth.toString())
|
write(options.strokeWidth.toString())
|
||||||
write("\" stroke-linecap=\"round\"/>")
|
write("\" stroke-linecap=\"round\"/>")
|
||||||
@ -60,7 +60,7 @@ object Svg {
|
|||||||
svg.paths.forEach {
|
svg.paths.forEach {
|
||||||
val path = MyPath()
|
val path = MyPath()
|
||||||
path.readObject(it.data, activity)
|
path.readObject(it.data, activity)
|
||||||
val options = PaintOptions(it.color, it.strokeWidth)
|
val options = PaintOptions(it.color, it.strokeWidth, it.isEraser)
|
||||||
|
|
||||||
canvas.addPath(path, options)
|
canvas.addPath(path, options)
|
||||||
}
|
}
|
||||||
@ -96,9 +96,11 @@ object Svg {
|
|||||||
|
|
||||||
pathElement.setStartElementListener { attributes ->
|
pathElement.setStartElementListener { attributes ->
|
||||||
val d = attributes.getValue("d")
|
val d = attributes.getValue("d")
|
||||||
val color = Color.parseColor(attributes.getValue("stroke"))
|
|
||||||
val width = attributes.getValue("stroke-width").toFloat()
|
val width = attributes.getValue("stroke-width").toFloat()
|
||||||
svg.paths.add(SPath(d, color, width))
|
val stroke = attributes.getValue("stroke")
|
||||||
|
val isEraser = stroke == "none"
|
||||||
|
val color = if (isEraser) 0 else Color.parseColor(stroke)
|
||||||
|
svg.paths.add(SPath(d, color, width, isEraser))
|
||||||
}
|
}
|
||||||
|
|
||||||
Xml.parse(inputStream, Xml.Encoding.UTF_8, root.contentHandler)
|
Xml.parse(inputStream, Xml.Encoding.UTF_8, root.contentHandler)
|
||||||
@ -122,5 +124,5 @@ object Svg {
|
|||||||
|
|
||||||
private class SRect(val width: Int, val height: Int, val color: Int) : Serializable
|
private class SRect(val width: Int, val height: Int, val color: Int) : Serializable
|
||||||
|
|
||||||
private class SPath(var data: String, var color: Int, var strokeWidth: Float) : Serializable
|
private class SPath(var data: String, var color: Int, var strokeWidth: Float, var isEraser: Boolean) : Serializable
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user