# VerticalRuler

Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/Ruler.kt+class:androidx.compose.ui.layout.VerticalRuler) Added in [1.7.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.7.0) Common/AllAndroid/JVM
- Cmn

  ```
  class VerticalRuler : Ruler
  ```

|---|---|---|
| [kotlin.Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html) |||
| ↳ | [androidx.compose.ui.layout.Ruler](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Ruler) ||
|   | ↳ | [androidx.compose.ui.layout.VerticalRuler](https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler) |

*** ** * ** ***

A vertical `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Ruler`. Defines a line that can be used by parent layouts to align or position their children horizontally. The position of the ruler can be retrieved with `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope#(androidx.compose.ui.layout.Ruler).current(kotlin.Float)` and can be set with `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope#layout(kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1)` using `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RulerScope#(androidx.compose.ui.layout.Ruler).provides(kotlin.Float)` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RulerScope#(androidx.compose.ui.layout.VerticalRuler).providesRelative(kotlin.Float)`.

## Summary

| ### Public companion functions |
|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler#derived(kotlin.Function2)(calculation: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope.(defaultValue: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler` whose values are derived from values available in the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope`, such as other `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler`s. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler#maxOf(kotlin.Array)(vararg rulers: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler)` Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler` derived from the greater value of all `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler`s in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler.Companion#maxOf(kotlin.Array)` that supply a value. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler#minOf(kotlin.Array)(vararg rulers: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler)` Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler` derived from the least value of all `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler`s in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler.Companion#minOf(kotlin.Array)` that supply a value. | Cmn |

| ### Public constructors |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler#VerticalRuler()()` Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler` whose values are directly provided. | Cmn |

## Public companion functions

### derived

Cmn Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.9.0)

```
fun derived(calculation: Placeable.PlacementScope.(defaultValue: Float) -> Float): VerticalRuler
```

Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler` whose values are derived from values available in the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope`, such as other `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler`s.

```kotlin
import androidx.compose.ui.layout.VerticalRuler
import androidx.compose.ui.unit.Dp

class PaddedRulers(val ruler: VerticalRuler, val padding: Dp) {
    val left = VerticalRuler.derived { defaultValue ->
        val rulerValue = ruler.current(Float.NaN)
        if (rulerValue.isNaN()) {
            defaultValue
        } else {
            rulerValue + padding.toPx()
        }
    }
    val right = VerticalRuler.derived { defaultValue ->
        val rulerValue = ruler.current(Float.NaN)
        if (rulerValue.isNaN()) {
            defaultValue
        } else {
            rulerValue - padding.toPx()
        }
    }
}
```

| Parameters |
|---|---|
| `calculation: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope.(defaultValue: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` | A function that calculates the value of the ruler |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler#minOf(kotlin.Array)` |   |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler#maxOf(kotlin.Array)` |   |

### maxOf

Cmn Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.9.0)

```
fun maxOf(vararg rulers: VerticalRuler): VerticalRuler
```

Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler` derived from the greater value of all `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler`s in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler.Companion#maxOf(kotlin.Array)` that supply a value. This is the bottom-most of all provided ruler values.

### minOf

Cmn Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.9.0)

```
fun minOf(vararg rulers: VerticalRuler): VerticalRuler
```

Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler` derived from the least value of all `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler`s in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler.Companion#minOf(kotlin.Array)` that supply a value. This is the top-most of all provided ruler values.

## Public constructors

### VerticalRuler

Cmn Added in [1.7.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.7.0)

```
VerticalRuler()
```

Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler` whose values are directly provided. The developer can set the ruler value in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope#layout(kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1)` using `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RulerScope#(androidx.compose.ui.layout.Ruler).provides(kotlin.Float)` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RulerScope#(androidx.compose.ui.layout.VerticalRuler).providesRelative(kotlin.Float)`.