aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/jpg/imagefile.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/jpg/imagefile.h')
-rw-r--r--src/cmd/jpg/imagefile.h82
1 files changed, 82 insertions, 0 deletions
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[];