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;
+ }
}
}