# ColorFilter.matrix constructor

const ColorFilter.matrix(
1. matrix
)

Construct a color filter from a 4x5 row-major matrix. The matrix is interpreted as a 5x5 matrix, where the fifth row is the identity configuration.

Every pixel's color value, represented as an `[R, G, B, A]`, is matrix multiplied to create a new color:

``````| R' |   | a00 a01 a02 a03 a04 |   | R |
| G' |   | a10 a11 a12 a13 a14 |   | G |
| B' | = | a20 a21 a22 a23 a24 | * | B |
| A' |   | a30 a31 a32 a33 a34 |   | A |
| 1  |   |  0   0   0   0   1  |   | 1 |
``````

The matrix is in row-major order and the translation column is specified in unnormalized, 0...255, space. For example, the identity matrix is:

``````const ColorFilter identity = ColorFilter.matrix(<double>[
1, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 1, 0, 0,
0, 0, 0, 1, 0,
]);
``````

## Examples

An inversion color matrix:

``````const ColorFilter invert = ColorFilter.matrix(<double>[
-1,  0,  0, 0, 255,
0, -1,  0, 0, 255,
0,  0, -1, 0, 255,
0,  0,  0, 1,   0,
]);
``````

A sepia-toned color matrix (values based on the Filter Effects Spec):

``````const ColorFilter sepia = ColorFilter.matrix(<double>[
0.393, 0.769, 0.189, 0, 0,
0.349, 0.686, 0.168, 0, 0,
0.272, 0.534, 0.131, 0, 0,
0,     0,     0,     1, 0,
]);
``````

A greyscale color filter (values based on the Filter Effects Spec):

``````const ColorFilter greyscale = ColorFilter.matrix(<double>[
0.2126, 0.7152, 0.0722, 0, 0,
0.2126, 0.7152, 0.0722, 0, 0,
0.2126, 0.7152, 0.0722, 0, 0,
0,      0,      0,      1, 0,
]);
``````

## Implementation

``````const ColorFilter.matrix(List<double> matrix)
: _color = null,
_blendMode = null,
_matrix = matrix,
_type = _kTypeMatrix;``````