Show "unchanged color" as checkered pattern
[colorize.git] / gui / palette.c
index f02baa1..e6d2ee7 100644 (file)
@@ -47,42 +47,52 @@ static GdkPixbuf *draw_pixpuf(int i)
        pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, COLOR_WIDTH, COLOR_HEIGHT);
        data = gdk_pixbuf_get_pixels(pixbuf);
        rs = gdk_pixbuf_get_rowstride(pixbuf);
-       for (k = 0; k < COLOR_WIDTH; k++) {
-               /* we use height as horizontal size of original color area */
-               if (k >= COLOR_HEIGHT+3) {
-                       y = (double)(k-COLOR_HEIGHT-3) / (double)((COLOR_WIDTH-COLOR_HEIGHT-3)-1);
-                       y = (y - 0.5) * contrast + 0.5;
-                       y += bright;
-                       if (y < 0)
-                               y = 0;
-                       if (y > 1)
-                               y = 1;
-                       yuv2rgb_pixle(y, u, v, &r, &g, &b);
-                       cr = r * 255.0F;
-                       if (cr < 0)
-                               cr = 0;
-                       else if (cr > 255)
+       if (cr == 255 && cg == 255 && cb == 255) {
+               for (k = 0; k < COLOR_WIDTH; k++) {
+                       for (j = 0; j < COLOR_HEIGHT; j++) {
+                               data[j * rs + k * 3 + 0] = 255;
+                               data[j * rs + k * 3 + 1] = 255;
+                               data[j * rs + k * 3 + 2] = 255;
+                       }
+               }
+       } else {
+               for (k = 0; k < COLOR_WIDTH; k++) {
+                       /* we use height as horizontal size of original color area */
+                       if (k >= COLOR_HEIGHT+3) {
+                               y = (double)(k-COLOR_HEIGHT-3) / (double)((COLOR_WIDTH-COLOR_HEIGHT-3)-1);
+                               y = (y - 0.5) * contrast + 0.5;
+                               y += bright;
+                               if (y < 0)
+                                       y = 0;
+                               if (y > 1)
+                                       y = 1;
+                               yuv2rgb_pixle(y, u, v, &r, &g, &b);
+                               cr = r * 255.0F;
+                               if (cr < 0)
+                                       cr = 0;
+                               else if (cr > 255)
+                                       cr = 255;
+                               cg = g * 255.0F;
+                               if (cg < 0)
+                                       cg = 0;
+                               else if (cg > 255)
+                                       cg = 255;
+                               cb = b * 255.0F;
+                               if (cb < 0)
+                                       cb = 0;
+                               else if (cb > 255)
+                                       cb = 255;
+                       } else
+                       if (k >= COLOR_HEIGHT) {
                                cr = 255;
-                       cg = g * 255.0F;
-                       if (cg < 0)
-                               cg = 0;
-                       else if (cg > 255)
                                cg = 255;
-                       cb = b * 255.0F;
-                       if (cb < 0)
-                               cb = 0;
-                       else if (cb > 255)
                                cb = 255;
-               } else
-               if (k >= COLOR_HEIGHT) {
-                       cr = 255;
-                       cg = 255;
-                       cb = 255;
-               }
-               for (j = 0; j < COLOR_HEIGHT; j++) {
-                       data[j * rs + k * 3 + 0] = cr;
-                       data[j * rs + k * 3 + 1] = cg;
-                       data[j * rs + k * 3 + 2] = cb;
+                       }
+                       for (j = 0; j < COLOR_HEIGHT; j++) {
+                               data[j * rs + k * 3 + 0] = cr;
+                               data[j * rs + k * 3 + 1] = cg;
+                               data[j * rs + k * 3 + 2] = cb;
+                       }
                }
        }