drawOutline

Function
Common
fun DrawScope.drawOutline(
    outline: Outline,
    color: Color,
    @FloatRange(from = 0.0, to = 1.0) alpha: Float = 1.0f,
    style: DrawStyle = Fill,
    colorFilter: ColorFilter? = null,
    blendMode: BlendMode = DrawScope.DefaultBlendMode,
) =
    drawOutlineHelper(
        outline,
        { rect ->
            drawRect(color, rect.topLeft(), rect.size(), alpha, style, colorFilter, blendMode)
        },
        { rrect ->
            val radius = rrect.bottomLeftCornerRadius.x
            drawRoundRect(
                color = color,
                topLeft = rrect.topLeft(),
                size = rrect.size(),
                cornerRadius = CornerRadius(radius),
                alpha = alpha,
                style = style,
                colorFilter = colorFilter,
                blendMode = blendMode,
            )
        },
        { path -> drawPath(path, color, alpha, style, colorFilter, blendMode) },
    )

Draws the Outline on a DrawScope.

Parameters

outline the outline to draw.
color Color applied to the outline when it is drawn
alpha Opacity to be applied to outline from 0.0f to 1.0f representing fully transparent to fully opaque respectively
style Specifies whether the outline is stroked or filled in
colorFilter: ColorFilter to apply to the color when drawn into the destination
blendMode: Blending algorithm to be applied to the outline
Common
fun DrawScope.drawOutline(
    outline: Outline,
    brush: Brush,
    @FloatRange(from = 0.0, to = 1.0) alpha: Float = 1.0f,
    style: DrawStyle = Fill,
    colorFilter: ColorFilter? = null,
    blendMode: BlendMode = DrawScope.DefaultBlendMode,
) =
    drawOutlineHelper(
        outline,
        { rect ->
            drawRect(brush, rect.topLeft(), rect.size(), alpha, style, colorFilter, blendMode)
        },
        { rrect ->
            val radius = rrect.bottomLeftCornerRadius.x
            drawRoundRect(
                brush = brush,
                topLeft = rrect.topLeft(),
                size = rrect.size(),
                cornerRadius = CornerRadius(radius),
                alpha = alpha,
                style = style,
                colorFilter = colorFilter,
                blendMode = blendMode,
            )
        },
        { path -> drawPath(path, brush, alpha, style, colorFilter, blendMode) },
    )

Draws the Outline on a DrawScope.

Parameters

outline the outline to draw.
brush Brush applied to the outline when it is drawn
alpha Opacity to be applied to outline from 0.0f to 1.0f representing fully transparent to fully opaque respectively
style Specifies whether the outline is stroked or filled in
colorFilter: ColorFilter to apply to the Brush when drawn into the destination
blendMode: Blending algorithm to be applied to the outline
Common
fun Canvas.drawOutline(outline: Outline, paint: Paint) =
    when (outline) {
        is Outline.Rectangle -> drawRect(outline.rect, paint)
        is Outline.Rounded -> {
            val path = outline.roundRectPath
            if (path != null) {
                drawPath(path, paint)
            } else {
                drawRoundRect(
                    left = outline.roundRect.left,
                    top = outline.roundRect.top,
                    right = outline.roundRect.right,
                    bottom = outline.roundRect.bottom,
                    radiusX = outline.roundRect.bottomLeftCornerRadius.x,
                    radiusY = outline.roundRect.bottomLeftCornerRadius.y,
                    paint = paint,
                )
            }
        }
        is Outline.Generic -> drawPath(outline.path, paint)
    }

Draws the Outline on a Canvas.

Parameters

outline the outline to draw.
paint the paint used for the drawing.