addTinted method

void addTinted(
  1. double x,
  2. double y,
  3. double z,
  4. double radius,
  5. double ink,
  6. double alpha,
  7. double red,
  8. double green,
  9. double blue,
  10. double tint,
)

Like add, with a colour of its own: red, green and blue in 0..1, and tint — how far the dot leans from the ink toward that colour (0 = pure ink, 1 = pure tint). blend carries the tint across a morph.

Implementation

void addTinted(
  double x,
  double y,
  double z,
  double radius,
  double ink,
  double alpha,
  double red,
  double green,
  double blue,
  double tint,
) {
  if (alpha < 0.02) {
    return;
  }
  final base = _length * stride;
  if (base + stride > _data.length) {
    final grown = Float64List(_data.length * 2);
    grown.setAll(0, _data);
    _data = grown;
  }
  _data[base + _ox] = x;
  _data[base + _oy] = y;
  _data[base + _oz] = z;
  _data[base + _or] = radius;
  _data[base + _oInk] = ink;
  _data[base + _oAlpha] = alpha;
  _data[base + _oTintR] = red;
  _data[base + _oTintG] = green;
  _data[base + _oTintB] = blue;
  _data[base + _oTint] = tint;
  _length++;
  _sortedLength = -1;
}