87 lines
2.5 KiB
C
87 lines
2.5 KiB
C
typedef struct Rawimage Rawimage;
|
|
|
|
struct Rawimage
|
|
{
|
|
Rectangle r;
|
|
unsigned char *cmap;
|
|
int cmaplen;
|
|
int nchans;
|
|
unsigned char *chans[4];
|
|
int chandesc;
|
|
int chanlen;
|
|
|
|
int fields; /* defined by format */
|
|
int gifflags; /* gif only; graphics control extension flag word */
|
|
int gifdelay; /* gif only; graphics control extension delay in cs */
|
|
int giftrindex; /* gif only; graphics control extension transparency index */
|
|
int gifloopcount; /* number of times to loop in animation; 0 means forever */
|
|
};
|
|
|
|
enum
|
|
{
|
|
/* Channel descriptors */
|
|
CRGB = 0, /* three channels, no map */
|
|
CYCbCr = 1, /* three channels, no map, level-shifted 601 color space */
|
|
CY = 2, /* one channel, luminance */
|
|
CRGB1 = 3, /* one channel, map present */
|
|
CRGBV = 4, /* one channel, map is RGBV, understood */
|
|
CRGB24 = 5, /* one channel in correct data order for loadimage(RGB24) */
|
|
CRGBA32 = 6, /* one channel in correct data order for loadimage(RGBA32) */
|
|
CYA16 = 7, /* one channel in correct data order for loadimage(Grey8+Alpha8) */
|
|
CRGBVA16= 8, /* one channel in correct data order for loadimage(CMAP8+Alpha8) */
|
|
|
|
/* GIF flags */
|
|
TRANSP = 1,
|
|
INPUT = 2,
|
|
DISPMASK = 7<<2
|
|
};
|
|
|
|
|
|
enum{ /* PNG flags */
|
|
II_GAMMA = 1 << 0,
|
|
II_COMMENT = 1 << 1,
|
|
};
|
|
|
|
typedef struct ImageInfo {
|
|
uint32_t fields_set;
|
|
double gamma;
|
|
char *comment;
|
|
} ImageInfo;
|
|
|
|
|
|
Rawimage** readjpg(int, int);
|
|
Rawimage** Breadjpg(Biobuf*, int);
|
|
Rawimage** readpng(int, int);
|
|
Rawimage** Breadpng(Biobuf*, int);
|
|
Rawimage** readtif(int, int);
|
|
Rawimage** Breadtif(Biobuf*, int);
|
|
Rawimage** readgif(int, int, int);
|
|
Rawimage** readpixmap(int, int);
|
|
Rawimage* torgbv(Rawimage*, int);
|
|
Rawimage* totruecolor(Rawimage*, int);
|
|
int writerawimage(int, Rawimage*);
|
|
void* _remaperror(char*, ...);
|
|
|
|
typedef struct Memimage Memimage; /* avoid necessity to include memdraw.h */
|
|
|
|
char* startgif(Biobuf*, Image*, int);
|
|
char* writegif(Biobuf*, Image*, char*, int, int);
|
|
void endgif(Biobuf*);
|
|
char* memstartgif(Biobuf*, Memimage*, int);
|
|
char* memwritegif(Biobuf*, Memimage*, char*, int, int);
|
|
void memendgif(Biobuf*);
|
|
Image* onechan(Image*);
|
|
Memimage* memonechan(Memimage*);
|
|
|
|
char* writeppm(Biobuf*, Image*, char*, int);
|
|
char* memwriteppm(Biobuf*, Memimage*, char*, int);
|
|
char* writejpg(Biobuf*, Image*, char*, int, int);
|
|
char* memwritejpg(Biobuf*, Memimage*, char*, int, int);
|
|
Image* multichan(Image*);
|
|
Memimage* memmultichan(Memimage*);
|
|
|
|
char* memwritepng(Biobuf*, Memimage*, ImageInfo*);
|
|
|
|
char* writetif(Biobuf*, Image*, char*, int, int);
|
|
char* memwritetif(Biobuf*, Memimage*, char*, int, int);
|