onPaint method
Draws segment in series bounds.
Implementation
@override
void onPaint(Canvas canvas) {
final SeriesRendererDetails seriesRendererDetails =
SeriesHelper.getSeriesRendererDetails(
_segmentProperties.seriesRenderer);
if (strokePaint != null) {
_segmentProperties.path = Path();
if (_segmentProperties.series.animationDuration > 0 == true &&
_segmentProperties.stateProperties.renderingDetails.isLegendToggled ==
false) {
if (_segmentProperties
.stateProperties.renderingDetails.widgetNeedUpdate ==
false ||
seriesRendererDetails.reAnimate == true) {
if (_isTransposed) {
_centerX = _highX + ((_lowX - _highX) / 2);
_segmentProperties.openX = _centerX -
((_centerX - _segmentProperties.currentPoint!.openPoint!.x) *
animationFactor);
_segmentProperties.closeX = _centerX +
((_segmentProperties.currentPoint!.closePoint!.x - _centerX) *
animationFactor);
_highX = _centerX + ((_centerX - _highX).abs() * animationFactor);
_lowX = _centerX - ((_lowX - _centerX).abs() * animationFactor);
canvas.drawLine(Offset(_lowX, _centerLowPoint.y),
Offset(_highX, _centerHighPoint.y), strokePaint!);
canvas.drawLine(
Offset(_segmentProperties.openX, _segmentProperties.openY),
Offset(_segmentProperties.openX, _highY),
strokePaint!);
canvas.drawLine(
Offset(_segmentProperties.closeX, _lowY),
Offset(_segmentProperties.closeX, _segmentProperties.closeY),
strokePaint!);
} else {
_centerY = _segmentProperties.high +
((_segmentProperties.low - _segmentProperties.high) / 2);
_segmentProperties.openY = _centerY -
((_centerY - _segmentProperties.currentPoint!.openPoint!.y) *
animationFactor);
_segmentProperties.closeY = _centerY +
((_segmentProperties.currentPoint!.closePoint!.y - _centerY) *
animationFactor);
_highY = _centerY -
((_centerY - _segmentProperties.high) * animationFactor);
_lowY = _centerY +
((_segmentProperties.low - _centerY) * animationFactor);
canvas.drawLine(Offset(_centerHigh, _highY),
Offset(_centerLow, _lowY), strokePaint!);
canvas.drawLine(
Offset(_segmentProperties.openX, _segmentProperties.openY),
Offset(_centerHigh, _segmentProperties.openY),
strokePaint!);
canvas.drawLine(
Offset(_centerLow, _segmentProperties.closeY),
Offset(_segmentProperties.closeX, _segmentProperties.closeY),
strokePaint!);
}
} else {
_currentSegment = seriesRendererDetails.segments[currentSegmentIndex!]
as HiloOpenCloseSegment;
final SeriesRendererDetails? oldSeriesDetails =
SeriesHelper.getSeriesRendererDetails(
_currentSegment._segmentProperties.oldSeriesRenderer!);
_oldSegment = seriesRendererDetails.reAnimate == false &&
(_currentSegment._segmentProperties.oldSeriesRenderer !=
null &&
oldSeriesDetails!.segments.isNotEmpty == true &&
oldSeriesDetails.segments[0] is HiloOpenCloseSegment &&
oldSeriesDetails.segments.length - 1 >=
currentSegmentIndex! ==
true)
? oldSeriesDetails.segments[currentSegmentIndex!]
as HiloOpenCloseSegment?
: null;
animateHiloOpenCloseSeries(
_isTransposed,
_isTransposed
? _segmentProperties.lowPoint.x
: _segmentProperties.low,
_isTransposed
? _segmentProperties.highPoint.x
: _segmentProperties.high,
_isTransposed
? _oldSegment?._segmentProperties.lowPoint.x
: _oldSegment?._segmentProperties.low,
_isTransposed
? _oldSegment?._segmentProperties.highPoint.x
: _oldSegment?._segmentProperties.high,
_segmentProperties.openX,
_segmentProperties.openY,
_segmentProperties.closeX,
_segmentProperties.closeY,
_isTransposed ? _centerLowPoint.y : _centerLow,
_isTransposed ? _centerHighPoint.y : _centerHigh,
_oldSegment?._segmentProperties.openX,
_oldSegment?._segmentProperties.openY,
_oldSegment?._segmentProperties.closeX,
_oldSegment?._segmentProperties.closeY,
_isTransposed
? _oldSegment?._centerLowPoint.y
: _oldSegment?._centerLow,
_isTransposed
? _oldSegment?._centerHighPoint.y
: _oldSegment?._centerHigh,
animationFactor,
strokePaint!,
canvas,
SeriesHelper.getSeriesRendererDetails(
_segmentProperties.seriesRenderer));
}
} else {
(seriesRendererDetails.dashArray![0] != 0 &&
seriesRendererDetails.dashArray![1] != 0)
? drawDashedLine(canvas, seriesRendererDetails.dashArray!,
strokePaint!, _drawDashedHiloOpenClosePath(canvas))
: drawHiloOpenClosePath(canvas);
}
}
}