diff --git a/changelog.md b/changelog.md
index 00085f1e..18378758 100644
--- a/changelog.md
+++ b/changelog.md
@@ -5,10 +5,12 @@
### Added
- More robust SVG → vector conversions by Android Studio tools (#47)
+- More compact printing of 2D coordinates when y < 0 for vector drawables
### Fixed
- In rare cases, subpath start points were tracked incorrectly which resulted in a crash (#57)
+- Disabled `ConvertCurvesToArcs` until some edge cases can be worked out (#65)
## 2.1.0 - 09-14-2021
diff --git a/vgo/src/main/kotlin/com/jzbrooks/vgo/svg/ScalableVectorGraphicCommandPrinter.kt b/vgo/src/main/kotlin/com/jzbrooks/vgo/svg/ScalableVectorGraphicCommandPrinter.kt
index 1822cfe3..85328062 100644
--- a/vgo/src/main/kotlin/com/jzbrooks/vgo/svg/ScalableVectorGraphicCommandPrinter.kt
+++ b/vgo/src/main/kotlin/com/jzbrooks/vgo/svg/ScalableVectorGraphicCommandPrinter.kt
@@ -219,13 +219,8 @@ class ScalableVectorGraphicCommandPrinter(private val decimalDigits: Int) : Comm
private fun print(point: Point) =
buildString {
append(print(point.x))
-
- if (point.y.sign < 0f) {
- append(print(point.y))
- } else {
- append(',')
- append(print(point.y))
- }
+ if (point.y.sign >= 0f) append(',')
+ append(print(point.y))
}
private fun print(parameter: CubicBezierCurve.Parameter): String {
diff --git a/vgo/src/main/kotlin/com/jzbrooks/vgo/svg/SvgOptimizationRegistry.kt b/vgo/src/main/kotlin/com/jzbrooks/vgo/svg/SvgOptimizationRegistry.kt
index 46a78335..2d0ed591 100644
--- a/vgo/src/main/kotlin/com/jzbrooks/vgo/svg/SvgOptimizationRegistry.kt
+++ b/vgo/src/main/kotlin/com/jzbrooks/vgo/svg/SvgOptimizationRegistry.kt
@@ -4,7 +4,6 @@ import com.jzbrooks.vgo.core.optimization.BakeTransformations
import com.jzbrooks.vgo.core.optimization.BreakoutImplicitCommands
import com.jzbrooks.vgo.core.optimization.CollapseGroups
import com.jzbrooks.vgo.core.optimization.CommandVariant
-import com.jzbrooks.vgo.core.optimization.ConvertCurvesToArcs
import com.jzbrooks.vgo.core.optimization.MergePaths
import com.jzbrooks.vgo.core.optimization.OptimizationRegistry
import com.jzbrooks.vgo.core.optimization.Polycommands
@@ -30,7 +29,7 @@ class SvgOptimizationRegistry : OptimizationRegistry(BOTTOM_UP, TOP_DOWN) {
BreakoutImplicitCommands(),
CommandVariant(CommandVariant.Mode.Relative),
SimplifyLineCommands(1e-3f),
- ConvertCurvesToArcs(ScalableVectorGraphicCommandPrinter(3)),
+// ConvertCurvesToArcs(ScalableVectorGraphicCommandPrinter(3)),
SimplifyBezierCurveCommands(1e-3f),
RemoveRedundantCommands(),
CommandVariant(CommandVariant.Mode.Compact(ScalableVectorGraphicCommandPrinter(3))),
diff --git a/vgo/src/main/kotlin/com/jzbrooks/vgo/vd/VectorDrawableCommandPrinter.kt b/vgo/src/main/kotlin/com/jzbrooks/vgo/vd/VectorDrawableCommandPrinter.kt
index fbb48512..61642a39 100644
--- a/vgo/src/main/kotlin/com/jzbrooks/vgo/vd/VectorDrawableCommandPrinter.kt
+++ b/vgo/src/main/kotlin/com/jzbrooks/vgo/vd/VectorDrawableCommandPrinter.kt
@@ -16,6 +16,7 @@ import com.jzbrooks.vgo.core.graphic.command.VerticalLineTo
import com.jzbrooks.vgo.core.util.math.Point
import java.math.RoundingMode
import java.text.DecimalFormat
+import kotlin.math.sign
class VectorDrawableCommandPrinter(private val decimalDigits: Int) : CommandPrinter {
private val formatter =
@@ -235,7 +236,7 @@ class VectorDrawableCommandPrinter(private val decimalDigits: Int) : CommandPrin
private fun print(point: Point) =
buildString {
append(print(point.x))
- append(',')
+ if (point.y.sign >= 0f) append(',')
append(print(point.y))
}
diff --git a/vgo/src/main/kotlin/com/jzbrooks/vgo/vd/VectorDrawableOptimizationRegistry.kt b/vgo/src/main/kotlin/com/jzbrooks/vgo/vd/VectorDrawableOptimizationRegistry.kt
index f716e4c1..a05320ba 100644
--- a/vgo/src/main/kotlin/com/jzbrooks/vgo/vd/VectorDrawableOptimizationRegistry.kt
+++ b/vgo/src/main/kotlin/com/jzbrooks/vgo/vd/VectorDrawableOptimizationRegistry.kt
@@ -4,7 +4,6 @@ import com.jzbrooks.vgo.core.optimization.BakeTransformations
import com.jzbrooks.vgo.core.optimization.BreakoutImplicitCommands
import com.jzbrooks.vgo.core.optimization.CollapseGroups
import com.jzbrooks.vgo.core.optimization.CommandVariant
-import com.jzbrooks.vgo.core.optimization.ConvertCurvesToArcs
import com.jzbrooks.vgo.core.optimization.MergePaths
import com.jzbrooks.vgo.core.optimization.OptimizationRegistry
import com.jzbrooks.vgo.core.optimization.Polycommands
@@ -30,7 +29,7 @@ class VectorDrawableOptimizationRegistry : OptimizationRegistry(BOTTOM_UP, TOP_D
BreakoutImplicitCommands(),
CommandVariant(CommandVariant.Mode.Relative),
SimplifyLineCommands(1e-3f),
- ConvertCurvesToArcs(VectorDrawableCommandPrinter(3)),
+// ConvertCurvesToArcs(VectorDrawableCommandPrinter(3)),
SimplifyBezierCurveCommands(1e-3f),
RemoveRedundantCommands(),
CommandVariant(CommandVariant.Mode.Compact(VectorDrawableCommandPrinter(3))),
diff --git a/vgo/src/test/resources/baseline/android_optimized.svg b/vgo/src/test/resources/baseline/android_optimized.svg
index c4d109e2..c34a33e9 100644
--- a/vgo/src/test/resources/baseline/android_optimized.svg
+++ b/vgo/src/test/resources/baseline/android_optimized.svg
@@ -1,3 +1,3 @@
diff --git a/vgo/src/test/resources/baseline/avocado_example_optimized.xml b/vgo/src/test/resources/baseline/avocado_example_optimized.xml
index 6e1fe4a7..06ee381a 100644
--- a/vgo/src/test/resources/baseline/avocado_example_optimized.xml
+++ b/vgo/src/test/resources/baseline/avocado_example_optimized.xml
@@ -1,4 +1,4 @@
-
+
diff --git a/vgo/src/test/resources/baseline/charging_battery_optimized.xml b/vgo/src/test/resources/baseline/charging_battery_optimized.xml
index 3a02c4e1..d7c44cea 100644
--- a/vgo/src/test/resources/baseline/charging_battery_optimized.xml
+++ b/vgo/src/test/resources/baseline/charging_battery_optimized.xml
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/vgo/src/test/resources/baseline/dribbble_ball_mark_optimized.svg b/vgo/src/test/resources/baseline/dribbble_ball_mark_optimized.svg
index 794012e3..8e54a4ea 100644
--- a/vgo/src/test/resources/baseline/dribbble_ball_mark_optimized.svg
+++ b/vgo/src/test/resources/baseline/dribbble_ball_mark_optimized.svg
@@ -1,3 +1,3 @@
diff --git a/vgo/src/test/resources/baseline/dribbble_ball_mark_optimized.xml b/vgo/src/test/resources/baseline/dribbble_ball_mark_optimized.xml
index fbaaa488..a7b31116 100644
--- a/vgo/src/test/resources/baseline/dribbble_ball_mark_optimized.xml
+++ b/vgo/src/test/resources/baseline/dribbble_ball_mark_optimized.xml
@@ -1,3 +1,3 @@
-
+
diff --git a/vgo/src/test/resources/baseline/eleven_below_single_optimized.svg b/vgo/src/test/resources/baseline/eleven_below_single_optimized.svg
index e2f0f409..fcfd4b95 100644
--- a/vgo/src/test/resources/baseline/eleven_below_single_optimized.svg
+++ b/vgo/src/test/resources/baseline/eleven_below_single_optimized.svg
@@ -28,35 +28,35 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -66,38 +66,38 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -140,7 +140,7 @@
-
+
@@ -169,28 +169,28 @@
-
+
-
-
+
+
-
+
-
-
+
+
-
-
-
+
+
+
-
+
-
+
@@ -206,14 +206,14 @@
-
+
-
+
-
+
diff --git a/vgo/src/test/resources/baseline/eleven_below_single_optimized.xml b/vgo/src/test/resources/baseline/eleven_below_single_optimized.xml
index 223c9066..2b8ba72c 100644
--- a/vgo/src/test/resources/baseline/eleven_below_single_optimized.xml
+++ b/vgo/src/test/resources/baseline/eleven_below_single_optimized.xml
@@ -1,124 +1,124 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/vgo/src/test/resources/baseline/guacamole_optimized.svg b/vgo/src/test/resources/baseline/guacamole_optimized.svg
index d27fac0a..bedcbf82 100644
--- a/vgo/src/test/resources/baseline/guacamole_optimized.svg
+++ b/vgo/src/test/resources/baseline/guacamole_optimized.svg
@@ -1 +1 @@
-
+
diff --git a/vgo/src/test/resources/baseline/nasa_optimized.svg b/vgo/src/test/resources/baseline/nasa_optimized.svg
index 2749f95a..4a750193 100644
--- a/vgo/src/test/resources/baseline/nasa_optimized.svg
+++ b/vgo/src/test/resources/baseline/nasa_optimized.svg
@@ -36,8 +36,8 @@
-
-
-
+
+
+
diff --git a/vgo/src/test/resources/baseline/nasa_optimized.xml b/vgo/src/test/resources/baseline/nasa_optimized.xml
index 9b60b691..49e2a7fe 100644
--- a/vgo/src/test/resources/baseline/nasa_optimized.xml
+++ b/vgo/src/test/resources/baseline/nasa_optimized.xml
@@ -1,6 +1,6 @@
-
-
-
+
+
+
diff --git a/vgo/src/test/resources/baseline/regression-31_optimized.xml b/vgo/src/test/resources/baseline/regression-31_optimized.xml
deleted file mode 100644
index 3f86c8e5..00000000
--- a/vgo/src/test/resources/baseline/regression-31_optimized.xml
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/vgo/src/test/resources/baseline/regression_31_optimized.xml b/vgo/src/test/resources/baseline/regression_31_optimized.xml
index 84a56d57..442d4188 100644
--- a/vgo/src/test/resources/baseline/regression_31_optimized.xml
+++ b/vgo/src/test/resources/baseline/regression_31_optimized.xml
@@ -1,3 +1,3 @@
-
+
diff --git a/vgo/src/test/resources/baseline/regression_33_optimized.xml b/vgo/src/test/resources/baseline/regression_33_optimized.xml
index c27141b8..c3eec54e 100644
--- a/vgo/src/test/resources/baseline/regression_33_optimized.xml
+++ b/vgo/src/test/resources/baseline/regression_33_optimized.xml
@@ -1,3 +1,3 @@
-
+
diff --git a/vgo/src/test/resources/baseline/simple_heart_optimized.xml b/vgo/src/test/resources/baseline/simple_heart_optimized.xml
index 4b565b9a..c1ca9b04 100644
--- a/vgo/src/test/resources/baseline/simple_heart_optimized.xml
+++ b/vgo/src/test/resources/baseline/simple_heart_optimized.xml
@@ -1,3 +1,3 @@
-
+
diff --git a/vgo/src/test/resources/baseline/tiger_optimized.svg b/vgo/src/test/resources/baseline/tiger_optimized.svg
index 7a8aec76..a6b04053 100644
--- a/vgo/src/test/resources/baseline/tiger_optimized.svg
+++ b/vgo/src/test/resources/baseline/tiger_optimized.svg
@@ -40,7 +40,7 @@
-
+
@@ -226,13 +226,13 @@
-
+
-
+
@@ -313,16 +313,16 @@
-
+
-
+
-
+
-
+
@@ -349,10 +349,10 @@
-
+
-
+
@@ -379,16 +379,16 @@
-
+
-
+
-
+
-
+
@@ -481,7 +481,7 @@
-
+
@@ -652,19 +652,19 @@
-
+
-
+
-
+
diff --git a/vgo/src/test/resources/baseline/tiger_optimized.xml b/vgo/src/test/resources/baseline/tiger_optimized.xml
index f13ec90d..8931d88e 100644
--- a/vgo/src/test/resources/baseline/tiger_optimized.xml
+++ b/vgo/src/test/resources/baseline/tiger_optimized.xml
@@ -1,142 +1,142 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vgo/src/test/resources/baseline/visibility_strike_optimized.xml b/vgo/src/test/resources/baseline/visibility_strike_optimized.xml
index 4a30656c..f7ce630a 100644
--- a/vgo/src/test/resources/baseline/visibility_strike_optimized.xml
+++ b/vgo/src/test/resources/baseline/visibility_strike_optimized.xml
@@ -1,5 +1,5 @@
-
-
+
+
diff --git a/vgo/src/test/resources/in-place-modify/avocado_example_optimized.xml b/vgo/src/test/resources/in-place-modify/avocado_example_optimized.xml
index f43034b3..01f4a1ac 100644
--- a/vgo/src/test/resources/in-place-modify/avocado_example_optimized.xml
+++ b/vgo/src/test/resources/in-place-modify/avocado_example_optimized.xml
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file