" * * * ",
" *** *",
};
+static char *asis_pic[] = {
+ " ** **** ** **** ",
+ " **** ******** ** ******** ",
+ " ** ** *** *** ** *** *** ",
+ " ** ** ** ** ** ** **",
+ " ** ** ** ** ** ",
+ "** ** ** ** ** ",
+ "************ ****** ** ****** ",
+ "************ ****** ** ****** ",
+ "** ** ** ** ** ",
+ "** ** ** ** **",
+ "** ** ** ** ** ** **",
+ "** ** *** *** ** *** *** ",
+ "** ** ******** ** ******** ",
+ "** ** **** ** **** ",
+};
+
static GdkPixbuf *draw_pixpuf(int i)
{
GdkPixbuf *pixbuf;
guchar *data;
int j, jj, k, kk, rs;
- int cr, cg, cb;
+ int cr, cg, cb, asis = 0;
float bright, contrast, alpha;
double r, g, b, y, u, v, pat;
r = cr / 255.0;
g = cg / 255.0;
b = cb / 255.0;
+ if (cr == 255 && cg == 255 && cb == 255)
+ asis = 1;
rgb2yuv_pixle(r, g, b, &y, &u, &v);
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);
- if (cr == 255 && cg == 255 && cb == 255) {
+ if (asis) {
for (k = 0; k < COLOR_WIDTH; k++) {
+ if (k >= COLOR_HEIGHT+3) {
+ if (alpha < 1) {
+ pat = ((k>>3)&1) ? 0.5 : 0.75;
+ r = alpha + pat * (1-alpha);
+ g = alpha + pat * (1-alpha);
+ b = alpha + pat * (1-alpha);
+ } else {
+ r = 1;
+ g = 1;
+ b = 1;
+ }
+ 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;
+ data[j * rs + k * 3 + 0] = cr;
+ data[j * rs + k * 3 + 1] = cg;
+ data[j * rs + k * 3 + 2] = cb;
+ } else
+ if (k >= COLOR_HEIGHT) {
+ cr = 255;
+ cg = 255;
+ cb = 255;
+ }
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;
+ data[j * rs + k * 3 + 0] = cr;
+ data[j * rs + k * 3 + 1] = cg;
+ data[j * rs + k * 3 + 2] = cb;
}
}
} else {
if (y > 1)
y = 1;
yuv2rgb_pixle(y, u, v, &r, &g, &b);
- pat = ((k>>3)&1) ? 0.5 : 0.75;
- r = r * alpha + pat * (1-alpha);
- g = g * alpha + pat * (1-alpha);
- b = b * alpha + pat * (1-alpha);
+ if (alpha < 1) {
+ pat = ((k>>3)&1) ? 0.5 : 0.75;
+ r = r * alpha + pat * (1-alpha);
+ g = g * alpha + pat * (1-alpha);
+ b = b * alpha + pat * (1-alpha);
+ }
cr = r * 255.0F;
if (cr < 0)
cr = 0;
}
}
+ /* indicate that the color is as it is on the image */
+ if (asis) {
+ for (k = 0, kk = (COLOR_WIDTH - COLOR_HEIGHT - 3 - 48) / 2 + COLOR_HEIGHT + 3; k < 48; k++, kk++) {
+ for (j = 0, jj = COLOR_HEIGHT / 2 - 7; j < 14; j++, jj++) {
+ if (asis_pic[j][k] == '*') {
+ data[jj * rs + kk * 3 + 0] = 255;
+ data[jj * rs + kk * 3 + 1] = 0;
+ data[jj * rs + kk * 3 + 2] = 0;
+ }
+ }
+ }
+ }
+
return pixbuf;
}