drawBetweenBarsArea method
void
drawBetweenBarsArea(
- CanvasWrapper canvasWrapper,
- LineChartData data,
- BetweenBarsData betweenBarsData,
- PaintHolder<
LineChartData> holder,
Implementation
@visibleForTesting
void drawBetweenBarsArea(
CanvasWrapper canvasWrapper,
LineChartData data,
BetweenBarsData betweenBarsData,
PaintHolder<LineChartData> holder,
) {
final viewSize = canvasWrapper.size;
final fromBarData = data.lineBarsData[betweenBarsData.fromIndex];
final toBarData = data.lineBarsData[betweenBarsData.toIndex];
final fromBarSplitLines = fromBarData.spots.splitByNullSpots();
final toBarSplitLines = toBarData.spots.splitByNullSpots();
if (fromBarSplitLines.length != toBarSplitLines.length) {
throw ArgumentError(
'Cannot draw betWeenBarsArea when null spots are inconsistent.',
);
}
for (var i = 0; i < fromBarSplitLines.length; i++) {
final fromSpots = fromBarSplitLines[i];
final toSpots = toBarSplitLines[i].reversed.toList();
final fromBarPath = generateBarPath(
viewSize,
fromBarData,
fromSpots,
holder,
);
final barPath = generateBarPath(
viewSize,
toBarData.copyWith(spots: toSpots),
toSpots,
holder,
appendToPath: fromBarPath,
);
final left = min(fromBarData.mostLeftSpot.x, toBarData.mostLeftSpot.x);
final top = max(fromBarData.mostTopSpot.y, toBarData.mostTopSpot.y);
final right = max(fromBarData.mostRightSpot.x, toBarData.mostRightSpot.x);
final bottom = min(
fromBarData.mostBottomSpot.y,
toBarData.mostBottomSpot.y,
);
final aroundRect = Rect.fromLTRB(
getPixelX(left, viewSize, holder),
getPixelY(top, viewSize, holder),
getPixelX(right, viewSize, holder),
getPixelY(bottom, viewSize, holder),
);
drawBetweenBar(
canvasWrapper,
barPath,
betweenBarsData,
aroundRect,
holder,
);
}
}