summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-video/mpeg-tools/files/1.5b/libpnmrw.h')
-rw-r--r--media-video/mpeg-tools/files/1.5b/libpnmrw.h194
1 files changed, 194 insertions, 0 deletions
diff --git a/media-video/mpeg-tools/files/1.5b/libpnmrw.h b/media-video/mpeg-tools/files/1.5b/libpnmrw.h
new file mode 100644
index 000000000000..efa89b790dec
--- /dev/null
+++ b/media-video/mpeg-tools/files/1.5b/libpnmrw.h
@@ -0,0 +1,194 @@
+/* pnmrw.h - header file for PBM/PGM/PPM read/write library
+**
+** Copyright (C) 1988, 1989, 1991 by Jef Poskanzer.
+**
+** Permission to use, copy, modify, and distribute this software and its
+** documentation for any purpose and without fee is hereby granted, provided
+** that the above copyright notice appear in all copies and that both that
+** copyright notice and this permission notice appear in supporting
+** documentation. This software is provided "as is" without express or
+** implied warranty.
+*/
+
+#ifndef _PNMRW_H_
+#define _PNMRW_H_
+
+/* CONFIGURE: On some systems, malloc.h doesn't declare these, so we have
+** to do it. On other systems, for example HP/UX, it declares them
+** incompatibly. And some systems, for example Dynix, don't have a
+** malloc.h at all. A sad situation. If you have compilation problems
+** that point here, feel free to tweak or remove these declarations.
+*/
+#include <malloc.h>
+/* End of configurable definitions. */
+
+
+/* Definitions to make PBMPLUS work with either ANSI C or C Classic. */
+
+#if __STDC__
+#define ARGS(alist) alist
+#else /*__STDC__*/
+#define ARGS(alist) ()
+#define const
+#endif /*__STDC__*/
+
+
+/* Types. */
+
+typedef unsigned char bit;
+#define PBM_WHITE 0
+#define PBM_BLACK 1
+#define PBM_FORMAT_TYPE(f) ((f) == PBM_FORMAT || (f) == RPBM_FORMAT ? PBM_TYPE : -1)
+
+typedef unsigned char gray;
+#define PGM_MAXMAXVAL 255
+#define PGM_FORMAT_TYPE(f) ((f) == PGM_FORMAT || (f) == RPGM_FORMAT ? PGM_TYPE : PBM_FORMAT_TYPE(f))
+
+typedef gray pixval;
+#define PPM_MAXMAXVAL PGM_MAXMAXVAL
+typedef struct
+ {
+ pixval r, g, b;
+ } pixel;
+#define PPM_GETR(p) ((p).r)
+#define PPM_GETG(p) ((p).g)
+#define PPM_GETB(p) ((p).b)
+#define PPM_ASSIGN(p,red,grn,blu) do { (p).r = (red); (p).g = (grn); (p).b = (blu); } while ( 0 )
+#define PPM_EQUAL(p,q) ( (p).r == (q).r && (p).g == (q).g && (p).b == (q).b )
+#define PPM_FORMAT_TYPE(f) ((f) == PPM_FORMAT || (f) == RPPM_FORMAT ? PPM_TYPE : PGM_FORMAT_TYPE(f))
+
+typedef pixel xel;
+typedef pixval xelval;
+#define PNM_MAXMAXVAL PPM_MAXMAXVAL
+#define PNM_GET1(x) PPM_GETB(x)
+#define PNM_ASSIGN1(x,v) PPM_ASSIGN(x,0,0,v)
+#define PNM_EQUAL(x,y) PPM_EQUAL(x,y)
+#define PNM_FORMAT_TYPE(f) PPM_FORMAT_TYPE(f)
+
+
+/* Magic constants. */
+
+#define PBM_MAGIC1 'P'
+#define PBM_MAGIC2 '1'
+#define RPBM_MAGIC2 '4'
+#define PBM_FORMAT (PBM_MAGIC1 * 256 + PBM_MAGIC2)
+#define RPBM_FORMAT (PBM_MAGIC1 * 256 + RPBM_MAGIC2)
+#define PBM_TYPE PBM_FORMAT
+
+#define PGM_MAGIC1 'P'
+#define PGM_MAGIC2 '2'
+#define RPGM_MAGIC2 '5'
+#define PGM_FORMAT (PGM_MAGIC1 * 256 + PGM_MAGIC2)
+#define RPGM_FORMAT (PGM_MAGIC1 * 256 + RPGM_MAGIC2)
+#define PGM_TYPE PGM_FORMAT
+
+#define PPM_MAGIC1 'P'
+#define PPM_MAGIC2 '3'
+#define RPPM_MAGIC2 '6'
+#define PPM_FORMAT (PPM_MAGIC1 * 256 + PPM_MAGIC2)
+#define RPPM_FORMAT (PPM_MAGIC1 * 256 + RPPM_MAGIC2)
+#define PPM_TYPE PPM_FORMAT
+
+
+/* Color scaling macro -- to make writing ppmtowhatever easier. */
+
+#define PPM_DEPTH(newp,p,oldmaxval,newmaxval) \
+ PPM_ASSIGN( (newp), \
+ ( (int) PPM_GETR(p) * (newmaxval) + (oldmaxval) / 2 ) / (oldmaxval), \
+ ( (int) PPM_GETG(p) * (newmaxval) + (oldmaxval) / 2 ) / (oldmaxval), \
+ ( (int) PPM_GETB(p) * (newmaxval) + (oldmaxval) / 2 ) / (oldmaxval) )
+
+
+/* Luminance macro. */
+
+#define PPM_LUMIN(p) ( 0.299 * PPM_GETR(p) + 0.587 * PPM_GETG(p) + 0.114 * PPM_GETB(p) )
+
+
+/* Declarations of pnmrw routines. */
+
+void pnm_init2 ARGS(( char* pn ));
+
+char** pm_allocarray ARGS(( int cols, int rows, int size ));
+#define pnm_allocarray( cols, rows ) ((xel**) pm_allocarray( cols, rows, sizeof(xel) ))
+char* pm_allocrow ARGS(( int cols, int size ));
+#define pnm_allocrow( cols ) ((xel*) pm_allocrow( cols, sizeof(xel) ))
+void pm_freearray ARGS(( char** its, int rows ));
+#define pnm_freearray( xels, rows ) pm_freearray( (char**) xels, rows )
+void pm_freerow ARGS(( char* itrow ));
+#define pnm_freerow( xelrow ) pm_freerow( (char*) xelrow )
+
+xel** pnm_readpnm ARGS(( FILE* file, int* colsP, int* rowsP, xelval* maxvalP, int* formatP ));
+int pnm_readpnminit ARGS(( FILE* file, int* colsP, int* rowsP, xelval* maxvalP, int* formatP ));
+int pnm_readpnmrow ARGS(( FILE* file, xel* xelrow, int cols, xelval maxval, int format ));
+
+int pnm_writepnm ARGS(( FILE* file, xel** xels, int cols, int rows, xelval maxval, int format, int forceplain ));
+int pnm_writepnminit ARGS(( FILE* file, int cols, int rows, xelval maxval, int format, int forceplain ));
+int pnm_writepnmrow ARGS(( FILE* file, xel* xelrow, int cols, xelval maxval, int format, int forceplain ));
+
+extern xelval pnm_pbmmaxval;
+/* This is the maxval used when a PNM program reads a PBM file. Normally
+** it is 1; however, for some programs, a larger value gives better results
+*/
+
+
+/* File open/close that handles "-" as stdin and checks errors. */
+
+FILE* pm_openr ARGS(( char* name ));
+FILE* pm_openw ARGS(( char* name ));
+int pm_closer ARGS(( FILE* f ));
+int pm_closew ARGS(( FILE* f ));
+
+
+/* Colormap stuff. */
+
+typedef struct colorhist_item* colorhist_vector;
+struct colorhist_item
+ {
+ pixel color;
+ int value;
+ };
+
+typedef struct colorhist_list_item* colorhist_list;
+struct colorhist_list_item
+ {
+ struct colorhist_item ch;
+ colorhist_list next;
+ };
+
+typedef colorhist_list* colorhash_table;
+
+colorhist_vector ppm_computecolorhist ARGS(( pixel** pixels, int cols, int rows, int maxcolors, int* colorsP ));
+/* Returns a colorhist *colorsP long (with space allocated for maxcolors. */
+
+void ppm_addtocolorhist ARGS(( colorhist_vector chv, int* colorsP, int maxcolors, pixel* colorP, int value, int position ));
+
+void ppm_freecolorhist ARGS(( colorhist_vector chv ));
+
+colorhash_table ppm_computecolorhash ARGS(( pixel** pixels, int cols, int rows, int maxcolors, int* colorsP ));
+
+int
+ppm_lookupcolor ARGS(( colorhash_table cht, pixel* colorP ));
+
+colorhist_vector ppm_colorhashtocolorhist ARGS(( colorhash_table cht, int maxcolors ));
+colorhash_table ppm_colorhisttocolorhash ARGS(( colorhist_vector chv, int colors ));
+
+int ppm_addtocolorhash ARGS(( colorhash_table cht, pixel* colorP, int value ));
+/* Returns -1 on failure. */
+
+colorhash_table ppm_alloccolorhash ARGS(( void ));
+
+void ppm_freecolorhash ARGS(( colorhash_table cht ));
+
+/* Other function declarations */
+void pnm_promoteformat ARGS(( xel** xels, int cols, int rows, xelval maxval,
+int format, xelval newmaxval, int newformat ));
+void pnm_promoteformatrow ARGS(( xel* xelrow, int cols, xelval maxval,
+int format, xelval newmaxval, int newformat ));
+
+xel pnm_backgroundxel ARGS(( xel** xels, int cols, int rows, xelval maxval, int format ));
+xel pnm_backgroundxelrow ARGS(( xel* xelrow, int cols, xelval maxval, int format ));
+xel pnm_whitexel ARGS(( xelval maxval, int format ));
+xel pnm_blackxel ARGS(( xelval maxval, int format ));
+void pnm_invertxel ARGS(( xel* xP, xelval maxval, int format ));
+
+#endif /*_PNMRW_H_*/