/* * ppmimg.c - Convert a PPM image * * Written 2011 by Werner Almesberger * Copyright 2011 Werner Almesberger * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. */ #include #include #include #include "ppm.h" #include "ubb-vga.h" char *img_name; static void convert(void **f, int xres, int yres, uint8_t *ppm) { int x, y; uint8_t *p; uint8_t v, last = 0; for (y = 0; y != yres; y++) { p = f[y]; for (x = 0; x != xres; x++) { v = ccube_map(ppm[0], ppm[1], ppm[2]); if (x & 1) { *p++ = last | v; } else { last = v << 4; } ppm += 3; } } } void ppmimg(void **f, int xres, int yres) { uint8_t *ppm; int xr = 0, yr = 0; ppm = load_ppm(img_name, &xr, &yr); if (xr != xres || yr != yres) { fprintf(stderr, "image is %dx%d, display is %dx%d\n", xr, yr, xres, yres); exit(1); } convert(f, xres, yres, ppm); free(ppm); }