---
title: "RulerScope"
description: "A scope used in [MeasureScope.layout] for the `rulers` parameter to allow a layout to define
[Ruler] values for children."
type: "interface"
---

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


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

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



```kotlin
@MeasureScopeMarker
interface RulerScope : Density
```


A scope used in `MeasureScope.layout` for the `rulers` parameter to allow a layout to define
`Ruler` values for children.


## Properties

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


```kotlin
val coordinates: LayoutCoordinates
```


`LayoutCoordinates` of the position in the hierarchy that the `Ruler` will be
`provided`.



## Functions

```kotlin
infix fun Ruler.provides(value: Float)
```


Provides a constant value for a `Ruler`.


```kotlin
infix fun VerticalRuler.providesRelative(value: Float)
```


Provides a `VerticalRuler` value that is relative to the left side in an LTR layout or right
side on an RTL layout.



## Code Examples

### RulerProducerUsage
```kotlin
@Composable
fun RulerProducerUsage(content: @Composable BoxScope.() -> Unit) {
    val safeInsets = WindowInsets.safeContent
    Box(
        Modifier.fillMaxSize().layout { measurable, constraints ->
            val placeable = measurable.measure(constraints)
            layout(
                width = placeable.width,
                height = placeable.height,
                rulers = {
                    val height = coordinates.size.height
                    SafeBottomRuler provides (height - safeInsets.getBottom(this)).toFloat()
                },
            ) {
                placeable.place(0, 0)
            }
        },
        content = content,
    )
}
```

