onTimeScale method
Horizontal scale drag on time scale (X-axis zoom).
Implementation
void onTimeScale(double deltaX) {
// deltaX > 0 -> dragged right -> zoom in (widen candle width)
// deltaX < 0 -> dragged left -> zoom out (narrow candle width)
final scaleRatio = 1.0 + (deltaX / 120.0);
final newWidth = (_viewport.candleWidth * scaleRatio).clamp(2.0, 50.0);
if (newWidth == _viewport.candleWidth) return;
final oldTotal = _viewport.candleTotalWidth;
final newTotal = newWidth + _viewport.candleSpacing;
final ratio = newTotal / oldTotal;
final newOffset = (_viewport.scrollOffset * ratio).clamp(
-120.0,
double.infinity,
);
_viewport = _viewport.copyWith(
candleWidth: newWidth,
scrollOffset: newOffset,
);
notifyListeners();
}