---
title: "StampedPathEffectStyle"
description: "Strategy for transforming each point of the shape along the drawn path"
type: "class"
---

<div class='type'>Class</div>


<a id='references'></a>

<div class='sourceset sourceset-common'>Common</div>


```kotlin
value class StampedPathEffectStyle
internal constructor(@Suppress("unused") private val value: Int)
```


Strategy for transforming each point of the shape along the drawn path


## Companion Object

#### Properties

<div class='sourceset sourceset-common'>Common</div>


```kotlin
val Translate = StampedPathEffectStyle(0)
```


Translate the path shape into the specified location aligning the top left of the path
with the drawn geometry. This does not modify the path itself.

For example, a circle drawn with a square path and `Translate` will draw the square path
repeatedly with the top left corner of each stamped square along the curvature of the
circle.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val Rotate = StampedPathEffectStyle(1)
```


Rotates the path shape its center along the curvature of the drawn geometry. This does
not modify the path itself.

For example, a circle drawn with a square path and `Rotate` will draw the square path
repeatedly with the center of each stamped square along the curvature of the circle as
well as each square being rotated along the circumference.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val Morph = StampedPathEffectStyle(2)
```


Modifies the points within the path such that they fit within the drawn geometry. This
will turn straight lines into curves.

For example, a circle drawn with a square path and `Morph` will modify the straight lines
of the square paths to be curves such that each stamped square is rendered as an arc
around the curvature of the circle.





## Code Examples

### StampedPathEffectSample
```kotlin
@Composable
fun StampedPathEffectSample() {
    val size = 20f
    val square =
        Path().apply {
            lineTo(size, 0f)
            lineTo(size, size)
            lineTo(0f, size)
            close()
        }
    Column(modifier = Modifier.fillMaxHeight().wrapContentSize(Alignment.Center)) {
        val canvasModifier = Modifier.requiredSize(80.dp).align(Alignment.CenterHorizontally)
        // StampedPathEffectStyle.Morph will modify the lines of the square to be curved to fit
        // the curvature of the circle itself. Each stamped square will be rendered as an arc
        // that is fully contained by the bounds of the circle itself
        Canvas(modifier = canvasModifier) {
            drawCircle(color = Color.Blue)
            drawCircle(
                color = Color.Red,
                style =
                    Stroke(
                        pathEffect =
                            PathEffect.stampedPathEffect(
                                shape = square,
                                style = StampedPathEffectStyle.Morph,
                                phase = 0f,
                                advance = 30f,
                            )
                    ),
            )
        }
        Spacer(modifier = Modifier.requiredSize(10.dp))
        // StampedPathEffectStyle.Rotate will draw the square repeatedly around the circle
        // such that each stamped square is centered on the circumference of the circle and is
        // rotated along the curvature of the circle itself
        Canvas(modifier = canvasModifier) {
            drawCircle(color = Color.Blue)
            drawCircle(
                color = Color.Red,
                style =
                    Stroke(
                        pathEffect =
                            PathEffect.stampedPathEffect(
                                shape = square,
                                style = StampedPathEffectStyle.Rotate,
                                phase = 0f,
                                advance = 30f,
                            )
                    ),
            )
        }
        Spacer(modifier = Modifier.requiredSize(10.dp))
        // StampedPathEffectStyle.Translate will draw the square repeatedly around the circle
        // with the top left of each stamped square on the circumference of the circle
        Canvas(modifier = canvasModifier) {
            drawCircle(color = Color.Blue)
            drawCircle(
                color = Color.Red,
                style =
                    Stroke(
                        pathEffect =
                            PathEffect.stampedPathEffect(
                                shape = square,
                                style = StampedPathEffectStyle.Translate,
                                phase = 0f,
                                advance = 30f,
                            )
                    ),
            )
        }
    }
}
```

