lel

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

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

initial farbfeld support, kudos to z3bra!

Diffstat:
Mlel.c | 30+++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/lel.c b/lel.c @@ -18,7 +18,7 @@ char *argv0; #define APP_NAME "lel" -#define HEADER_FORMAT "imagefile########" +#define HEADER_FORMAT "farbfeld########" /* Image status flags. */ enum { NONE = 0, LOADED = 1, SCALED = 2, DRAWN = 4 }; @@ -93,7 +93,7 @@ usage(void) } static int -if_open(struct img *img) +ff_open(struct img *img) { uint8_t hdr[17]; @@ -103,11 +103,11 @@ if_open(struct img *img) if (fread(hdr, 1, strlen(HEADER_FORMAT), img->fp) != strlen(HEADER_FORMAT)) return -1; - if(memcmp(hdr, "imagefile", 9)) + if(memcmp(hdr, "farbfeld", 8)) return -1; - img->width = ntohl((hdr[9] << 0) | (hdr[10] << 8) | (hdr[11] << 16) | (hdr[12] << 24)); - img->height = ntohl((hdr[13] << 0) | (hdr[14] << 8) | (hdr[15] << 16) | (hdr[16] << 24)); + 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) return -1; @@ -118,15 +118,15 @@ if_open(struct img *img) } static int -if_read(struct img *img) +ff_read(struct img *img) { int i, j, off, row_len; - uint8_t *row; + uint16_t *row; if (img->state & LOADED) return 0; - row_len = img->width * strlen("RGBA"); + row_len = img->width * strlen("RRGGBBAA"); if(!(row = malloc(row_len))) return -1; @@ -135,8 +135,8 @@ if_read(struct img *img) free(row); die("unexpected EOF or row-skew at %d\n", i); } - for(j = 0; j < row_len; j += 4, off += 4) { - img->buf[off] = row[j]; + 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]; img->buf[off + 3] = row[j + 3]; @@ -150,7 +150,7 @@ if_read(struct img *img) } static void -if_close(struct img *img) +ff_close(struct img *img) { img->state &= ~LOADED; rewind(img->fp); @@ -178,9 +178,9 @@ normalsize(char *newbuf) static void loadimg(void) { - if(if_open(cimg)) + if(ff_open(cimg)) die("can't open image (invalid format?)\n"); - if(if_read(cimg)) + if(ff_read(cimg)) die("can't read image\n"); if(!wflag) reqwinwidth = cimg->width; @@ -208,7 +208,7 @@ nextimg(void) if (cimg >= &imgs[nimgs]) cimg = &imgs[0]; if (tmp != cimg) { - if_close(tmp); + ff_close(tmp); reloadimg(); } } @@ -222,7 +222,7 @@ previmg(void) if (cimg < &imgs[0]) cimg = &imgs[nimgs - 1]; if (tmp != cimg) { - if_close(tmp); + ff_close(tmp); reloadimg(); } }