Optimizes Material Icon generation by removing `by lazy`
This delegate causes a lot more code to be generated under the hood, which adds up when there are 5000+ icons.
AAR size before/after this change:
Before: 19.6mb
After: 13.8mb
Also inlines lambda functions for building paths / groups.
Bug: b/161830226
Test: VectorAssetGeneratorTest
Relnote: N/A
Change-Id: I8841a9dead4171aa0516053553479d02edb36a8a
diff --git a/ui/ui-core/api/0.1.0-dev16.txt b/ui/ui-core/api/0.1.0-dev16.txt
index 2f3d540..60e0638 100644
--- a/ui/ui-core/api/0.1.0-dev16.txt
+++ b/ui/ui-core/api/0.1.0-dev16.txt
@@ -43,8 +43,8 @@
}
public final class VectorAssetBuilderKt {
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
}
public final class VectorComposeKt {
diff --git a/ui/ui-core/api/current.txt b/ui/ui-core/api/current.txt
index 2f3d540..60e0638 100644
--- a/ui/ui-core/api/current.txt
+++ b/ui/ui-core/api/current.txt
@@ -43,8 +43,8 @@
}
public final class VectorAssetBuilderKt {
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
}
public final class VectorComposeKt {
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev16.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev16.txt
index 2f3d540..60e0638 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev16.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev16.txt
@@ -43,8 +43,8 @@
}
public final class VectorAssetBuilderKt {
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
}
public final class VectorComposeKt {
diff --git a/ui/ui-core/api/public_plus_experimental_current.txt b/ui/ui-core/api/public_plus_experimental_current.txt
index 2f3d540..60e0638 100644
--- a/ui/ui-core/api/public_plus_experimental_current.txt
+++ b/ui/ui-core/api/public_plus_experimental_current.txt
@@ -43,8 +43,8 @@
}
public final class VectorAssetBuilderKt {
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
}
public final class VectorComposeKt {
diff --git a/ui/ui-core/api/restricted_0.1.0-dev16.txt b/ui/ui-core/api/restricted_0.1.0-dev16.txt
index 4606ee4d..9971294 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev16.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev16.txt
@@ -43,8 +43,8 @@
}
public final class VectorAssetBuilderKt {
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
}
public final class VectorComposeKt {
diff --git a/ui/ui-core/api/restricted_current.txt b/ui/ui-core/api/restricted_current.txt
index 4606ee4d..9971294 100644
--- a/ui/ui-core/api/restricted_current.txt
+++ b/ui/ui-core/api/restricted_current.txt
@@ -43,8 +43,8 @@
}
public final class VectorAssetBuilderKt {
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder group(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", float rotate = 0.0f, float pivotX = 0.0f, float pivotY = 0.0f, float scaleX = 1.0f, float scaleY = 1.0f, float translationX = 0.0f, float translationY = 0.0f, java.util.List<? extends androidx.compose.ui.graphics.vector.PathNode> clipPathData = EmptyPath, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,kotlin.Unit> block);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder path(androidx.compose.ui.graphics.vector.VectorAssetBuilder, String name = "", androidx.compose.ui.graphics.Brush? fill = null, float fillAlpha = 1.0f, androidx.compose.ui.graphics.Brush? stroke = null, float strokeAlpha = 1.0f, float strokeLineWidth = 0.0f, androidx.compose.ui.graphics.StrokeCap strokeLineCap = DefaultStrokeLineCap, androidx.compose.ui.graphics.StrokeJoin strokeLineJoin = DefaultStrokeLineJoin, float strokeLineMiter = 4.0f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
}
public final class VectorComposeKt {
diff --git a/ui/ui-core/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorAssetBuilder.kt b/ui/ui-core/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorAssetBuilder.kt
index b083c2e..cd30ef7 100644
--- a/ui/ui-core/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorAssetBuilder.kt
+++ b/ui/ui-core/src/commonMain/kotlin/androidx/compose/ui/graphics/vector/VectorAssetBuilder.kt
@@ -230,7 +230,7 @@
* @param strokeLineMiter specifies the miter limit for a stroked path
* @param pathBuilder [PathBuilder] lambda for adding [PathNode]s to this path.
*/
-fun VectorAssetBuilder.path(
+inline fun VectorAssetBuilder.path(
name: String = DefaultPathName,
fill: Brush? = null,
fillAlpha: Float = 1.0f,
@@ -270,7 +270,7 @@
* @param clipPathData the path information used to clip the content within the group
* @param block builder lambda to add children to this group
*/
-fun VectorAssetBuilder.group(
+inline fun VectorAssetBuilder.group(
name: String = DefaultGroupName,
rotate: Float = DefaultRotation,
pivotX: Float = DefaultPivotX,
diff --git a/ui/ui-material/icons/core/api/0.1.0-dev16.txt b/ui/ui-material/icons/core/api/0.1.0-dev16.txt
index 168ba79..9369529 100644
--- a/ui/ui-material/icons/core/api/0.1.0-dev16.txt
+++ b/ui/ui-material/icons/core/api/0.1.0-dev16.txt
@@ -28,8 +28,8 @@
}
public final class IconsKt {
- method public static kotlin.Lazy<androidx.compose.ui.graphics.vector.VectorAsset> lazyMaterialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAsset materialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
}
}
diff --git a/ui/ui-material/icons/core/api/current.txt b/ui/ui-material/icons/core/api/current.txt
index 168ba79..9369529 100644
--- a/ui/ui-material/icons/core/api/current.txt
+++ b/ui/ui-material/icons/core/api/current.txt
@@ -28,8 +28,8 @@
}
public final class IconsKt {
- method public static kotlin.Lazy<androidx.compose.ui.graphics.vector.VectorAsset> lazyMaterialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAsset materialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
}
}
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev16.txt b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev16.txt
index 168ba79..9369529 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev16.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_0.1.0-dev16.txt
@@ -28,8 +28,8 @@
}
public final class IconsKt {
- method public static kotlin.Lazy<androidx.compose.ui.graphics.vector.VectorAsset> lazyMaterialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAsset materialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
}
}
diff --git a/ui/ui-material/icons/core/api/public_plus_experimental_current.txt b/ui/ui-material/icons/core/api/public_plus_experimental_current.txt
index 168ba79..9369529 100644
--- a/ui/ui-material/icons/core/api/public_plus_experimental_current.txt
+++ b/ui/ui-material/icons/core/api/public_plus_experimental_current.txt
@@ -28,8 +28,8 @@
}
public final class IconsKt {
- method public static kotlin.Lazy<androidx.compose.ui.graphics.vector.VectorAsset> lazyMaterialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAsset materialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
}
}
diff --git a/ui/ui-material/icons/core/api/restricted_0.1.0-dev16.txt b/ui/ui-material/icons/core/api/restricted_0.1.0-dev16.txt
index 168ba79..10dfb73 100644
--- a/ui/ui-material/icons/core/api/restricted_0.1.0-dev16.txt
+++ b/ui/ui-material/icons/core/api/restricted_0.1.0-dev16.txt
@@ -28,8 +28,9 @@
}
public final class IconsKt {
- method public static kotlin.Lazy<androidx.compose.ui.graphics.vector.VectorAsset> lazyMaterialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAsset materialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ field @kotlin.PublishedApi internal static final float MaterialIconDimension = 24.0f;
}
}
diff --git a/ui/ui-material/icons/core/api/restricted_current.txt b/ui/ui-material/icons/core/api/restricted_current.txt
index 168ba79..10dfb73 100644
--- a/ui/ui-material/icons/core/api/restricted_current.txt
+++ b/ui/ui-material/icons/core/api/restricted_current.txt
@@ -28,8 +28,9 @@
}
public final class IconsKt {
- method public static kotlin.Lazy<androidx.compose.ui.graphics.vector.VectorAsset> lazyMaterialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
- method public static androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAsset materialIcon(kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.VectorAssetBuilder,androidx.compose.ui.graphics.vector.VectorAssetBuilder> block);
+ method public static inline androidx.compose.ui.graphics.vector.VectorAssetBuilder materialPath(androidx.compose.ui.graphics.vector.VectorAssetBuilder, float fillAlpha = 1f, float strokeAlpha = 1f, kotlin.jvm.functions.Function1<? super androidx.compose.ui.graphics.vector.PathBuilder,kotlin.Unit> pathBuilder);
+ field @kotlin.PublishedApi internal static final float MaterialIconDimension = 24.0f;
}
}
diff --git a/ui/ui-material/icons/core/src/commonMain/kotlin/androidx/compose/material/icons/Icons.kt b/ui/ui-material/icons/core/src/commonMain/kotlin/androidx/compose/material/icons/Icons.kt
index 6019d2e..b9cc777 100644
--- a/ui/ui-material/icons/core/src/commonMain/kotlin/androidx/compose/material/icons/Icons.kt
+++ b/ui/ui-material/icons/core/src/commonMain/kotlin/androidx/compose/material/icons/Icons.kt
@@ -89,21 +89,19 @@
}
/**
- * Utility delegate to construct a lazily initialized Material icon with default size information.
+ * Utility delegate to construct a Material icon with default size information.
* This is used by generated icons, and should not be used manually.
*
* @param block builder lambda to add paths to this vector asset
*/
-fun lazyMaterialIcon(
+inline fun materialIcon(
block: VectorAssetBuilder.() -> VectorAssetBuilder
-): Lazy<VectorAsset> = lazy(LazyThreadSafetyMode.NONE) {
- VectorAssetBuilder(
- defaultWidth = MaterialIconDimension.dp,
- defaultHeight = MaterialIconDimension.dp,
- viewportWidth = MaterialIconDimension,
- viewportHeight = MaterialIconDimension
- ).block().build()
-}
+): VectorAsset = VectorAssetBuilder(
+ defaultWidth = MaterialIconDimension.dp,
+ defaultHeight = MaterialIconDimension.dp,
+ viewportWidth = MaterialIconDimension,
+ viewportHeight = MaterialIconDimension
+).block().build()
/**
* Adds a vector path to this icon with sane Material defaults.
@@ -112,7 +110,7 @@
* @param strokeAlpha stroke alpha for this path
* @param pathBuilder builder lambda to add commands to this path
*/
-fun VectorAssetBuilder.materialPath(
+inline fun VectorAssetBuilder.materialPath(
fillAlpha: Float = 1f,
strokeAlpha: Float = 1f,
pathBuilder: PathBuilder.() -> Unit
@@ -133,4 +131,5 @@
)
// All Material icons (currently) are 24dp by 24dp, with a viewport size of 24 by 24.
-private const val MaterialIconDimension = 24f
+@PublishedApi
+internal const val MaterialIconDimension = 24f
diff --git a/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/Names.kt b/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/Names.kt
index c2c6d41..76b6f88 100644
--- a/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/Names.kt
+++ b/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/Names.kt
@@ -39,8 +39,7 @@
* [MemberName]s used for icon generation.
*/
object MemberNames {
- val LazyMaterialIcon =
- MemberName(PackageNames.MaterialIconsPackage.packageName, "lazyMaterialIcon")
+ val MaterialIcon = MemberName(PackageNames.MaterialIconsPackage.packageName, "materialIcon")
val MaterialPath = MemberName(PackageNames.MaterialIconsPackage.packageName, "materialPath")
val Group = MemberName(PackageNames.VectorPackage.packageName, "group")
diff --git a/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/VectorAssetGenerator.kt b/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/VectorAssetGenerator.kt
index 292f47b..5b7d521 100644
--- a/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/VectorAssetGenerator.kt
+++ b/ui/ui-material/icons/generator/src/main/kotlin/androidx/compose/material/icons/generator/VectorAssetGenerator.kt
@@ -20,6 +20,8 @@
import androidx.compose.material.icons.generator.vector.VectorNode
import com.squareup.kotlinpoet.CodeBlock
import com.squareup.kotlinpoet.FileSpec
+import com.squareup.kotlinpoet.FunSpec
+import com.squareup.kotlinpoet.KModifier
import com.squareup.kotlinpoet.MemberName
import com.squareup.kotlinpoet.PropertySpec
import com.squareup.kotlinpoet.buildCodeBlock
@@ -51,26 +53,50 @@
val iconsPackage = PackageNames.MaterialIconsPackage.packageName
val themePackage = iconTheme.themePackageName
val combinedPackageName = "$iconsPackage.$themePackage"
+ val backingProperty = backingProperty()
return FileSpec.builder(
packageName = combinedPackageName,
fileName = iconName
).addProperty(
PropertySpec.builder(name = iconName, type = ClassNames.VectorAsset)
.receiver(iconTheme.className)
- .delegate(materialIconDelegate())
+ .getter(iconGetter(backingProperty))
.build()
+ ).addProperty(
+ backingProperty
).setIndent().build()
}
/**
- * @return The delegate block containing the whole vector definition.
+ * @return the body of the getter for the icon property. This getter returns the backing
+ * property if it is not null, otherwise creates the icon and 'caches' it in the backing
+ * property, and then returns the backing property.
*/
- private fun materialIconDelegate(): CodeBlock {
- return buildCodeBlock {
- addFunctionWithLambda(MemberNames.LazyMaterialIcon) {
- vector.nodes.forEach { node -> addRecursively(node) }
- }
- }
+ private fun iconGetter(backingProperty: PropertySpec): FunSpec {
+ return FunSpec.getterBuilder()
+ .addStatement("if (%N != null) return %N!!", backingProperty, backingProperty)
+ .addCode(
+ buildCodeBlock {
+ beginControlFlow("%N = %M", backingProperty, MemberNames.MaterialIcon)
+ vector.nodes.forEach { node -> addRecursively(node) }
+ endControlFlow()
+ }
+ )
+ .addStatement("return %N!!", backingProperty)
+ .build()
+ }
+
+ /**
+ * @return The private backing property that is used to cache the VectorAsset for a given
+ * icon once created.
+ */
+ private fun backingProperty(): PropertySpec {
+ val nullableVectorAsset = ClassNames.VectorAsset.copy(nullable = true)
+ return PropertySpec.builder(name = "icon", type = nullableVectorAsset)
+ .mutable()
+ .addModifiers(KModifier.PRIVATE)
+ .initializer("null")
+ .build()
}
}
diff --git a/ui/ui-material/icons/generator/src/test/kotlin/androidx/compose/material/icons/generator/VectorAssetGeneratorTest.kt b/ui/ui-material/icons/generator/src/test/kotlin/androidx/compose/material/icons/generator/VectorAssetGeneratorTest.kt
index c7b079f..a1dece4 100644
--- a/ui/ui-material/icons/generator/src/test/kotlin/androidx/compose/material/icons/generator/VectorAssetGeneratorTest.kt
+++ b/ui/ui-material/icons/generator/src/test/kotlin/androidx/compose/material/icons/generator/VectorAssetGeneratorTest.kt
@@ -65,27 +65,33 @@
package androidx.compose.material.icons.filled
import androidx.compose.material.icons.Icons
- import androidx.compose.material.icons.lazyMaterialIcon
+ import androidx.compose.material.icons.materialIcon
import androidx.compose.material.icons.materialPath
import androidx.compose.ui.graphics.vector.VectorAsset
import androidx.compose.ui.graphics.vector.group
- val Icons.Filled.TestVector: VectorAsset by lazyMaterialIcon {
- materialPath(fillAlpha = 0.8f) {
- moveTo(20.0f, 10.0f)
- lineToRelative(0.0f, 10.0f)
- lineToRelative(-10.0f, 0.0f)
- close()
- }
- group {
- materialPath {
- moveTo(0.0f, 10.0f)
- lineToRelative(-10.0f, 0.0f)
- close()
+ val Icons.Filled.TestVector: VectorAsset
+ get() {
+ if (icon != null) return icon!!
+ icon = materialIcon {
+ materialPath(fillAlpha = 0.8f) {
+ moveTo(20.0f, 10.0f)
+ lineToRelative(0.0f, 10.0f)
+ lineToRelative(-10.0f, 0.0f)
+ close()
+ }
+ group {
+ materialPath {
+ moveTo(0.0f, 10.0f)
+ lineToRelative(-10.0f, 0.0f)
+ close()
+ }
+ }
}
+ return icon!!
}
- }
+ private var icon: VectorAsset? = null
""".trimIndent()
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/compose/material/studies/rally/Icons.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/compose/material/studies/rally/Icons.kt
index cad0db5..856b665 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/compose/material/studies/rally/Icons.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/compose/material/studies/rally/Icons.kt
@@ -26,7 +26,7 @@
import androidx.compose.ui.graphics.vector.VectorPainter
import androidx.compose.foundation.layout.preferredSize
import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.lazyMaterialIcon
+import androidx.compose.material.icons.materialIcon
import androidx.compose.material.icons.materialPath
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
@@ -61,117 +61,127 @@
* file, which should appear in Studio sources by searching for the name of that icon.
*/
-val Icons.Filled.Sort: VectorAsset by lazyMaterialIcon {
- materialPath {
- moveTo(3.0f, 18.0f)
- horizontalLineToRelative(6.0f)
- verticalLineToRelative(-2.0f)
- lineTo(3.0f, 16.0f)
- verticalLineToRelative(2.0f)
- close()
- moveTo(3.0f, 6.0f)
- verticalLineToRelative(2.0f)
- horizontalLineToRelative(18.0f)
- lineTo(21.0f, 6.0f)
- lineTo(3.0f, 6.0f)
- close()
- moveTo(3.0f, 13.0f)
- horizontalLineToRelative(12.0f)
- verticalLineToRelative(-2.0f)
- lineTo(3.0f, 11.0f)
- verticalLineToRelative(2.0f)
- close()
+val Icons.Filled.Sort: VectorAsset by lazy {
+ materialIcon {
+ materialPath {
+ moveTo(3.0f, 18.0f)
+ horizontalLineToRelative(6.0f)
+ verticalLineToRelative(-2.0f)
+ lineTo(3.0f, 16.0f)
+ verticalLineToRelative(2.0f)
+ close()
+ moveTo(3.0f, 6.0f)
+ verticalLineToRelative(2.0f)
+ horizontalLineToRelative(18.0f)
+ lineTo(21.0f, 6.0f)
+ lineTo(3.0f, 6.0f)
+ close()
+ moveTo(3.0f, 13.0f)
+ horizontalLineToRelative(12.0f)
+ verticalLineToRelative(-2.0f)
+ lineTo(3.0f, 11.0f)
+ verticalLineToRelative(2.0f)
+ close()
+ }
}
}
-val Icons.Filled.ArrowForwardIos: VectorAsset by lazyMaterialIcon {
- materialPath {
- moveTo(5.88f, 4.12f)
- lineTo(13.76f, 12.0f)
- lineToRelative(-7.88f, 7.88f)
- lineTo(8.0f, 22.0f)
- lineToRelative(10.0f, -10.0f)
- lineTo(8.0f, 2.0f)
- close()
+val Icons.Filled.ArrowForwardIos: VectorAsset by lazy {
+ materialIcon {
+ materialPath {
+ moveTo(5.88f, 4.12f)
+ lineTo(13.76f, 12.0f)
+ lineToRelative(-7.88f, 7.88f)
+ lineTo(8.0f, 22.0f)
+ lineToRelative(10.0f, -10.0f)
+ lineTo(8.0f, 2.0f)
+ close()
+ }
}
}
-val Icons.Filled.AttachMoney: VectorAsset by lazyMaterialIcon {
- materialPath {
- moveTo(11.8f, 10.9f)
- curveToRelative(-2.27f, -0.59f, -3.0f, -1.2f, -3.0f, -2.15f)
- curveToRelative(0.0f, -1.09f, 1.01f, -1.85f, 2.7f, -1.85f)
- curveToRelative(1.78f, 0.0f, 2.44f, 0.85f, 2.5f, 2.1f)
- horizontalLineToRelative(2.21f)
- curveToRelative(-0.07f, -1.72f, -1.12f, -3.3f, -3.21f, -3.81f)
- verticalLineTo(3.0f)
- horizontalLineToRelative(-3.0f)
- verticalLineToRelative(2.16f)
- curveToRelative(-1.94f, 0.42f, -3.5f, 1.68f, -3.5f, 3.61f)
- curveToRelative(0.0f, 2.31f, 1.91f, 3.46f, 4.7f, 4.13f)
- curveToRelative(2.5f, 0.6f, 3.0f, 1.48f, 3.0f, 2.41f)
- curveToRelative(0.0f, 0.69f, -0.49f, 1.79f, -2.7f, 1.79f)
- curveToRelative(-2.06f, 0.0f, -2.87f, -0.92f, -2.98f, -2.1f)
- horizontalLineToRelative(-2.2f)
- curveToRelative(0.12f, 2.19f, 1.76f, 3.42f, 3.68f, 3.83f)
- verticalLineTo(21.0f)
- horizontalLineToRelative(3.0f)
- verticalLineToRelative(-2.15f)
- curveToRelative(1.95f, -0.37f, 3.5f, -1.5f, 3.5f, -3.55f)
- curveToRelative(0.0f, -2.84f, -2.43f, -3.81f, -4.7f, -4.4f)
- close()
+val Icons.Filled.AttachMoney: VectorAsset by lazy {
+ materialIcon {
+ materialPath {
+ moveTo(11.8f, 10.9f)
+ curveToRelative(-2.27f, -0.59f, -3.0f, -1.2f, -3.0f, -2.15f)
+ curveToRelative(0.0f, -1.09f, 1.01f, -1.85f, 2.7f, -1.85f)
+ curveToRelative(1.78f, 0.0f, 2.44f, 0.85f, 2.5f, 2.1f)
+ horizontalLineToRelative(2.21f)
+ curveToRelative(-0.07f, -1.72f, -1.12f, -3.3f, -3.21f, -3.81f)
+ verticalLineTo(3.0f)
+ horizontalLineToRelative(-3.0f)
+ verticalLineToRelative(2.16f)
+ curveToRelative(-1.94f, 0.42f, -3.5f, 1.68f, -3.5f, 3.61f)
+ curveToRelative(0.0f, 2.31f, 1.91f, 3.46f, 4.7f, 4.13f)
+ curveToRelative(2.5f, 0.6f, 3.0f, 1.48f, 3.0f, 2.41f)
+ curveToRelative(0.0f, 0.69f, -0.49f, 1.79f, -2.7f, 1.79f)
+ curveToRelative(-2.06f, 0.0f, -2.87f, -0.92f, -2.98f, -2.1f)
+ horizontalLineToRelative(-2.2f)
+ curveToRelative(0.12f, 2.19f, 1.76f, 3.42f, 3.68f, 3.83f)
+ verticalLineTo(21.0f)
+ horizontalLineToRelative(3.0f)
+ verticalLineToRelative(-2.15f)
+ curveToRelative(1.95f, -0.37f, 3.5f, -1.5f, 3.5f, -3.55f)
+ curveToRelative(0.0f, -2.84f, -2.43f, -3.81f, -4.7f, -4.4f)
+ close()
+ }
}
}
-val Icons.Filled.MoneyOff: VectorAsset by lazyMaterialIcon {
- materialPath {
- moveTo(12.5f, 6.9f)
- curveToRelative(1.78f, 0.0f, 2.44f, 0.85f, 2.5f, 2.1f)
- horizontalLineToRelative(2.21f)
- curveToRelative(-0.07f, -1.72f, -1.12f, -3.3f, -3.21f, -3.81f)
- verticalLineTo(3.0f)
- horizontalLineToRelative(-3.0f)
- verticalLineToRelative(2.16f)
- curveToRelative(-0.53f, 0.12f, -1.03f, 0.3f, -1.48f, 0.54f)
- lineToRelative(1.47f, 1.47f)
- curveToRelative(0.41f, -0.17f, 0.91f, -0.27f, 1.51f, -0.27f)
- close()
- moveTo(5.33f, 4.06f)
- lineTo(4.06f, 5.33f)
- lineTo(7.5f, 8.77f)
- curveToRelative(0.0f, 2.08f, 1.56f, 3.21f, 3.91f, 3.91f)
- lineToRelative(3.51f, 3.51f)
- curveToRelative(-0.34f, 0.48f, -1.05f, 0.91f, -2.42f, 0.91f)
- curveToRelative(-2.06f, 0.0f, -2.87f, -0.92f, -2.98f, -2.1f)
- horizontalLineToRelative(-2.2f)
- curveToRelative(0.12f, 2.19f, 1.76f, 3.42f, 3.68f, 3.83f)
- verticalLineTo(21.0f)
- horizontalLineToRelative(3.0f)
- verticalLineToRelative(-2.15f)
- curveToRelative(0.96f, -0.18f, 1.82f, -0.55f, 2.45f, -1.12f)
- lineToRelative(2.22f, 2.22f)
- lineToRelative(1.27f, -1.27f)
- lineTo(5.33f, 4.06f)
- close()
+val Icons.Filled.MoneyOff: VectorAsset by lazy {
+ materialIcon {
+ materialPath {
+ moveTo(12.5f, 6.9f)
+ curveToRelative(1.78f, 0.0f, 2.44f, 0.85f, 2.5f, 2.1f)
+ horizontalLineToRelative(2.21f)
+ curveToRelative(-0.07f, -1.72f, -1.12f, -3.3f, -3.21f, -3.81f)
+ verticalLineTo(3.0f)
+ horizontalLineToRelative(-3.0f)
+ verticalLineToRelative(2.16f)
+ curveToRelative(-0.53f, 0.12f, -1.03f, 0.3f, -1.48f, 0.54f)
+ lineToRelative(1.47f, 1.47f)
+ curveToRelative(0.41f, -0.17f, 0.91f, -0.27f, 1.51f, -0.27f)
+ close()
+ moveTo(5.33f, 4.06f)
+ lineTo(4.06f, 5.33f)
+ lineTo(7.5f, 8.77f)
+ curveToRelative(0.0f, 2.08f, 1.56f, 3.21f, 3.91f, 3.91f)
+ lineToRelative(3.51f, 3.51f)
+ curveToRelative(-0.34f, 0.48f, -1.05f, 0.91f, -2.42f, 0.91f)
+ curveToRelative(-2.06f, 0.0f, -2.87f, -0.92f, -2.98f, -2.1f)
+ horizontalLineToRelative(-2.2f)
+ curveToRelative(0.12f, 2.19f, 1.76f, 3.42f, 3.68f, 3.83f)
+ verticalLineTo(21.0f)
+ horizontalLineToRelative(3.0f)
+ verticalLineToRelative(-2.15f)
+ curveToRelative(0.96f, -0.18f, 1.82f, -0.55f, 2.45f, -1.12f)
+ lineToRelative(2.22f, 2.22f)
+ lineToRelative(1.27f, -1.27f)
+ lineTo(5.33f, 4.06f)
+ close()
+ }
}
}
-val Icons.Filled.PieChart: VectorAsset by lazyMaterialIcon {
- materialPath {
- moveTo(11.0f, 2.0f)
- verticalLineToRelative(20.0f)
- curveToRelative(-5.07f, -0.5f, -9.0f, -4.79f, -9.0f, -10.0f)
- reflectiveCurveToRelative(3.93f, -9.5f, 9.0f, -10.0f)
- close()
- moveTo(13.03f, 2.0f)
- verticalLineToRelative(8.99f)
- lineTo(22.0f, 10.99f)
- curveToRelative(-0.47f, -4.74f, -4.24f, -8.52f, -8.97f, -8.99f)
- close()
- moveTo(13.03f, 13.01f)
- lineTo(13.03f, 22.0f)
- curveToRelative(4.74f, -0.47f, 8.5f, -4.25f, 8.97f, -8.99f)
- horizontalLineToRelative(-8.97f)
- close()
+val Icons.Filled.PieChart: VectorAsset by lazy {
+ materialIcon {
+ materialPath {
+ moveTo(11.0f, 2.0f)
+ verticalLineToRelative(20.0f)
+ curveToRelative(-5.07f, -0.5f, -9.0f, -4.79f, -9.0f, -10.0f)
+ reflectiveCurveToRelative(3.93f, -9.5f, 9.0f, -10.0f)
+ close()
+ moveTo(13.03f, 2.0f)
+ verticalLineToRelative(8.99f)
+ lineTo(22.0f, 10.99f)
+ curveToRelative(-0.47f, -4.74f, -4.24f, -8.52f, -8.97f, -8.99f)
+ close()
+ moveTo(13.03f, 13.01f)
+ lineTo(13.03f, 22.0f)
+ curveToRelative(4.74f, -0.47f, 8.5f, -4.25f, 8.97f, -8.99f)
+ horizontalLineToRelative(-8.97f)
+ close()
+ }
}
}