lel

farbfeld image viewer
git clone git://git.2f30.org/lel
Log | Files | Refs | README | LICENSE

commit d5f736e3365aebd860212276645acb0d3ecf0397
parent 65db024af95f0a902567907dbeb3628c819f9baf
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Tue, 17 Nov 2015 21:40:25 +0100

code-style improvements, update TODO

Diffstat:
MTODO | 1+
Mlel.1 | 2+-
Mlel.c | 91++++++++++++++++++++++++++++++++++++++++---------------------------------------
3 files changed, 48 insertions(+), 46 deletions(-)

diff --git a/TODO b/TODO @@ -9,6 +9,7 @@ [ ] use XPutPixel for byte-order safety ? [ ] improve README. [ ] write man page. + [ ] convert to mandoc. [ ] lel.1 [ ] lel-open.1 [?] for pictures which use an alpha mask use a checked pattern, similar to: diff --git a/lel.1 b/lel.1 @@ -4,6 +4,6 @@ lel \- simple X11 image viewer .SH SYNOPSIS .B lel .SH DESCRIPTION -View an "imagefile" image. +View an image in the farbfeld format. .SH BUGS Please report them! diff --git a/lel.c b/lel.c @@ -1,14 +1,15 @@ /* See LICENSE file for copyright and license details. */ +#include <arpa/inet.h> + +#include <errno.h> #include <unistd.h> +#include <signal.h> #include <stdarg.h> #include <stdint.h> -#include <stdlib.h> #include <stdio.h> +#include <stdlib.h> #include <string.h> -#include <errno.h> -#include <signal.h> #include <time.h> -#include <arpa/inet.h> #include <X11/Xlib.h> #include <X11/Xutil.h> @@ -70,11 +71,11 @@ die(const char *fmt, ...) vfprintf(stderr, fmt, ap); va_end(ap); - if(fmt[0] && fmt[strlen(fmt)-1] == ':') { + if (fmt[0] && fmt[strlen(fmt) - 1] == ':') { fputc(' ', stderr); perror(NULL); } - exit(EXIT_FAILURE); + exit(1); } static void @@ -103,15 +104,15 @@ ff_open(struct img *img) if (fread(hdr, 1, strlen(HEADER_FORMAT), img->fp) != strlen(HEADER_FORMAT)) return -1; - if(memcmp(hdr, "farbfeld", 8)) + if (memcmp(hdr, "farbfeld", 8)) return -1; img->width = ntohl((hdr[8] << 0) | (hdr[9] << 8) | (hdr[10] << 16) | (hdr[11] << 24)); img->height = ntohl((hdr[12] << 0) | (hdr[13] << 8) | (hdr[14] << 16) | (hdr[15] << 24)); - if(img->width <= 0 || img->height <= 0) + if (img->width <= 0 || img->height <= 0) return -1; - if(!(img->buf = malloc(img->width * img->height * 4))) + if (!(img->buf = malloc(img->width * img->height * 4))) die("malloc:"); return 0; @@ -127,15 +128,15 @@ ff_read(struct img *img) return 0; row_len = img->width * strlen("RRGGBBAA"); - if(!(row = malloc(row_len))) + if (!(row = malloc(row_len))) return -1; - for(off = 0, i = 0; i < img->height; ++i) { - if(fread(row, 1, (size_t)row_len, img->fp) != (size_t)row_len) { + for (off = 0, i = 0; i < img->height; ++i) { + if (fread(row, 1, (size_t)row_len, img->fp) != (size_t)row_len) { free(row); die("unexpected EOF or row-skew at %d\n", i); } - for(j = 0; j < row_len / 2; j += 4, off += 4) { + for (j = 0; j < row_len / 2; j += 4, off += 4) { img->buf[off] = row[j]; img->buf[off + 1] = row[j + 1]; img->buf[off + 2] = row[j + 2]; @@ -164,8 +165,8 @@ normalsize(char *newbuf) { unsigned int x, y, soff = 0, doff = 0; - for(y = 0; y < cimg->height; y++) { - for(x = 0; x < cimg->width; x++, soff += 4, doff += 4) { + for (y = 0; y < cimg->height; y++) { + for (x = 0; x < cimg->width; x++, soff += 4, doff += 4) { newbuf[doff+0] = cimg->buf[soff+2]; newbuf[doff+1] = cimg->buf[soff+1]; newbuf[doff+2] = cimg->buf[soff+0]; @@ -178,15 +179,15 @@ normalsize(char *newbuf) static void loadimg(void) { - if(ff_open(cimg)) + if (ff_open(cimg)) die("can't open image (invalid format?)\n"); - if(ff_read(cimg)) + if (ff_read(cimg)) die("can't read image\n"); - if(!wflag) + if (!wflag) reqwinwidth = cimg->width; - if(!hflag) + if (!hflag) reqwinheight = cimg->height; - if(!tflag) + if (!tflag) wintitle = cimg->filename; } @@ -238,11 +239,11 @@ scale(unsigned int width, unsigned int height, unsigned int bytesperline, jdy = bytesperline / 4 - width; dx = (cimg->width << 10) / width; - for(y = 0; y < height; y++) { + for (y = 0; y < height; y++) { bufx = cimg->width / width; ibuf = &cimg->buf[y * cimg->height / height * cimg->width * 4]; - for(x = 0; x < width; x++) { + for (x = 0; x < width; x++) { a = (ibuf[(bufx >> 10)*4+3]) / 255.0f; *newbuf++ = (ibuf[(bufx >> 10)*4+2] * a) + (bg.blue * (1 - a)); *newbuf++ = (ibuf[(bufx >> 10)*4+1] * a) + (bg.green * (1 - a)); @@ -260,13 +261,13 @@ ximage(unsigned int newwidth, unsigned int newheight) int depth; /* destroy previous image */ - if(ximg) { + if (ximg) { XDestroyImage(ximg); ximg = NULL; } depth = DefaultDepth(dpy, screen); - if(depth >= 24) { - if(xpix) + if (depth >= 24) { + if (xpix) XFreePixmap(dpy, xpix); xpix = XCreatePixmap(dpy, win, winwidth, winheight, depth); ximg = XCreateImage(dpy, CopyFromParent, depth, ZPixmap, 0, @@ -287,7 +288,7 @@ scaleview(void) ximage(winwidth, winheight); break; case FULL_ASPECT: - if(winwidth * cimg->height > winheight * cimg->width) + if (winwidth * cimg->height > winheight * cimg->width) ximage(cimg->width * winheight / cimg->height, winheight); else ximage(winwidth, cimg->height * winwidth / cimg->width); @@ -305,7 +306,7 @@ draw(void) { int xoffset = 0, yoffset = 0; - if(viewmode != FULL_STRETCH) { + if (viewmode != FULL_STRETCH) { /* center vertical, horizontal */ xoffset = (winwidth - ximg->width) / 2; yoffset = (winheight - ximg->height) / 2; @@ -325,18 +326,18 @@ draw(void) static void update(void) { - if(!(cimg->state & LOADED)) + if (!(cimg->state & LOADED)) return; - if(!(cimg->state & SCALED)) + if (!(cimg->state & SCALED)) scaleview(); - if(!(cimg->state & DRAWN)) + if (!(cimg->state & DRAWN)) draw(); } static void setview(int mode) { - if(viewmode == mode) + if (viewmode == mode) return; viewmode = mode; cimg->state &= ~(DRAWN | SCALED); @@ -355,7 +356,7 @@ pan(int x, int y) static void inczoom(float f) { - if((cimg->view.zoomfact + f) <= 0) + if ((cimg->view.zoomfact + f) <= 0) return; cimg->view.zoomfact += f; cimg->state &= ~(DRAWN | SCALED); @@ -365,7 +366,7 @@ inczoom(float f) static void zoom(float f) { - if(f == cimg->view.zoomfact) + if (f == cimg->view.zoomfact) return; cimg->view.zoomfact = f; cimg->state &= ~(DRAWN | SCALED); @@ -485,7 +486,7 @@ handleevent(XEvent *ev) } break; case ConfigureNotify: - if(winwidth != ev->xconfigure.width || winheight != ev->xconfigure.height) { + if (winwidth != ev->xconfigure.width || winheight != ev->xconfigure.height) { winwidth = ev->xconfigure.width; winheight = ev->xconfigure.height; cimg->state &= ~(SCALED); @@ -509,7 +510,7 @@ setup(void) { XClassHint class = { APP_NAME, APP_NAME }; - if(!(dpy = XOpenDisplay(NULL))) + if (!(dpy = XOpenDisplay(NULL))) die("can't open X display\n"); xfd = ConnectionNumber(dpy); screen = DefaultScreen(dpy); @@ -519,7 +520,7 @@ setup(void) CopyFromParent, 0, NULL); gc = XCreateGC(dpy, win, 0, NULL); cmap = DefaultColormap(dpy, screen); - if(!XAllocNamedColor(dpy, cmap, bgcolor, &bg, &bg)) + if (!XAllocNamedColor(dpy, cmap, bgcolor, &bg, &bg)) die("cannot allocate color\n"); XStoreName(dpy, win, wintitle); XSelectInput(dpy, win, StructureNotifyMask | ExposureMask | KeyPressMask | @@ -534,7 +535,7 @@ run(void) { XEvent ev; - while(running && !XNextEvent(dpy, &ev)) + while (running && !XNextEvent(dpy, &ev)) handleevent(&ev); } @@ -552,7 +553,7 @@ main(int argc, char *argv[]) { break; case 'h': hflag = 1; - if(!(reqwinheight = atoi(EARGF(usage())))) + if (!(reqwinheight = atoi(EARGF(usage())))) usage(); break; case 't': @@ -561,7 +562,7 @@ main(int argc, char *argv[]) { break; case 'w': wflag = 1; - if(!(reqwinwidth = atoi(EARGF(usage())))) + if (!(reqwinwidth = atoi(EARGF(usage())))) usage(); break; case 'x': @@ -575,7 +576,7 @@ main(int argc, char *argv[]) { break; } ARGEND; - if(argc == 0) { + if (!argc) { imgs = calloc(1, sizeof(*imgs)); if (!imgs) die("calloc:"); @@ -585,9 +586,9 @@ main(int argc, char *argv[]) { imgs[0].view.zoomfact = 1.0; } else { imgs = calloc(argc, sizeof(*imgs)); - if(!imgs) + if (!imgs) die("calloc:"); - for(i = 0, j = 0; j < argc; j++) { + for (i = 0, j = 0; j < argc; j++) { fp = fopen(argv[j], "rb"); if (!fp) { fprintf(stderr, "can't open %s: %s\n", argv[j], @@ -599,8 +600,8 @@ main(int argc, char *argv[]) { imgs[i].view.zoomfact = 1.0; i++; } - if (i == 0) - return EXIT_FAILURE; + if (!i) + return 1; nimgs = i; } cimg = imgs; @@ -609,5 +610,5 @@ main(int argc, char *argv[]) { setup(); run(); - return EXIT_SUCCESS; + return 0; }