chiark / gitweb /
faster
authorian <ian>
Sat, 23 Oct 2004 10:56:35 +0000 (10:56 +0000)
committerian <ian>
Sat, 23 Oct 2004 10:56:35 +0000 (10:56 +0000)
layout/subseg2display.c

index 7d89cdc78c0d829f6db61d93d8426fabc3fd952d..31a8ba8b7e1f4a82fd28e2742d5199df0f834f42 100644 (file)
@@ -223,12 +223,16 @@ static void angle_to_colour(double result[3],
 
 static void process(void) {
   int i;
+  unsigned char rgbob[3];
   
   ppm_readppminit(encodingfile, &cols, &rows, &maxval, &informat);
   if (maxval != 255) badformat("wrong maxval");
   if (informat != RPPM_FORMAT) badformat("wrong format");
   ppm_writeppminit(stdout, cols, rows, 255, 0);
 
+  for (i=0; i<3; i++)
+    rgbob[i]= background.rgb[i] * 255.0;
+
   for (row=0; row<rows; row++)
     for (col=0; col<cols; col++) {
       unsigned char rgbi[3], rgbo[3];
@@ -241,8 +245,7 @@ static void process(void) {
 
       if (rgbi[0]==255 && rgbi[1]==255 && rgbi[2]==255) {
 
-       for (i=0; i<3; i++)
-         rgbod[i]= background.rgb[i];
+       if (fwrite(rgbob,1,3,stdout)!=3) { perror("filling"); exit(12); }
        
       } else {
        int segnum, movfeatpos, movfeatposix, red, blue, green, ix;
@@ -276,12 +279,11 @@ static void process(void) {
        for (i=0; i<3; i++)
          rgbod[i]= alpha * rgbdirn[i] + (1.0 - alpha) * r->rgb[i];
 
-      }
-
-      for (i=0; i<3; i++)
-       rgbo[i]= rgbod[i] * 255.0;
+       for (i=0; i<3; i++)
+         rgbo[i]= rgbod[i] * 255.0;
 
-      if (fwrite(rgbo,1,3,stdout)!=3) { perror("writing"); exit(12); }
+       if (fwrite(rgbo,1,3,stdout)!=3) { perror("writing"); exit(12); }
+      }
     }
 }