Skip to content

Commit

Permalink
clean up generated float values in path
Browse files Browse the repository at this point in the history
  • Loading branch information
egorikftp committed Jul 5, 2024
1 parent 7488e6a commit 9362d66
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ class XmlIconParserTest {
).apply {
path {
moveTo(6.75f, 12.127f)
lineTo(3.623f, 9.0f)
lineTo(3.623f, 9f)
lineTo(2.558f, 10.057f)
lineTo(6.75f, 14.25f)
lineTo(15.75f, 5.25f)
Expand Down Expand Up @@ -217,7 +217,7 @@ class XmlIconParserTest {
strokeLineWidth = 1f
) {
moveTo(6.75f, 12.127f)
lineTo(3.623f, 9.0f)
lineTo(3.623f, 9f)
lineTo(2.558f, 10.057f)
lineTo(6.75f, 14.25f)
lineTo(15.75f, 5.25f)
Expand Down Expand Up @@ -282,7 +282,7 @@ class XmlIconParserTest {
pathFillType = PathFillType.EvenOdd
) {
moveTo(6.75f, 12.127f)
lineTo(3.623f, 9.0f)
lineTo(3.623f, 9f)
lineTo(2.558f, 10.057f)
lineTo(6.75f, 14.25f)
lineTo(15.75f, 5.25f)
Expand Down Expand Up @@ -334,7 +334,7 @@ class XmlIconParserTest {
).apply {
path(fill = SolidColor(Color(0xFFE676FF))) {
moveTo(6.75f, 12.127f)
lineTo(3.623f, 9.0f)
lineTo(3.623f, 9f)
lineTo(2.558f, 10.057f)
lineTo(6.75f, 14.25f)
lineTo(15.75f, 5.25f)
Expand All @@ -344,7 +344,7 @@ class XmlIconParserTest {
}
path(fill = SolidColor(Color(0xFFFF00FF))) {
moveTo(6.75f, 12.127f)
lineTo(3.623f, 9.0f)
lineTo(3.623f, 9f)
lineTo(2.558f, 10.057f)
lineTo(6.75f, 14.25f)
lineTo(15.75f, 5.25f)
Expand Down
2 changes: 2 additions & 0 deletions components/google/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ repositories {
}

dependencies {
implementation(projects.components.generator.common)

implementation(libs.kotlinpoet)
implementation(libs.xpp3)
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

package androidx.compose.material.icons.generator.vector

import io.github.composegears.valkyrie.generator.ext.formatFloat

/**
* Class representing a singular path command in a vector.
*
Expand All @@ -32,36 +34,36 @@ sealed class PathNode(val isCurve: Boolean = false, val isQuad: Boolean = false)

// RelativeClose and Close are considered the same internally, so we represent both with Close
// for simplicity and to make equals comparisons robust.
object Close : PathNode() {
data object Close : PathNode() {
override fun asFunctionCall() = "close()"
}

data class RelativeMoveTo(val x: Float, val y: Float) : PathNode() {
override fun asFunctionCall() = "moveToRelative(${x}f, ${y}f)"
override fun asFunctionCall() = "moveToRelative(${x.formatFloat()}, ${y.formatFloat()})"
}
data class MoveTo(val x: Float, val y: Float) : PathNode() {
override fun asFunctionCall() = "moveTo(${x}f, ${y}f)"
override fun asFunctionCall() = "moveTo(${x.formatFloat()}, ${y.formatFloat()})"
}

data class RelativeLineTo(val x: Float, val y: Float) : PathNode() {
override fun asFunctionCall() = "lineToRelative(${x}f, ${y}f)"
override fun asFunctionCall() = "lineToRelative(${x.formatFloat()}, ${y.formatFloat()})"
}
data class LineTo(val x: Float, val y: Float) : PathNode() {
override fun asFunctionCall() = "lineTo(${x}f, ${y}f)"
override fun asFunctionCall() = "lineTo(${x.formatFloat()}, ${y.formatFloat()})"
}

data class RelativeHorizontalTo(val x: Float) : PathNode() {
override fun asFunctionCall() = "horizontalLineToRelative(${x}f)"
override fun asFunctionCall() = "horizontalLineToRelative(${x.formatFloat()})"
}
data class HorizontalTo(val x: Float) : PathNode() {
override fun asFunctionCall() = "horizontalLineTo(${x}f)"
override fun asFunctionCall() = "horizontalLineTo(${x.formatFloat()})"
}

data class RelativeVerticalTo(val y: Float) : PathNode() {
override fun asFunctionCall() = "verticalLineToRelative(${y}f)"
override fun asFunctionCall() = "verticalLineToRelative(${y.formatFloat()})"
}
data class VerticalTo(val y: Float) : PathNode() {
override fun asFunctionCall() = "verticalLineTo(${y}f)"
override fun asFunctionCall() = "verticalLineTo(${y.formatFloat()})"
}

data class RelativeCurveTo(
Expand All @@ -72,7 +74,7 @@ sealed class PathNode(val isCurve: Boolean = false, val isQuad: Boolean = false)
val dx3: Float,
val dy3: Float
) : PathNode(isCurve = true) {
override fun asFunctionCall() = "curveToRelative(${dx1}f, ${dy1}f, ${dx2}f, ${dy2}f, ${dx3}f, ${dy3}f)"
override fun asFunctionCall() = "curveToRelative(${dx1.formatFloat()}, ${dy1.formatFloat()}, ${dx2.formatFloat()}, ${dy2.formatFloat()}, ${dx3.formatFloat()}, ${dy3.formatFloat()})"
}

data class CurveTo(
Expand All @@ -83,7 +85,7 @@ sealed class PathNode(val isCurve: Boolean = false, val isQuad: Boolean = false)
val x3: Float,
val y3: Float
) : PathNode(isCurve = true) {
override fun asFunctionCall() = "curveTo(${x1}f, ${y1}f, ${x2}f, ${y2}f, ${x3}f, ${y3}f)"
override fun asFunctionCall() = "curveTo(${x1.formatFloat()}, ${y1.formatFloat()}, ${x2.formatFloat()}, ${y2.formatFloat()}, ${x3.formatFloat()}, ${y3.formatFloat()})"
}

data class RelativeReflectiveCurveTo(
Expand All @@ -92,7 +94,7 @@ sealed class PathNode(val isCurve: Boolean = false, val isQuad: Boolean = false)
val x2: Float,
val y2: Float
) : PathNode(isCurve = true) {
override fun asFunctionCall() = "reflectiveCurveToRelative(${x1}f, ${y1}f, ${x2}f, ${y2}f)"
override fun asFunctionCall() = "reflectiveCurveToRelative(${x1.formatFloat()}, ${y1.formatFloat()}, ${x2.formatFloat()}, ${y2.formatFloat()})"
}

data class ReflectiveCurveTo(
Expand All @@ -101,7 +103,7 @@ sealed class PathNode(val isCurve: Boolean = false, val isQuad: Boolean = false)
val x2: Float,
val y2: Float
) : PathNode(isCurve = true) {
override fun asFunctionCall() = "reflectiveCurveTo(${x1}f, ${y1}f, ${x2}f, ${y2}f)"
override fun asFunctionCall() = "reflectiveCurveTo(${x1.formatFloat()}, ${y1.formatFloat()}, ${x2.formatFloat()}, ${y2.formatFloat()})"
}

data class RelativeQuadTo(
Expand All @@ -110,7 +112,7 @@ sealed class PathNode(val isCurve: Boolean = false, val isQuad: Boolean = false)
val x2: Float,
val y2: Float
) : PathNode(isQuad = true) {
override fun asFunctionCall() = "quadToRelative(${x1}f, ${y1}f, ${x2}f, ${y2}f)"
override fun asFunctionCall() = "quadToRelative(${x1.formatFloat()}, ${y1.formatFloat()}, ${x2.formatFloat()}, ${y2.formatFloat()})"
}

data class QuadTo(
Expand All @@ -119,21 +121,21 @@ sealed class PathNode(val isCurve: Boolean = false, val isQuad: Boolean = false)
val x2: Float,
val y2: Float
) : PathNode(isQuad = true) {
override fun asFunctionCall() = "quadTo(${x1}f, ${y1}f, ${x2}f, ${y2}f)"
override fun asFunctionCall() = "quadTo(${x1.formatFloat()}, ${y1.formatFloat()}, ${x2.formatFloat()}, ${y2.formatFloat()})"
}

data class RelativeReflectiveQuadTo(
val x: Float,
val y: Float
) : PathNode(isQuad = true) {
override fun asFunctionCall() = "reflectiveQuadToRelative(${x}f, ${y}f)"
override fun asFunctionCall() = "reflectiveQuadToRelative(${x.formatFloat()}, ${y.formatFloat()})"
}

data class ReflectiveQuadTo(
val x: Float,
val y: Float
) : PathNode(isQuad = true) {
override fun asFunctionCall() = "reflectiveQuadTo(${x}f, ${y}f)"
override fun asFunctionCall() = "reflectiveQuadTo(${x.formatFloat()}, ${y.formatFloat()})"
}

data class RelativeArcTo(
Expand All @@ -145,7 +147,7 @@ sealed class PathNode(val isCurve: Boolean = false, val isQuad: Boolean = false)
val arcStartDx: Float,
val arcStartDy: Float
) : PathNode() {
override fun asFunctionCall() = "arcToRelative(${horizontalEllipseRadius}f, ${verticalEllipseRadius}f, ${theta}f, $isMoreThanHalf, $isPositiveArc, ${arcStartDx}f, ${arcStartDy}f)"
override fun asFunctionCall() = "arcToRelative(${horizontalEllipseRadius.formatFloat()}, ${verticalEllipseRadius.formatFloat()}, ${theta.formatFloat()}, $isMoreThanHalf, $isPositiveArc, ${arcStartDx.formatFloat()}, ${arcStartDy.formatFloat()})"
}

data class ArcTo(
Expand All @@ -157,7 +159,7 @@ sealed class PathNode(val isCurve: Boolean = false, val isQuad: Boolean = false)
val arcStartX: Float,
val arcStartY: Float
) : PathNode() {
override fun asFunctionCall() = "arcTo(${horizontalEllipseRadius}f, ${verticalEllipseRadius}f, ${theta}f, $isMoreThanHalf, $isPositiveArc, ${arcStartX}f, ${arcStartY}f)"
override fun asFunctionCall() = "arcTo(${horizontalEllipseRadius.formatFloat()}, ${verticalEllipseRadius.formatFloat()}, ${theta.formatFloat()}, $isMoreThanHalf, $isPositiveArc, ${arcStartX.formatFloat()}, ${arcStartY.formatFloat()})"
}
}
/* ktlint-enable max-line-length */
Expand Down

0 comments on commit 9362d66

Please sign in to comment.