paintLayerBlurred function

void paintLayerBlurred(
  1. Canvas canvas,
  2. List<LayerBlur> blurs,
  3. Rect box,
  4. Rect bounds,
  5. void draw(),
)

Paints what draw paints, blurred by each of blurs in turn, within bounds; a progressive blur's handles are placed in box.

Implementation

void paintLayerBlurred(ui.Canvas canvas, List<LayerBlur> blurs, ui.Rect box, ui.Rect bounds, void Function() draw) {
  if (blurs.isEmpty) return draw();
  final List<LayerBlur> inner = blurs.sublist(1);
  void drawInner() => paintLayerBlurred(canvas, inner, box, bounds, draw);
  switch (blurs.first) {
    case UniformBlur(:final blur):
      _paintUniform(canvas, blur, bounds, drawInner);
    case final ProgressiveBlur progressive:
      _paintProgressive(canvas, progressive, box, bounds, drawInner);
  }
}