ticks method

  1. @override
List<double> ticks([
  1. int count = 10
])
override

Returns tick values for the scale.

Implementation

@override
List<double> ticks([int count = 10]) {
  final d = _domain;
  var u = d.first;
  var v = d.last;

  final r = v < u;
  if (r) {
    final temp = u;
    u = v;
    v = temp;
  }

  var i = _log(u).floor();
  final j = _log(v).ceil();

  final ticks = <double>[];

  if (_base % 1 == 0) {
    // Integer base
    final k = _base.toInt();
    if (j - i < count) {
      for (; i <= j; ++i) {
        for (int p = 1; p < k; ++p) {
          final t = i < 0 ? p / _pow(-i.toDouble()) : p * _pow(i.toDouble());
          if (t < u) continue;
          if (t > v) break;
          ticks.add(t);
        }
      }
    } else {
      for (; i <= j; ++i) {
        ticks.add(_pow(i.toDouble()));
      }
    }
  } else {
    // Non-integer base
    for (; i <= j; ++i) {
      ticks.add(_pow(i.toDouble()));
    }
  }

  return r ? ticks.reversed.toList() : ticks;
}