cammy/include/cammy/image.h

87 lines
2.6 KiB
C
Raw Normal View History

2016-05-14 23:40:28 -05:00
#ifndef _CAMMY_IMAGE_H
#define _CAMMY_IMAGE_H
#include <sys/types.h>
#include <cammy/tile.h>
2016-05-17 17:01:57 -05:00
#define CAMMY_IMAGE_Y_COEFFICIENT_R 0.2126
#define CAMMY_IMAGE_Y_COEFFICIENT_G 0.7152
#define CAMMY_IMAGE_Y_COEFFICIENT_B 0.0722
2016-06-07 00:07:58 -05:00
#define CAMMY_IMAGE_CHUNK_SIZE 4096
typedef enum {
CAMMY_IMAGE_NONE,
CAMMY_IMAGE_TILE,
CAMMY_IMAGE_RGB,
CAMMY_IMAGE_RGBA
} cammy_image_format;
typedef struct _cammy_image {
cammy_image_format format;
size_t width,
height;
union {
uint8_t *buf;
cammy_tile *tile;
};
} cammy_image;
cammy_image *cammy_image_open_tile(const char *filename,
size_t width,
size_t height);
void cammy_image_close(cammy_image *image);
int cammy_image_save(cammy_image *image, const char *filename);
2016-05-17 02:23:19 -05:00
void cammy_image_dither(uint8_t *dest,
uint8_t *src,
size_t width,
size_t height,
int depth,
cammy_tile_palette *palette);
void cammy_image_dither_to_tile(cammy_tile *dest,
uint8_t *src,
size_t width,
size_t height,
int depth);
void cammy_image_split_to_tiles(cammy_tile *destr,
cammy_tile *destg,
cammy_tile *destb,
uint8_t *src,
size_t width,
size_t height,
int depth);
2016-05-17 02:23:19 -05:00
void cammy_image_copy_from_tile(uint8_t *dest,
cammy_tile *src,
size_t width,
size_t height,
int depth,
cammy_tile_palette *palette);
2016-05-14 23:40:28 -05:00
void cammy_image_merge_tiles(uint8_t *dest,
cammy_tile *srcr,
cammy_tile *srcg,
cammy_tile *srcb,
size_t width,
size_t height,
int depth);
2016-06-07 00:07:58 -05:00
void cammy_image_tile_copy(cammy_tile *dest,
cammy_tile *src,
size_t x_dest,
size_t y_dest,
size_t x_src,
size_t y_src,
size_t width,
size_t height);
2016-05-14 23:40:28 -05:00
#endif /* _CAMMY_IMAGE_H */