fill method

void fill(
  1. ILineDataSet set,
  2. bool drawCircleHole,
  3. bool drawTransparentCircleHole,
  4. Paint paint,
  5. Paint circlePaint,
  6. Function callback,
)

Fills the cache with bitmaps for the given dataset.

@param set @param drawCircleHole @param drawTransparentCircleHole

Implementation

void fill(
    ILineDataSet set,
    bool drawCircleHole,
    bool drawTransparentCircleHole,
    Paint paint,
    Paint circlePaint,
    Function callback) {
  final int colorCount = set.getCircleColorCount();
  double? circleRadius = set.getCircleRadius();
  double? circleHoleRadius = set.getCircleHoleRadius();

  int finishCount = 0;
  for (int i = 0; i < colorCount; i++) {
//      Bitmap.Config conf = Bitmap.Config.ARGB_4444;
//      Bitmap circleBitmap = Bitmap.createBitmap((int) (circleRadius * 2.1), (int) (circleRadius * 2.1), conf);

    ui.PictureRecorder recorder = ui.PictureRecorder();
    Canvas canvas = Canvas(
        recorder,
        Rect.fromLTRB(
            0,
            0,
            drawCircleHole ? circleHoleRadius! * 2 : circleRadius! * 2,
            drawCircleHole ? circleHoleRadius! * 2 : circleRadius! * 2));
//      _circleBitmaps[i] = circleBitmap;
    paint.color = set.getCircleColor(i);

    if (drawTransparentCircleHole) {
      // Begin path for circle with hole
      _circlePathBuffer.reset();

      _circlePathBuffer
          .addOval(Rect.fromLTRB(0, 0, circleRadius! * 2, circleRadius * 2));

      // Cut hole in path
      _circlePathBuffer.addOval(
          Rect.fromLTRB(0, 0, circleHoleRadius! * 2, circleHoleRadius * 2));

      // Fill in-between
      canvas.drawPath(_circlePathBuffer, paint);
    } else {
      canvas.drawCircle(
          Offset(circleRadius!, circleRadius), circleRadius, paint);

      if (drawCircleHole) {
        canvas.drawCircle(Offset(circleRadius, circleRadius),
            circleHoleRadius!, circlePaint);
      }
    }

    var length =
        (drawCircleHole ? circleHoleRadius! * 2 : circleRadius * 2).toInt();
    recorder.endRecording().toImage(length, length).then((image) {
      image.toByteData(format: ImageByteFormat.rawRgba).then((data) {
        _circleBitmaps![i] = data;
        if (finishCount >= colorCount - 1) {
          callback();
        }
        finishCount++;
      });
    });
  }
}