17dd7cddfSDavid du Colombier typedef struct Rawimage Rawimage; 27dd7cddfSDavid du Colombier 37dd7cddfSDavid du Colombier struct Rawimage 47dd7cddfSDavid du Colombier { 57dd7cddfSDavid du Colombier Rectangle r; 67dd7cddfSDavid du Colombier uchar *cmap; 77dd7cddfSDavid du Colombier int cmaplen; 87dd7cddfSDavid du Colombier int nchans; 959cc4ca5SDavid du Colombier uchar *chans[4]; 107dd7cddfSDavid du Colombier int chandesc; 117dd7cddfSDavid du Colombier int chanlen; 127dd7cddfSDavid du Colombier 137dd7cddfSDavid du Colombier int fields; /* defined by format */ 147dd7cddfSDavid du Colombier int gifflags; /* gif only; graphics control extension flag word */ 157dd7cddfSDavid du Colombier int gifdelay; /* gif only; graphics control extension delay in cs */ 167dd7cddfSDavid du Colombier int giftrindex; /* gif only; graphics control extension transparency index */ 177dd7cddfSDavid du Colombier int gifloopcount; /* number of times to loop in animation; 0 means forever */ 187dd7cddfSDavid du Colombier }; 197dd7cddfSDavid du Colombier 207dd7cddfSDavid du Colombier enum 217dd7cddfSDavid du Colombier { 227dd7cddfSDavid du Colombier /* Channel descriptors */ 237dd7cddfSDavid du Colombier CRGB = 0, /* three channels, no map */ 247dd7cddfSDavid du Colombier CYCbCr = 1, /* three channels, no map, level-shifted 601 color space */ 257dd7cddfSDavid du Colombier CY = 2, /* one channel, luminance */ 267dd7cddfSDavid du Colombier CRGB1 = 3, /* one channel, map present */ 277dd7cddfSDavid du Colombier CRGBV = 4, /* one channel, map is RGBV, understood */ 287dd7cddfSDavid du Colombier CRGB24 = 5, /* one channel in correct data order for loadimage(RGB24) */ 2959cc4ca5SDavid du Colombier CRGBA32 = 6, /* one channel in correct data order for loadimage(RGBA32) */ 3059cc4ca5SDavid du Colombier CYA16 = 7, /* one channel in correct data order for loadimage(Grey8+Alpha8) */ 3159cc4ca5SDavid du Colombier CRGBVA16= 8, /* one channel in correct data order for loadimage(CMAP8+Alpha8) */ 327dd7cddfSDavid du Colombier 337dd7cddfSDavid du Colombier /* GIF flags */ 347dd7cddfSDavid du Colombier TRANSP = 1, 357dd7cddfSDavid du Colombier INPUT = 2, 367dd7cddfSDavid du Colombier DISPMASK = 7<<2 377dd7cddfSDavid du Colombier }; 387dd7cddfSDavid du Colombier 3980ee5cbfSDavid du Colombier 4080ee5cbfSDavid du Colombier enum{ /* PNG flags */ 4180ee5cbfSDavid du Colombier II_GAMMA = 1 << 0, 4280ee5cbfSDavid du Colombier II_COMMENT = 1 << 1, 4380ee5cbfSDavid du Colombier }; 4480ee5cbfSDavid du Colombier 4580ee5cbfSDavid du Colombier typedef struct ImageInfo { 4680ee5cbfSDavid du Colombier ulong fields_set; 4780ee5cbfSDavid du Colombier double gamma; 4880ee5cbfSDavid du Colombier char *comment; 4980ee5cbfSDavid du Colombier } ImageInfo; 5080ee5cbfSDavid du Colombier 5180ee5cbfSDavid du Colombier 527dd7cddfSDavid du Colombier Rawimage** readjpg(int, int); 537dd7cddfSDavid du Colombier Rawimage** Breadjpg(Biobuf *b, int); 54*9a747e4fSDavid du Colombier Rawimage** readpng(int, int); 55*9a747e4fSDavid du Colombier Rawimage** Breadpng(Biobuf *b, int); 567dd7cddfSDavid du Colombier Rawimage** readgif(int, int); 577dd7cddfSDavid du Colombier Rawimage** readpixmap(int, int); 587dd7cddfSDavid du Colombier Rawimage* torgbv(Rawimage*, int); 597dd7cddfSDavid du Colombier Rawimage* totruecolor(Rawimage*, int); 607dd7cddfSDavid du Colombier int writerawimage(int, Rawimage*); 617dd7cddfSDavid du Colombier void* _remaperror(char*, ...); 627dd7cddfSDavid du Colombier 637dd7cddfSDavid du Colombier typedef struct Memimage Memimage; /* avoid necessity to include memdraw.h */ 647dd7cddfSDavid du Colombier 657dd7cddfSDavid du Colombier char* startgif(Biobuf*, Image*, int); 667dd7cddfSDavid du Colombier char* writegif(Biobuf*, Image*, char*, int, int); 677dd7cddfSDavid du Colombier void endgif(Biobuf*); 687dd7cddfSDavid du Colombier char* memstartgif(Biobuf*, Memimage*, int); 697dd7cddfSDavid du Colombier char* memwritegif(Biobuf*, Memimage*, char*, int, int); 707dd7cddfSDavid du Colombier void memendgif(Biobuf*); 717dd7cddfSDavid du Colombier Image* onechan(Image*); 727dd7cddfSDavid du Colombier Memimage* memonechan(Memimage*); 737dd7cddfSDavid du Colombier 747dd7cddfSDavid du Colombier char* writeppm(Biobuf*, Image*, char*); 757dd7cddfSDavid du Colombier char* memwriteppm(Biobuf*, Memimage*, char*); 767dd7cddfSDavid du Colombier Image* multichan(Image*); 777dd7cddfSDavid du Colombier Memimage* memmultichan(Memimage*); 7880ee5cbfSDavid du Colombier 7980ee5cbfSDavid du Colombier char* memwritepng(Biobuf*, Memimage*, ImageInfo*); 80