per-line scrolling test
[mdlife] / tools / pngdump / image.h
1 #ifndef IMAGE_H_
2 #define IMAGE_H_
3
4 #include <stdio.h>
5
6 struct cmapent {
7         unsigned char r, g, b;
8 };
9
10 struct image {
11         int width, height;
12         int bpp;
13         int nchan;
14         int scansz;     /* scanline size in bytes */
15         int pitch;      /* bytes from one scanline to the next */
16         int cmap_ncolors;
17         struct cmapent cmap[256];
18         unsigned char *pixels;
19 };
20
21 int alloc_image(struct image *img, int x, int y, int bpp);
22 int load_image(struct image *img, const char *fname);
23 int save_image(struct image *img, const char *fname);
24 int save_image_file(struct image *img, FILE *fp);
25
26 int cmp_image(struct image *a, struct image *b);
27
28 void blit(struct image *src, int sx, int sy, int w, int h, struct image *dst, int dx, int dy);
29 void overlay_key(struct image *src, unsigned int key, struct image *dst);
30
31 unsigned int get_pixel(struct image *img, int x, int y);
32 unsigned int get_pixel_rgb(struct image *img, int x, int y, unsigned int *rgb);
33 void put_pixel(struct image *img, int x, int y, unsigned int pix);
34
35 int quantize_image(struct image *img, int maxcol);
36 int gen_shades(struct image *img, int levels, int maxcol, int *shade_lut);
37
38 #endif  /* IMAGE_H_ */