ftp.nice.ch/pub/next/graphics/viewer/pCD.0.34.N.bs.tar.gz#/pCD0.3.4/Photo_CD.subproj/hpcdtoppm_04.h

This is hpcdtoppm_04.h in view mode; [Download] [Up]

/* hpcdtoppm (Hadmut's pcdtoppm) v0.4
*  Copyright (c) 1992, 1993 by Hadmut Danisch (danisch@ira.uka.de).
*  Permission to use and distribute this software and its
*  documentation for noncommercial use 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. It is not allowed to sell this software in 
*  any way. This software is not public domain.
*/


#include "config.h"
#include <stdio.h>
#include <string.h>
#ifdef __NeXT__
#   include <stdlib.h>
#else
#   include <malloc.h>
#endif
#include <sys/types.h>
#include <ctype.h>



/* Format definitions */

#define BaseW ((dim)768)
#define BaseH ((dim)512)

#define SECSIZE 0x800


#define SeHead   2
#define L_Head   (1+SeHead)

#define SeBase16 18
#define L_Base16 (1+SeBase16)

#define SeBase4  72
#define L_Base4  (1+SeBase4)

#define SeBase   288
#define L_Base   (1+SeBase)


#define neutrLum 128
#define neutrCh1 156
#define neutrCh2 137





/* Structures and definitions */
struct _implane
 {dim  mwidth,mheight,
       iwidth,iheight;
  uBYTE *im,*mp;
 };
typedef struct _implane implane;

#define nullplane ((implane *) 0)

enum   TURNS  { T_UNSPEC,T_NONE,T_RIGHT,T_LEFT,T_AUTO };
enum   SIZES  { S_UNSPEC,S_Base16,S_Base4,S_Base,S_4Base,S_16Base,S_Over,S_Contact };
enum   OUTFOR { O_UNSPEC,O_PPM,O_PGM,O_YCC,O_PS,O_EPS,O_PSG,O_EPSG };
enum   CORR   { C_UNSPEC,C_LINEAR,C_DARK,C_BRIGHT,C_NeXT };

enum   ERRORS { E_NONE,E_READ,E_WRITE,E_INTERN,E_ARG,E_OPT,E_MEM,E_HUFF,
                E_SEQ,E_SEQ1,E_SEQ2,E_SEQ3,E_SEQ4,E_SEQ5,E_SEQ6,E_SEQ7,E_POS,E_IMP,E_OVSKIP,
                E_TAUTO,E_TCANT };


/* Macros */
#ifdef DEBUG

extern long bufpos;
#define SEEK(x) { if (fseek(fin,((x) * SECSIZE),0)) error(E_READ);\
                  fprintf(stderr,"S-Position %x\n",ftell(fin)); }
#define RPRINT  {fprintf(stderr,"R-Position %x\n",ftell(fin));}
#define READBUF   (bufpos=ftell(fin),fread(sbuffer,sizeof(sbuffer),1,fin))

#else

#define SEEK(x) { if (fseek(fin,((x) * SECSIZE),0)) error(E_READ);}
#define RPRINT
#define READBUF   fread(sbuffer,sizeof(sbuffer),1,fin)

#endif



#define melde(x) {if (do_melde) fprintf(stderr,x);}


#define EREADBUF {if(READBUF < 1) error(E_READ);}

#define SKIP(n)  { if (fseek(fin,(n),1)) error(E_READ);}
#define SKIPr(n) { if (fseek(fin,(n),1)) return(E_READ);}


#define TRIF(x,u,o,a,b,c) ((x)<(u)? (a) : ( (x)>(o)?(c):(b)  ))
#define xNORM(x) x=TRIF(x,0,255,0,x,255)
#define NORM(x) { if(x<0) x=0; else if (x>255) x=255;}












/* main.c */
extern void         close_all();
extern FILE         *fin,*fout;
extern char         *ppmname,*pcdname;
extern int          do_diff,do_info,do_sharp,do_overskip,monochrome;
extern int          do_melde,do_rep,do_crop;
extern int          flvert,flhori;
extern uBYTE        sbuffer[SECSIZE];
extern enum TURNS   turn;
extern enum SIZES   size;
extern enum OUTFOR  outfor;
extern enum CORR    corrmode;

extern float        PAPER_LEFT,PAPER_BOTTOM,PAPER_WIDTH,PAPER_HEIGHT;

/* error.c */
extern void         error();


/* color.c */
extern void         sharpit();
extern void         colconvert();

/* tools.c */
extern long         Skip4Base();
extern void         clear();
extern void         halve();
extern void         interpolate();
extern void         planealloc();
extern void         pastein();
extern void         cropit();

/* format.c */
extern void         decode();
extern void         readhqt();
extern enum ERRORS  readplain();

/* output.c */
extern void         druckeid();
extern void         writepicture();

/* ppm.c */
extern void         write_pgm();
extern void         write_ppm();

/* postscr.c */
extern void         write_epsgrey();
extern void         write_psgrey();
extern void         write_epsrgb();
extern void         write_psrgb();

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.