Ejemplo n.º 1
0
 // a generic multiplier for any type of color matrix
 private static void _multiplyBgr32(ColorMatrix matrix, byte[] pixels) {
    var M = matrix._cells;
    for (var i = 0; i < pixels.Length; i += 4) {
       byte R = pixels[i + 2], G = pixels[i + 1], B = pixels[i + 0], A = pixels[i + 3];
       pixels[i + 2] = _clamp(R * M[0, 0] + G * M[1, 0] + B * M[2, 0] + M[3, 0]);
       pixels[i + 1] = _clamp(R * M[0, 1] + G * M[1, 1] + B * M[2, 1] + M[3, 1]);
       pixels[i + 0] = _clamp(R * M[0, 2] + G * M[1, 2] + B * M[2, 2] + M[3, 2]);
       pixels[i + 3] = _clamp(A * M[3, 3]);
    }
 }
Ejemplo n.º 2
0
 // an optimized multiplier for Monochrome color matrix 
 private static void _monochromeBgr32(ColorMatrix matrix, byte[] pixels) {
    var M = matrix._cells;
    var hasAlpha = (M[3, 3] != 1.0);
    for (var i = 0; i < pixels.Length; i += 4) {
       byte R = pixels[i + 2], G = pixels[i + 1], B = pixels[i + 0], A = pixels[i + 3];
       pixels[i + 2] = (byte)M[3, 0];
       pixels[i + 1] = (byte)M[3, 1];
       pixels[i + 0] = (byte)M[3, 2];
       if (hasAlpha) {
          pixels[i + 3] = _clamp(A * M[3, 3]);
       }
    }
 }
Ejemplo n.º 3
0
 // converts a matrix to a known type
 private static ColorMatrix _cast(ColorMatrix matrix, KnownType knownType, object knownParam) {
    matrix._knownType = knownType;
    matrix._knownParam = knownParam;
    return matrix;
 }