---
title: "GraphicsLayerScope"
description: "A scope which can be used to define the effects to apply for the content, such as scaling
([scaleX], [scaleY]), rotation ([rotationX], [rotationY], [rotationZ]), opacity ([alpha]), shadow
([shadowElevation], [shape]), and clipping ([clip], [shape])."
type: "interface"
---

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


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

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



```kotlin
@JvmDefaultWithCompatibility
@PlacementScopeMarker
interface GraphicsLayerScope : Density
```


A scope which can be used to define the effects to apply for the content, such as scaling
(`scaleX`, `scaleY`), rotation (`rotationX`, `rotationY`, `rotationZ`), opacity (`alpha`), shadow
(`shadowElevation`, `shape`), and clipping (`clip`, `shape`).


## Properties

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


```kotlin
var scaleX: Float
```


The horizontal scale of the drawn area. Default value is `1`.



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


```kotlin
var scaleY: Float
```


The vertical scale of the drawn area. Default value is `1`.



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


```kotlin
/*@setparam:FloatRange(from = 0.0, to = 1.0)*/
var alpha: Float
```


The alpha of the drawn area. Setting this to something other than `1` will cause the drawn
contents to be translucent and setting it to `0` will cause it to be fully invisible. Default
value is `1` and the range is between `0` and `1`.



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


```kotlin
var translationX: Float
```


Horizontal pixel offset of the layer relative to its left bound. Default value is `0`.



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


```kotlin
var translationY: Float
```


Vertical pixel offset of the layer relative to its top bound. Default value is `0`



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


```kotlin
/*@setparam:FloatRange(from = 0.0)*/
var shadowElevation: Float
```


Sets the elevation for the shadow in pixels. With the `shadowElevation` > 0f and `shape` set,
a shadow is produced. Default value is `0` and the value must not be negative.

Note that if you provide a non-zero `shadowElevation` and if the passed `shape` is concave
the shadow will not be drawn on Android versions less than 10.



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


```kotlin
var ambientShadowColor: Color
```


Sets the color of the ambient shadow that is drawn when `shadowElevation` > 0f.

By default the shadow color is black. Generally, this color will be opaque so the intensity
of the shadow is consistent between different graphics layers with different colors.

The opacity of the final ambient shadow is a function of the shadow caster height, the alpha
channel of the `ambientShadowColor` (typically opaque), and the
`android.R.attr.ambientShadowAlpha` theme attribute.

Note that this parameter is only supported on Android 9 (Pie) and above. On older versions,
this property always returns `Color.Black` and setting new values is ignored.



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


```kotlin
var spotShadowColor: Color
```


Sets the color of the spot shadow that is drawn when `shadowElevation` > 0f.

By default the shadow color is black. Generally, this color will be opaque so the intensity
of the shadow is consistent between different graphics layers with different colors.

The opacity of the final spot shadow is a function of the shadow caster height, the alpha
channel of the `spotShadowColor` (typically opaque), and the `android.R.attr.spotShadowAlpha`
theme attribute.

Note that this parameter is only supported on Android 9 (Pie) and above. On older versions,
this property always returns `Color.Black` and setting new values is ignored.



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


```kotlin
var rotationX: Float
```


The rotation, in degrees, of the contents around the horizontal axis in degrees. Default
value is `0`.



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


```kotlin
var rotationY: Float
```


The rotation, in degrees, of the contents around the vertical axis in degrees. Default value
is `0`.



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


```kotlin
var rotationZ: Float
```


The rotation, in degrees, of the contents around the Z axis in degrees. Default value is `0`.



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


```kotlin
/*@setparam:FloatRange(from = 0.0)*/
var cameraDistance: Float
```


Sets the distance along the Z axis (orthogonal to the X/Y plane on which layers are drawn)
from the camera to this layer. The camera's distance affects 3D transformations, for instance
rotations around the X and Y axis. If the rotationX or rotationY properties are changed and
this view is large (more than half the size of the screen), it is recommended to always use a
camera distance that's greater than the height (X axis rotation) or the width (Y axis
rotation) of this view.

The distance of the camera from the drawing plane can have an affect on the perspective
distortion of the layer when it is rotated around the x or y axis. For example, a large
distance will result in a large viewing angle, and there will not be much perspective
distortion of the view as it rotates. A short distance may cause much more perspective
distortion upon rotation, and can also result in some drawing artifacts if the rotated view
ends up partially behind the camera (which is why the recommendation is to use a distance at
least as far as the size of the view, if the view is to be rotated.)

The distance is expressed in pixels and must always be positive. Default value is
`DefaultCameraDistance`



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


```kotlin
var transformOrigin: TransformOrigin
```


Offset percentage along the x and y axis for which contents are rotated and scaled. The
default value of 0.5f, 0.5f indicates the pivot point will be at the midpoint of the left and
right as well as the top and bottom bounds of the layer. Default value is
`TransformOrigin.Center`



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


```kotlin
var shape: Shape
```


The `Shape` of the layer. When `shadowElevation` is non-zero a shadow is produced using this
`shape`. When `clip` is `true` contents will be clipped to this `shape`. When clipping, the
content will be redrawn when the `shape` changes. Default value is `RectangleShape`



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


```kotlin
var clip: Boolean
```


Set to `true` to clip the content to the `shape`. Default value is `false`



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


```kotlin
var renderEffect: RenderEffect?
```


Configure the `RenderEffect` to apply to this `GraphicsLayerScope`. This will apply a visual
effect to the results of the `GraphicsLayerScope` before it is drawn. For example if
`BlurEffect` is provided, the contents will be drawn in a separate layer, then this layer
will be blurred when this `GraphicsLayerScope` is drawn.

Note this parameter is only supported on Android 12 and above. Attempts to use this Modifier
on older Android versions will be ignored.



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


```kotlin
var blendMode: BlendMode
```


BlendMode to use when drawing this layer to the destination. The default is
`BlendMode.SrcOver`. Any value other than `BlendMode.SrcOver` will force this
`GraphicsLayerScope` to use an offscreen compositing layer for rendering and is equivalent to
using `CompositingStrategy.Offscreen`.



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


```kotlin
var colorFilter: ColorFilter?
```


ColorFilter applied when drawing this layer to the destination. Setting of this to any
non-null will force this `GraphicsLayer` to use an offscreen compositing layer for rendering
and is equivalent to using `CompositingStrategy.Offscreen`



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


```kotlin
var compositingStrategy: CompositingStrategy
```


Determines the `CompositingStrategy` used to render the contents of this graphicsLayer into
an offscreen buffer first before rendering to the destination



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


```kotlin
val size: Size
```


`Size` of the graphicsLayer represented in pixels. Drawing commands can extend beyond the
size specified, however, if the graphicsLayer is promoted to an offscreen rasterization
layer, any content rendered outside of the specified size will be clipped.




