From 28994509cc11ac6a5443054dfae1fedfb69039bc Mon Sep 17 00:00:00 2001 From: rsc Date: Wed, 21 Apr 2004 22:19:33 +0000 Subject: Why not? --- src/cmd/jpg/imagefile.h | 82 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/cmd/jpg/imagefile.h (limited to 'src/cmd/jpg/imagefile.h') diff --git a/src/cmd/jpg/imagefile.h b/src/cmd/jpg/imagefile.h new file mode 100644 index 00000000..592c5a2e --- /dev/null +++ b/src/cmd/jpg/imagefile.h @@ -0,0 +1,82 @@ +typedef struct Rawimage Rawimage; + +struct Rawimage +{ + Rectangle r; + uchar *cmap; + int cmaplen; + int nchans; + uchar *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 { + ulong fields_set; + double gamma; + char *comment; +} ImageInfo; + + +Rawimage** readjpg(int, int); +Rawimage** Breadjpg(Biobuf *b, int); +Rawimage** readpng(int, int); +Rawimage** Breadpng(Biobuf *b, int); +Rawimage** readgif(int, int); +Rawimage** readpixmap(int, int); +Rawimage* torgbv(Rawimage*, int); +Rawimage* totruecolor(Rawimage*, int); +int writerawimage(int, Rawimage*); +void* _remaperror(char*, ...); + +#ifndef _MEMDRAW_H_ +typedef struct Memimage Memimage; /* avoid necessity to include memdraw.h */ +#endif + +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*); +char* memwriteppm(Biobuf*, Memimage*, char*); +Image* multichan(Image*); +Memimage* memmultichan(Memimage*); + +char* memwritepng(Biobuf*, Memimage*, ImageInfo*); +extern int drawlog2[]; -- cgit v1.2.3