followedBy method

ColorMatrix followedBy(
  1. ColorMatrix next
)

Returns a matrix that applies this transform before next.

Implementation

ColorMatrix followedBy(ColorMatrix next) {
  if (isIdentity) return next;
  if (next.isIdentity) return this;

  final result = List<double>.filled(20, 0);
  for (var row = 0; row < 4; row++) {
    final nextOffset = row * 5;
    final outOffset = row * 5;
    for (var col = 0; col < 4; col++) {
      result[outOffset + col] =
          (next._values[nextOffset] * _values[col]) +
          (next._values[nextOffset + 1] * _values[5 + col]) +
          (next._values[nextOffset + 2] * _values[10 + col]) +
          (next._values[nextOffset + 3] * _values[15 + col]);
    }
    result[outOffset + 4] =
        next._values[nextOffset + 4] +
        (next._values[nextOffset] * _values[4]) +
        (next._values[nextOffset + 1] * _values[9]) +
        (next._values[nextOffset + 2] * _values[14]) +
        (next._values[nextOffset + 3] * _values[19]);
  }
  return ColorMatrix(result);
}