From e685859a30560e076db4de003fba4e4500ade2c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bert=20M=C3=BCnnich?= Date: Sun, 6 Apr 2014 22:47:42 +0200 Subject: Use a checkerboard background for alpha layer; fixes issue #138 --- image.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'image.c') diff --git a/image.c b/image.c index 3eedf52..e62a69f 100644 --- a/image.c +++ b/image.c @@ -18,7 +18,6 @@ #define _POSIX_C_SOURCE 200112L #define _IMAGE_CONFIG -#define _RENDER_CONFIG #include #include @@ -80,8 +79,8 @@ void img_init(img_t *img, win_t *win) img->zoom = MIN(img->zoom, zoom_max); img->checkpan = false; img->dirty = false; - img->aa = RENDER_ANTI_ALIAS; - img->alpha = !RENDER_WHITE_ALPHA; + img->aa = ANTI_ALIAS; + img->alpha = ALPHA_LAYER; img->multi.cap = img->multi.cnt = 0; img->multi.animate = false; img->multi.length = img->multi.repeat = 0; @@ -497,13 +496,26 @@ void img_render(img_t *img) imlib_context_set_image(bg); imlib_image_set_has_alpha(0); - if (img->alpha) + if (img->alpha) { + int i, c, r; + DATA32 col[2] = { 0xFF666666, 0xFF999999 }; + DATA32 * data = imlib_image_get_data(); + + for (r = 0; r < dh; r++) { + i = r * dw; + if (r == 0 || r == 8) { + for (c = 0; c < dw; c++) + data[i++] = col[!(c & 8) ^ !r]; + } else { + memcpy(&data[i], &data[(r & 8) * dw], dw * sizeof(data[0])); + } + } + imlib_image_put_back_data(data); + } else { c = win->fullscreen ? win->fscol : win->bgcol; - else - c = win->white; - imlib_context_set_color(c >> 16 & 0xFF, c >> 8 & 0xFF, c & 0xFF, 0xFF); - imlib_image_fill_rectangle(0, 0, dw, dh); - + imlib_context_set_color(c >> 16 & 0xFF, c >> 8 & 0xFF, c & 0xFF, 0xFF); + imlib_image_fill_rectangle(0, 0, dw, dh); + } imlib_blend_image_onto_image(img->im, 0, sx, sy, sw, sh, 0, 0, dw, dh); imlib_context_set_color_modifier(NULL); imlib_render_image_on_drawable(dx, dy); -- cgit v1.2.3