home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0040 - 0049 / ibm0040-0049 / ibm0040.tar / ibm0040 / IMGPROC.ZIP / C6PCX.ZIP / PCX.H < prev   
Encoding:
C/C++ Source or Header  |  1990-10-11  |  4.4 KB  |  154 lines

  1. /*  
  2. Copyright 1990 by John Wiley & Sons, Inc.
  3.           All Rights Reserved.
  4. */
  5. /****************************************/
  6. /*           PCX Header File            */
  7. /*    for PCX file access functions     */
  8. /*       written in Turbo C 2.0         */
  9. /*                by                    */
  10. /*         Craig A. Lindley             */
  11. /*                                      */
  12. /*   Vers: 1.0  Last Update: 12/08/89   */
  13. /****************************************/
  14.  
  15. #define MAXSCREENWIDTH      640
  16. #define MAXSCREENHEIGHT     480
  17. #define BITSPERBYTE           8
  18. #define MAXPLANES             4
  19. #define MAXBYTESPERSCAN     320
  20. #define MAXPALETTECOLORS     16
  21. #define MAX256PALETTECOLORS 256
  22.  
  23. /*
  24. Function Control Equates.
  25. Controls the DisplayImageInBuf function.
  26. */
  27. #define INITVGALOADPALETTE  TRUE
  28. #define NOVGAINIT           FALSE
  29. #define WAITFORKEY          TRUE
  30. #define NOWAITFORKEY        FALSE
  31.  
  32.  
  33. /* Error Bit Definitions */
  34. #ifndef _CompletionCode_
  35. #define _CompletionCode_
  36. typedef int CompletionCode;
  37. #endif
  38.  
  39. /* Error bit definitions from PCX code */
  40. #define NoError           0
  41. #define EBadParms        -1
  42. #define EFileNotFound    -2
  43. #define EReadFileHdr     -3
  44. #define ENotPCXFile      -4
  45. #define ECorrupt         -5
  46. #define EWrtFileHdr      -6
  47. #define EWrtOutFile      -7
  48. #define EWrtScanLine     -8
  49. #define EPCCFile         -9
  50. #define EGraphics       -10
  51. #define ENoMemory       -11
  52. #define EWrtExtPal      -12
  53.  
  54. /* Misc Error bit definitions */
  55. #define EKernelSize         -21
  56.  
  57.  
  58.  
  59.  
  60.  
  61. /* PCX File Structures and Defines */
  62.  
  63. #define PCXHdrTag        10    /* tag in valid PCX file */
  64. #define MaxRepCount      63    /* max # of repeat bytes */
  65. #define PCX256ColorTag   12    /* tag for extended palette in PCX file */
  66.  
  67. /*
  68. NOTE: compiler must generate BYTE aligned code for this structure to
  69. contain only three bytes. Otherwise if WORD aligned the stucture will
  70. contain four bytes and prohibit program operation.
  71. */
  72.  
  73. typedef struct
  74. {
  75.    BYTE Red;                   /* RGB components of color */
  76.    BYTE Green;                 /* register */
  77.    BYTE Blue;
  78. } ColorRegister;
  79.  
  80.  
  81. struct PCXFileHeader
  82. {
  83.    BYTE     Header;            /* marks file as PCX file */
  84.    BYTE     Version;           /* 0 = version 2.5 */
  85.                                /* 2 = 2.8 with palette info */
  86.                                /* 3 = no palette info 2.8 or 3.0 */
  87.                                /* 5 = 3.0 with palette info */
  88.    BYTE     Encode;            /* File encoding mode */
  89.    BYTE     BitPerPix;         /* Bits per pixel */
  90.    unsigned X1;                /* Picture dimensions inclusive */
  91.    unsigned Y1;
  92.    unsigned X2;
  93.    unsigned Y2;
  94.    unsigned Hres;              /* Graphics adapter Horiz    resolution */
  95.    unsigned Vres;              /* Graphics adapter Vertical resolution */
  96. };
  97.  
  98. struct PCXInfo
  99. {
  100.    BYTE     Vmode;             /* Ignor should always be zero */
  101.    BYTE     NumOfPlanes;       /* Number of bit planes */
  102.    unsigned BytesPerLine;      /* Bytes Per Line in picture */
  103.    BYTE     unused[60];        /* fills out header to 128 bytes */
  104. };
  105.  
  106.  
  107. struct PCX_File
  108. {
  109.    struct PCXFileHeader PCXHeader;
  110.    ColorRegister        Palette[MAXPALETTECOLORS]; /* Max size of 48 bytes */
  111.    struct PCXInfo       Info;
  112. };
  113.  
  114.  
  115. /* Extended palette data structure for 256 color PCX files */
  116.  
  117. struct ExtendedPalette
  118. {
  119.    BYTE ExtendedPalette;
  120.    ColorRegister Palette[MAX256PALETTECOLORS]; /* Max size of 768 bytes */
  121. };
  122.  
  123.  
  124. /* Function Declarations */
  125. void DisplayPCXFile (char *FileName,
  126.                      int Verbose);     /* display a PCX file */
  127.  
  128. void WritePCXFile (char *FileName, unsigned BitsPerPixel,
  129.            unsigned MaxX, unsigned MaxY,
  130.            unsigned Planes, unsigned BytesPerLine);
  131.  
  132. unsigned InstallPCXFilePalette (void);  /* Install palette from PCX file */
  133.  
  134. CompletionCode ReadPCXFileToBuf (char *FileName, BYTE huge * * BufferPtr);
  135.  
  136. CompletionCode WritePCXFileFromBuf (char *FileName, BYTE huge *ImageMemory);
  137.  
  138. void DisplayImageInBuf(BYTE huge *Image, unsigned SetMode, unsigned Pause);
  139.  
  140. CompletionCode ReadRawImageFileToBuf(char *FileName,
  141.                      unsigned ImageWidth,
  142.                      unsigned ImageHeight,
  143.                      BYTE huge * *BufferPtr);
  144.  
  145. CompletionCode WriteRawImageFileFromBuf(char *FileName,
  146.                     unsigned ImageWidth,
  147.                     unsigned ImageHeight,
  148.                     unsigned Transpose,
  149.                     BYTE huge *ImageBuffer);
  150.  
  151.  
  152.  
  153.  
  154.