fill method
void
fill()
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++;
});
});
}
}