Support conversion to and from the XYZ color space.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sat, 13 Oct 2012 22:54:07 +0000 (00:54 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sat, 13 Oct 2012 22:54:07 +0000 (00:54 +0200)
colorspace_conversion_effect.cpp
image_format.h

index 9726b3b..2f74a27 100644 (file)
@@ -25,6 +25,13 @@ ColorSpaceConversionEffect::ColorSpaceConversionEffect()
 
 void get_xyz_matrix(ColorSpace space, Matrix3x3 m)
 {
 
 void get_xyz_matrix(ColorSpace space, Matrix3x3 m)
 {
+       if (space == COLORSPACE_XYZ) {
+               m[0] = 1.0f; m[3] = 0.0f; m[6] = 0.0f;
+               m[1] = 0.0f; m[4] = 1.0f; m[7] = 0.0f;
+               m[2] = 0.0f; m[5] = 0.0f; m[8] = 1.0f;
+               return;
+       }
+
        double x_R, x_G, x_B;
        double y_R, y_G, y_B;
        double Y_R, Y_G, Y_B;
        double x_R, x_G, x_B;
        double y_R, y_G, y_B;
        double Y_R, Y_G, Y_B;
index 55aa8d4..f84a0f4 100644 (file)
@@ -9,6 +9,7 @@ enum ColorSpace {
        COLORSPACE_REC_709 = 0,  // Same as sRGB.
        COLORSPACE_REC_601_525 = 1,
        COLORSPACE_REC_601_625 = 2,
        COLORSPACE_REC_709 = 0,  // Same as sRGB.
        COLORSPACE_REC_601_525 = 1,
        COLORSPACE_REC_601_625 = 2,
+       COLORSPACE_XYZ = 3,  // Mostly useful for testing and debugging.
 };
 
 enum GammaCurve {
 };
 
 enum GammaCurve {