followedBy method
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);
}