paintMesh function
void
paintMesh(})
Paints spec's mesh on canvas at drift time seconds; shaderFor
returns the (cached) unit shader of a blob colour.
Implementation
void paintMesh(
Canvas canvas,
Size size,
BackgroundSpec spec,
double seconds, {
required ui.Shader Function(int argb) shaderFor,
}) {
final rect = Offset.zero & size;
final colors = spec.colors;
canvas.drawRect(
rect,
Paint()..color = Color(colors.isEmpty ? 0xFF000000 : colors.first),
);
if (colors.length < 2) return;
final blobs = meshBlobs(spec, size, seconds);
final paint = Paint();
canvas
..save()
..clipRect(rect);
for (var i = 0; i < blobs.length; i++) {
final blob = blobs[i];
paint.shader = shaderFor(colors[i + 1] | 0xFF000000);
canvas
..save()
..translate(blob.center.dx, blob.center.dy)
..scale(blob.radius)
..drawRect(const Rect.fromLTRB(-1, -1, 1, 1), paint)
..restore();
}
canvas.restore();
}