nuclear@0: #include nuclear@0: #include nuclear@0: #include "image.h" nuclear@0: nuclear@0: struct ham_image *load_ham_image(const char *fname) nuclear@0: { nuclear@0: return 0; /* TODO */ nuclear@0: } nuclear@0: nuclear@0: struct ham_image *gen_ham_image(int w, int h, int nbpl) nuclear@0: { nuclear@0: int i, x, y; nuclear@0: struct ham_image *img; nuclear@0: unsigned char *pptr; nuclear@0: unsigned char pixval; nuclear@0: /*static const uint16_t defpal[] = { nuclear@0: 0x000, 0xf00, 0xff0, 0x0f0, 0x0ff, 0x00f, 0xf0f, 0xfff, nuclear@0: 0x444, 0x800, 0x880, 0x080, 0x088, 0x008, 0x808, 0x888 nuclear@0: };*/ nuclear@0: nuclear@0: if(!(img = malloc(sizeof *img))) { nuclear@0: return 0; nuclear@0: } nuclear@0: if(!(img->pixels = calloc(w * h / 8 * nbpl, 1))) { nuclear@0: free(img); nuclear@0: return 0; nuclear@0: } nuclear@0: img->width = w; nuclear@0: img->height = h; nuclear@0: img->chglist = 0; nuclear@0: nuclear@0: img->nbitplanes = nbpl; nuclear@0: /*memcpy(img->palette, defpal, sizeof defpal);*/ nuclear@0: for(i=0; i<16; i++) { nuclear@0: img->palette[i] = i | (i << 4) | (i << 8); nuclear@0: } nuclear@0: nuclear@0: pptr = img->pixels; nuclear@0: for(i=0; i<4; i++) { nuclear@0: pptr = img->pixels + i * w / 8; nuclear@0: for(y=0; y> 1) | ((((x ^ y) >> i) & 1) ? 0x80 : 0); nuclear@0: if((x & 7) == 7) { nuclear@0: *pptr++ = pixval; nuclear@0: pixval = 0; nuclear@0: } nuclear@0: } nuclear@0: pptr += w / 8 * (img->nbitplanes - 1); nuclear@0: } nuclear@0: } nuclear@0: nuclear@0: return img; nuclear@0: }