Fix regressions in the color management / dither patch.
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Tue, 10 Jan 2012 14:24:18 +0000 (14:24 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Tue, 10 Jan 2012 14:24:18 +0000 (14:24 +0000)
source/blender/blenlib/BLI_utildefines.h
source/blender/imbuf/intern/divers.c

index 45049dd62071678e2433429d01c53ef4f804c417..6d9188c1848fbb5a914a193f89188905c9795846 100644 (file)
 
 #define FTOCHAR(val) ((val)<=0.0f)? 0 : (((val)>(1.0f-0.5f/255.0f))? 255 : (char)((255.0f*(val))+0.5f))
 #define FTOUSHORT(val) ((val >= 1.0f-0.5f/65535)? 65535: (val <= 0.0f)? 0: (unsigned short)(val*65535.0f + 0.5f))
-#define USHORTTOUCHAR(val) ((unsigned char)(((val)+0x80)>>8))
+#define USHORTTOUCHAR(val) ((unsigned char)(((val) >= 65535-128)? 255: ((val)+128)>>8))
 #define F3TOCHAR3(v2, v1) {                                                   \
                (v1)[0]= FTOCHAR((v2[0]));                                            \
                (v1)[1]= FTOCHAR((v2[1]));                                            \
index de19f8e6ea6834618dca1d5ef51c827da7be2f52..442309ccf7ac0612e3142ba1345960bc235a830f 100644 (file)
@@ -188,9 +188,9 @@ MINLINE void ushort_to_byte_v4(uchar b[4], const unsigned short us[4])
 MINLINE void ushort_to_byte_dither_v4(uchar b[4], const unsigned short us[4], DitherContext *di)
 {
        b[0]= dither_value(us[0], di, 0);
-       b[1]= dither_value(us[0], di, 1);
-       b[2]= dither_value(us[0], di, 2);
-       b[3]= dither_value(us[0], di, 3);
+       b[1]= dither_value(us[1], di, 1);
+       b[2]= dither_value(us[2], di, 2);
+       b[3]= dither_value(us[3], di, 3);
 }
 
 MINLINE void float_to_byte_dither_v4(uchar b[4], const float f[4], DitherContext *di)