Function

drawLayer

Draw the provided [GraphicsLayer] into the current [DrawScope].

GraphicsLayerAlphaSample

fun DrawScope.GraphicsLayerAlphaSample(layer: GraphicsLayer) {
    // Create a layer sized to the destination draw scope that is comprised
    // of an inset red rectangle
    layer.apply {
        record { inset(20f, 20f) { drawRect(Color.Red) } }
        // Renders the content of the layer with 50% alpha when it is drawn
        // into the destination
        alpha = 0.5f
    }
    drawLayer(layer)
}

GraphicsLayerColorFilterSample

fun DrawScope.GraphicsLayerColorFilterSample(layer: GraphicsLayer) {
    // Create a layer with the same configuration as the destination DrawScope
    // and draw a red rectangle in the layer
    layer.apply {
        record { drawRect(Color.Red) }
        // Apply a ColorFilter that will tint the contents of the layer to blue
        // when it is drawn into the destination DrawScope
        colorFilter = ColorFilter.tint(Color.Blue)
    }
    drawLayer(layer)
}

GraphicsLayerRenderEffectSample

@RequiresApi(Build.VERSION_CODES.S)
fun DrawScope.GraphicsLayerRenderEffectSample(layer: GraphicsLayer) {
    // Create a layer sized to the destination draw scope that is comprised
    // of an inset red rectangle
    layer.apply {
        record { inset(20f, 20f) { drawRect(Color.Red) } }
        // Configure a blur to the contents of the layer that is applied
        // when drawn to the destination DrawScope
        renderEffect = BlurEffect(20f, 20f, TileMode.Decal)
    }
    drawLayer(layer)
}

GraphicsLayerRotationX

fun DrawScope.GraphicsLayerRotationX(layer: GraphicsLayer) {
    layer.apply {
        record { drawRect(Color.Yellow) }
        // Rotates the yellow rect 45f clockwise relative to the x axis
        rotationX = 45f
    }
    drawLayer(layer)
}

GraphicsLayerRotationYWithCameraDistance

fun DrawScope.GraphicsLayerRotationYWithCameraDistance(layer: GraphicsLayer) {
    layer.apply {
        record { drawRect(Color.Yellow) }
        // Rotates the yellow rect 45f clockwise relative to the y axis
        rotationY = 45f
        cameraDistance = 5.0f
    }
    drawLayer(layer)
}

GraphicsLayerScaleAndPivotSample

fun DrawScope.GraphicsLayerScaleAndPivotSample(layer: GraphicsLayer) {
    // Create a 200 x 200 pixel layer that has a red rectangle drawn in the lower right
    // corner.
    layer.apply {
        record(size = IntSize(200, 200)) {
            drawRect(Color.Red, topLeft = Offset(size.width / 2f, size.height / 2f))
        }
        // Scale the layer by 1.5x in both the x and y axis relative to the bottom
        // right corner
        scaleX = 1.5f
        scaleY = 1.5f
        pivotOffset = Offset(this.size.width.toFloat(), this.size.height.toFloat())
    }
    // Draw the layer into the provided DrawScope
    drawLayer(layer)
}

GraphicsLayerTopLeftSample

fun DrawScope.GraphicsLayerTopLeftSample(layer: GraphicsLayer) {
    // Build the layer with the density, layout direction and size from the DrawScope
    // and position the top left to be 20 pixels from the left and 30 pixels from the top.
    // This will the bounds of the layer with a red rectangle
    layer.apply {
        record { drawRect(Color.Red) }
        this.topLeft = IntOffset(20, 30)
    }
    // Draw the layer into the provided DrawScope
    drawLayer(layer)
}