Huub Schaeks fix for .schange
[swftools.git] / pdf2swf / xpdf / cmyk.cc
index 9492e36..c74f743 100644 (file)
@@ -575,6 +575,11 @@ int check(float c, float m, float y, float k, float r, float g, float b)
 }
 void convert_cmyk2rgb(float c,float m,float y,float k, unsigned char*r, unsigned char*g, unsigned char*b)
 {
+    c = c<0?0:(c>1?1:c<=1?c:0.5);
+    m = m<0?0:(m>1?1:m<=1?m:0.5);
+    y = y<0?0:(y>1?1:y<=1?y:0.5);
+    k = k<0?0:(k>1?1:k<=1?k:0.5);
+
     int cc = (int)(c*7.0);
     int mm = (int)(m*15.0);
     int yy = (int)(y*15.0);
@@ -591,18 +596,21 @@ void convert_cmyk2rgb(float c,float m,float y,float k, unsigned char*r, unsigned
     int py = yy>=RY?pp:pp + PY;
     int pk = kk>=RK?pp:pp + PK;
 
-    int rr = (int)cmyk2rgb[pp].r + ((int)cmyk2rgb[pc].r - (int)cmyk2rgb[pp].r)*rc 
+    int rr = (int)((int)cmyk2rgb[pp].r 
+                                + ((int)cmyk2rgb[pc].r - (int)cmyk2rgb[pp].r)*rc 
                                  + ((int)cmyk2rgb[pm].r - (int)cmyk2rgb[pp].r)*rm
                                  + ((int)cmyk2rgb[py].r - (int)cmyk2rgb[pp].r)*ry
-                                 + ((int)cmyk2rgb[pk].r - (int)cmyk2rgb[pp].r)*rk;
-    int gg = (int)cmyk2rgb[pp].g + ((int)cmyk2rgb[pc].g - (int)cmyk2rgb[pp].g)*rc 
+                                 + ((int)cmyk2rgb[pk].r - (int)cmyk2rgb[pp].r)*rk);
+    int gg = (int)((int)cmyk2rgb[pp].g 
+                                + ((int)cmyk2rgb[pc].g - (int)cmyk2rgb[pp].g)*rc 
                                  + ((int)cmyk2rgb[pm].g - (int)cmyk2rgb[pp].g)*rm
                                  + ((int)cmyk2rgb[py].g - (int)cmyk2rgb[pp].g)*ry
-                                 + ((int)cmyk2rgb[pk].g - (int)cmyk2rgb[pp].g)*rk;
-    int bb = (int)cmyk2rgb[pp].b + ((int)cmyk2rgb[pc].b - (int)cmyk2rgb[pp].b)*rc 
+                                 + ((int)cmyk2rgb[pk].g - (int)cmyk2rgb[pp].g)*rk);
+    int bb = (int)((int)cmyk2rgb[pp].b 
+                                + ((int)cmyk2rgb[pc].b - (int)cmyk2rgb[pp].b)*rc 
                                  + ((int)cmyk2rgb[pm].b - (int)cmyk2rgb[pp].b)*rm
                                  + ((int)cmyk2rgb[py].b - (int)cmyk2rgb[pp].b)*ry
-                                 + ((int)cmyk2rgb[pk].b - (int)cmyk2rgb[pp].b)*rk;
+                                 + ((int)cmyk2rgb[pk].b - (int)cmyk2rgb[pp].b)*rk);
     *r = rr<0?0:(rr>255?255:rr);
     *g = gg<0?0:(gg>255?255:gg);
     *b = bb<0?0:(bb>255?255:bb);
@@ -629,11 +637,11 @@ void convert_cmyk2rgb(float c,float m,float y,float k, unsigned char*r, unsigned
     if(g2<0)g2=0; if(g2>255)g2=255;
     if(b2<0)b2=0; if(b2>255)b2=255;
 
-    *r = r2;
-    *g = g2;
-    *b = b2;
+    *r = (unsigned char)r2;
+    *g = (unsigned char)g2;
+    *b = (unsigned char)b2;
 
-    if(!check(c,m,y,k, *r/255.0, *g/255.0, *b/255.0)) {
+    /*f(!check(c,m,y,k, *r/255.0, *g/255.0, *b/255.0)) {
         for(t=0;t<16;t++) {
             int p2 = pp;
             if(t&1) p2+=(pc-pp); 
@@ -647,7 +655,7 @@ void convert_cmyk2rgb(float c,float m,float y,float k, unsigned char*r, unsigned
             float f = rrc*rrm*rry*rrk;
             //printf("%d%d%d%d %f %02x%02x%02x\n", !!(t&8),!!(t&4),!!(t&2),!!(t&1), f, cmyk2rgb[p2].r, cmyk2rgb[p2].g, cmyk2rgb[p2].b);
         }
-    }
+    }*/
 }
 
 // END