public class ColorMatrix extends Object
[ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t ]
When applied to a color [R, G, B, A]
, the resulting color
is computed as:
R’ = a*R + b*G + c*B + d*A + e; G’ = f*R + g*G + h*B + i*A + j; B’ = k*R + l*G + m*B + n*A + o; A’ = p*R + q*G + r*B + s*A + t;
That resulting color [R’, G’, B’, A’]
then has each channel clamped to the 0
to 255
range.
The sample ColorMatrix below inverts incoming colors by scaling each
channel by -1
, and then shifting the result up by
255
to remain in the standard color space.
[ -1, 0, 0, 0, 255, 0, -1, 0, 0, 255, 0, 0, -1, 0, 255, 0, 0, 0, 1, 0 ]
Constructor and Description |
---|
ColorMatrix()
Create a new colormatrix initialized to identity (as if reset() had
been called).
|
ColorMatrix(ColorMatrix src)
Create a new colormatrix initialized with the specified colormatrix.
|
ColorMatrix(float[] src)
Create a new colormatrix initialized with the specified array of values.
|
Modifier and Type | Method and Description |
---|---|
float[] |
getArray()
Return the array of floats representing this colormatrix.
|
void |
postConcat(ColorMatrix postmatrix)
Concat this colormatrix with the specified postmatrix.
|
void |
preConcat(ColorMatrix prematrix)
Concat this colormatrix with the specified prematrix.
|
void |
reset()
Set this colormatrix to identity:
[ 1 0 0 0 0 - red vector
0 1 0 0 0 - green vector
0 0 1 0 0 - blue vector
0 0 0 1 0 ] - alpha vector
|
void |
set(ColorMatrix src)
Assign the src colormatrix into this matrix, copying all of its values.
|
void |
set(float[] src)
Assign the array of floats into this matrix, copying all of its values.
|
void |
setConcat(ColorMatrix matA,
ColorMatrix matB)
Set this colormatrix to the concatenation of the two specified
colormatrices, such that the resulting colormatrix has the same effect
as applying matB and then applying matA.
|
void |
setRGB2YUV()
Set the matrix to convert RGB to YUV
|
void |
setRotate(int axis,
float degrees)
Set the rotation on a color axis by the specified values.
|
void |
setSaturation(float sat)
Set the matrix to affect the saturation of colors.
|
void |
setScale(float rScale,
float gScale,
float bScale,
float aScale)
Set this colormatrix to scale by the specified values.
|
void |
setYUV2RGB()
Set the matrix to convert from YUV to RGB
|
public ColorMatrix()
public ColorMatrix(float[] src)
public ColorMatrix(ColorMatrix src)
public final float[] getArray()
public void reset()
[ 1 0 0 0 0 - red vector 0 1 0 0 0 - green vector 0 0 1 0 0 - blue vector 0 0 0 1 0 ] - alpha vector
public void set(ColorMatrix src)
public void set(float[] src)
public void setScale(float rScale, float gScale, float bScale, float aScale)
public void setRotate(int axis, float degrees)
axis=0
correspond to a rotation around the RED color
axis=1
correspond to a rotation around the GREEN color
axis=2
correspond to a rotation around the BLUE color
public void setConcat(ColorMatrix matA, ColorMatrix matB)
It is legal for either matA or matB to be the same colormatrix as this.
public void preConcat(ColorMatrix prematrix)
This is logically the same as calling setConcat(this, prematrix);
public void postConcat(ColorMatrix postmatrix)
This is logically the same as calling setConcat(postmatrix, this);
public void setSaturation(float sat)
sat
- A value of 0 maps the color to gray-scale. 1 is identity.public void setRGB2YUV()
public void setYUV2RGB()