Introduction
Introduction Statistics Contact Development Disclaimer Help
add alpha blending... - lel - Farbfeld image viewer
git clone git://git.codemadness.org/lel
Log
Files
Refs
README
LICENSE
---
commit ab9cbe037f3c83444be66af5531f2f4bc61cb0c4
parent 77d29cab890dd1623b96d445cf0b898ff8c09df8
Author: Hiltjo Posthuma <[email protected]>
Date: Sat, 2 Aug 2014 23:53:54 +0000
add alpha blending...
... and add configurable background colour.
Diffstat:
M lel.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
---
diff --git a/lel.c b/lel.c
@@ -44,11 +44,14 @@ static struct img *cimg;
static size_t nimgs;
static int viewmode = ASPECT;
static char *wintitle = APP_NAME;
+static char *bgcolor = "#000000";
static XImage *ximg = NULL;
static Drawable xpix = 0;
static Display *dpy = NULL;
+static Colormap cmap;
static Window win;
static GC gc;
+static XColor bg;
static int screen, xfd;
static int running = 1;
static int winwidth = 0, winheight = 0;
@@ -231,6 +234,7 @@ scale(unsigned int width, unsigned int height, unsigned int…
{
unsigned char *ibuf;
unsigned int jdy, dx, bufx, x, y;
+ float a = 0.0f;
jdy = bytesperline / 4 - width;
dx = (cimg->width << 10) / width;
@@ -239,9 +243,10 @@ scale(unsigned int width, unsigned int height, unsigned in…
ibuf = &cimg->buf[y * cimg->height / height * cimg->width * 4];
for(x = 0; x < width; x++) {
- *newbuf++ = (ibuf[(bufx >> 10)*4+2]);
- *newbuf++ = (ibuf[(bufx >> 10)*4+1]);
- *newbuf++ = (ibuf[(bufx >> 10)*4+0]);
+ a = (ibuf[(bufx >> 10)*4+3]) / 255.0f;
+ *newbuf++ = (ibuf[(bufx >> 10)*4+2] * a) + (bg.blue * …
+ *newbuf++ = (ibuf[(bufx >> 10)*4+1] * a) + (bg.green *…
+ *newbuf++ = (ibuf[(bufx >> 10)*4+0] * a) + (bg.red * (…
newbuf++;
bufx += dx;
}
@@ -308,7 +313,7 @@ draw(void)
xoffset -= cimg->view.panxoffset;
yoffset -= cimg->view.panyoffset;
}
- XSetForeground(dpy, gc, BlackPixel(dpy, 0));
+ XSetForeground(dpy, gc, bg.pixel);
XFillRectangle(dpy, xpix, gc, 0, 0, winwidth, winheight);
XPutImage(dpy, xpix, gc, ximg, 0, 0, xoffset, yoffset, ximg->width, xi…
XCopyArea(dpy, xpix, win, gc, 0, 0, winwidth, winheight, 0, 0);
@@ -513,7 +518,9 @@ setup(void)
DefaultDepth(dpy, screen), InputOutput,
CopyFromParent, 0, NULL);
gc = XCreateGC(dpy, win, 0, NULL);
-
+ cmap = DefaultColormap(dpy, screen);
+ if(!XAllocNamedColor(dpy, cmap, bgcolor, &bg, &bg))
+ die("cannot allocate color\n");
XStoreName(dpy, win, wintitle);
XSelectInput(dpy, win, StructureNotifyMask | ExposureMask | KeyPressMa…
ButtonPressMask);
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.