drawOverlay method
void
drawOverlay({
- required Canvas canvas,
- required Rect bounds,
- required List<
IndicatorResult> indicators, - required VisibleIndices visible,
- required PriceRange priceRange,
- required CoordinateConverter converter,
Draws overlay indicators on the main chart pane.
Implementation
void drawOverlay({
required Canvas canvas,
required Rect bounds,
required List<IndicatorResult> indicators,
required VisibleIndices visible,
required PriceRange priceRange,
required CoordinateConverter converter,
}) {
for (final indicator in indicators) {
if (!indicator.isOverlay) continue;
// Special rendering for Bollinger Bands / VWAP bands (fill area between upper and lower)
if ((indicator.indicatorId.startsWith('BB_') ||
indicator.indicatorId == 'VWAP') &&
indicator.series.any((s) => s.id == 'upper') &&
indicator.series.any((s) => s.id == 'lower')) {
_drawBandFill(
canvas: canvas,
bounds: bounds,
indicator: indicator,
visible: visible,
priceRange: priceRange,
converter: converter,
);
}
// Special rendering for Supertrend indicator (renders bull support and bear resistance)
if (indicator.indicatorId.startsWith('SUPERTREND_')) {
for (final s in indicator.series) {
if (s.id == 'supertrend_bull' || s.id == 'supertrend_bear') {
_drawSeriesLine(
canvas: canvas,
bounds: bounds,
series: s,
visible: visible,
priceRange: priceRange,
converter: converter,
);
}
}
continue;
}
// Draw each series line
for (final s in indicator.series) {
_drawSeriesLine(
canvas: canvas,
bounds: bounds,
series: s,
visible: visible,
priceRange: priceRange,
converter: converter,
);
}
}
}