meshGradient
fun Modifier.meshGradient(
@IntRange(from = 1) rows: Int,
@IntRange(from = 1) columns: Int,
hasBicubicColor: Boolean = false,
block: MeshGradientScope.() -> Unit,
) = this.then(MeshGradientBlockModifierElement(rows, columns, hasBicubicColor, block))
A MeshGradient is a 2D grid of patches defined by vertices. Each vertex has a position, color, and four optional Bezier control points (tangents) that define the curvature of the edges connecting neighboring vertices.
Grid Dimensions: For a given rows and columns (representing the number of patches), there are a total of (rows + 1) * (columns + 1) vertices. For example, a 1x1 mesh consists of 4 vertices forming a single rectangular patch.
Coordinate System: All positions and Bezier offsets use a normalized coordinate system where (0,0) is the top-left and (1,1) is the bottom-right of the modifier's drawing bounds.
Bezier Tangents: Bezier control points are provided as an Offset relative to the vertex position. The default value of a Bezier control point is Offset.Unspecified. If a control point is Offset.Unspecified, the renderer automatically infers a tangent based on the neighboring vertices to ensure C1 continuity (smooth transitions) across patches.
Parameters
| rows | The number of patches along the vertical axis. Must be at least 1. |
| columns | The number of patches along the horizontal axis. Must be at least 1. |
| hasBicubicColor | When true, uses Catmull-Rom interpolation for colors, resulting in smoother transitions compared to bilinear interpolation. |
| block | Lambda invoked to configure the mesh. Use the provided MeshGradientScope to set the properties of each vertex. |