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


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

<div class='sourceset sourceset-android'>Android</div>



```kotlin
public interface TransformationSpec
```


Defines visual transformations on the items of a `TransformingLazyColumn`.

When using this API, users need to make similar changes between all of the functions. For
example, if `getTransformedHeight` returns half of the size of the item, then transformation
functions should do the same, scaling or cropping the item.

`getTransformedHeight` is called first, then the painter would be created and then container and
content transformations are applied.

This shows how to create a custom transformation spec for the `TransformingLazyColumn`.


This shows how to apply different `androidx.compose.ui.graphics.CompositingStrategy` with
`TransformationSpec` for the `TransformingLazyColumn`.


This shows how to apply the `TransformationSpec` to custom component inside
`TransformingLazyColumn`.


## Functions



<h2 id="gettransformedheight-measuredheight-scrollprogress">getTransformedHeight</h2>

```kotlin
public fun getTransformedHeight(
        measuredHeight: Int,
        scrollProgress: TransformingLazyColumnItemScrollProgress,
    ): Int
```


Calculates the transformed height to be passed into
`TransformingLazyColumnItemScope.transformedHeight` based on the parameters for the spec.

#### Parameters

| | |
| --- | --- |
| measuredHeight | The height in pixels of the item returned during measurement. |
| scrollProgress | The scroll progress of the item. |





<hr class="docs-overload-divider">


<h2 id="applycontenttransformation-scrollprogress">applyContentTransformation</h2>

```kotlin
public fun GraphicsLayerScope.applyContentTransformation(
        scrollProgress: TransformingLazyColumnItemScrollProgress
    )
```


Visual transformations to be applied to the content of the item as it scrolls.

#### Parameters

| | |
| --- | --- |
| scrollProgress | The scroll progress of the item. |





<hr class="docs-overload-divider">


<h2 id="applycontainertransformation-scrollprogress">applyContainerTransformation</h2>

```kotlin
public fun GraphicsLayerScope.applyContainerTransformation(
        scrollProgress: TransformingLazyColumnItemScrollProgress
    )
```


Visual transformations to be applied to the container of the item as it scrolls.

#### Parameters

| | |
| --- | --- |
| scrollProgress | The scroll progress of the item. |





<hr class="docs-overload-divider">


<h2 id="createtransformedcontainerpainter-painter-shape-border">createTransformedContainerPainter</h2>

```kotlin
public fun TransformedContainerPainterScope.createTransformedContainerPainter(
        painter: Painter,
        shape: Shape,
        border: BorderStroke?,
    ): Painter
```


Returns a new painter to be used instead of `painter` which should react on a transformation.

#### Parameters

| | |
| --- | --- |
| painter | The painter to be transformed. This is the original `Painter` the component was trying to use. |
| shape | The shape of the item's container. |
| border | The border of the item's container. |