update method

  1. @override
void update(
  1. int dirt
)
override

Implementation

@override
void update(int dirt) {
  super.update(dirt);
  double radius = Vec2D.distance(renderStart, renderEnd);
  List<ui.Color> colors = <ui.Color>[];
  List<double> stops = <double>[];
  int numStops = (colorStops.length / 5).round();

  int idx = 0;
  for (int i = 0; i < numStops; i++) {
    double o = colorStops[idx + 3].clamp(0.0, 1.0).toDouble();
    ui.Color color = ui.Color.fromRGBO(
        (colorStops[idx] * 255.0).round(),
        (colorStops[idx + 1] * 255.0).round(),
        (colorStops[idx + 2] * 255.0).round(),
        o);
    colors.add(color);
    stops.add(colorStops[idx + 4]);
    idx += 5;
  }
  ui.Gradient radial = ui.Gradient.radial(
      Offset(renderStart[0], renderStart[1]),
      radius,
      colors,
      stops,
      ui.TileMode.clamp);

  Color paintColor;
  if (artboard.overrideColor == null) {
    paintColor = Colors.white.withOpacity(
        (artboard.modulateOpacity * opacity * shape.renderOpacity)
            .clamp(0.0, 1.0)
            .toDouble());
  } else {
    Float32List overrideColor = artboard.overrideColor!;
    double o = (overrideColor[3] *
            artboard.modulateOpacity *
            opacity *
            shape.renderOpacity)
        .clamp(0.0, 1.0)
        .toDouble();
    paintColor = ui.Color.fromRGBO(
        (overrideColor[0] * 255.0).round(),
        (overrideColor[1] * 255.0).round(),
        (overrideColor[2] * 255.0).round(),
        o);
  }

  var parentShape = parent as FlutterActorShape;
  _paint
    ..color = paintColor
    ..isAntiAlias = parentShape.antialias
    ..blendMode = parentShape.blendMode
    ..shader = radial;
  onPaintUpdated(_paint);
}