]> 4ch.mooo.com Git - 16.git/blobdiff - 16/PCX_LIB/PCX_EXAM.C
clear
[16.git] / 16 / PCX_LIB / PCX_EXAM.C
diff --git a/16/PCX_LIB/PCX_EXAM.C b/16/PCX_LIB/PCX_EXAM.C
deleted file mode 100755 (executable)
index 556f0f0..0000000
+++ /dev/null
@@ -1,339 +0,0 @@
-/*\r
- *************************************************************************\r
- *\r
- *  PCX_EXAM.C - PCX_LIB File Header Examination Utility\r
- *\r
- *  Version:    1.00B\r
- *\r
- *  History:    91/02/14 - Created\r
- *              91/04/01 - Release 1.00A\r
- *              91/04/06 - Release 1.00B\r
- *\r
- *  Compiler:   Microsoft C V6.0\r
- *\r
- *  Author:     Ian Ashdown, P.Eng.\r
- *              byHeart Software\r
- *              620 Ballantree Road\r
- *              West Vancouver, B.C.\r
- *              Canada V7S 1W3\r
- *              Tel. (604) 922-6148\r
- *              Fax. (604) 987-7621\r
- *\r
- *  Copyright:  Public Domain\r
- *\r
- *************************************************************************\r
- */\r
-\f\r
-/*\r
- *************************************************************************\r
- *\r
- *  PORTABILITY NOTES\r
- *\r
- *  1.  When porting this program to other processors, remember that words\r
- *      are stored by 80x86-based machines in the big-endian format.  That\r
- *      is, the eight least significant bits (lower byte) are stored\r
- *      first, followed by the eight most significant bits (upper byte).\r
- *      If PCX-format files are transferred to little-endian machines\r
- *      (such as those based on 680x0 and Z8000 processors), the order of\r
- *      bytes within each word will have to be reversed before they can \r
- *      be interpreted.  (This applies to the file header only, since the\r
- *      encoded image data and optional 256-color palette are stored as\r
- *      bytes.)\r
- *\r
- ************************************************************************* \r
- */\r
-\f\r
-/*      INCLUDE FILES                                                   */\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include "pcx_int.h"\r
-\f\r
-/*      FORWARD REFERENCES                                              */\r
-\f\r
-/*      GLOBALS                                                         */\r
-\f\r
-/*      PUBLIC FUNCTIONS                                                */\r
-\r
-/*\r
- *************************************************************************\r
- *\r
- *  MAIN - Executive Function\r
- *\r
- *  Purpose:    To read and display a PCX-format image file header.\r
- *\r
- *  Setup:      int main\r
- *              (\r
- *                int argc,\r
- *                char **argv\r
- *              )\r
- *\r
- *  Where:      argc is the number of command-line arguments.\r
- *              argv is a pointer to an array of command-line argument\r
- *                strings.\r
- *\r
- *  Return:     0 if successful; otherwise 2.\r
- *\r
- *  Result:     The file header information is written to "stdout".\r
- *\r
- *  Note:       Usage is:\r
- *\r
- *                PCX_EXAM filename\r
- *\r
- *              where "filename" is the name of a PCX-format image file.\r
- *\r
- *************************************************************************\r
- */\r
-\r
-int main\r
-(\r
-  int argc,\r
-  char **argv\r
-)\r
-{\r
-  char *vers;                   /* Version number string pointer        */\r
-  char *pal_type;               /* Palette type string pointer          */\r
-  int range;                    /* Palette range                        */\r
-  int indicator;                /* Extended palette indicator byte      */\r
-  BOOL status = TRUE;           /* Return status                        */\r
-  BOOL ep_flag = FALSE;         /* Extended palette flag                */\r
-  FILE *fp;                     /* File pointer                         */\r
-  PCX_HDR *hdrp;                /* File header structure pointer        */\r
-  PCX_PAL *ext_palettep;        /* Extended palette pointer             */\r
-\r
-  /* Display program title                                              */\r
-\r
-  puts("\nPCX_EXAM - PCX Image File Examination Utility\n");\r
-\r
-  /* Check for filename                                                 */\r
-\r
-  if (argc < 2)\r
-  {\r
-    /* Display usage information                                        */\r
-\r
-    fputs("  Synopsis:  This public domain utility displays inf", stderr);\r
-    fputs("ormation contained in the\n             header of a ", stderr);\r
-    fputs("Paintbrush (R) PCX-format image file.\n\n  Usage:   ", stderr);\r
-    fputs("  PCX_EXAM filename\n\n  Example:   PCX_EXAM picture", stderr);\r
-    fputs(".pcx\n", stderr);\r
-\r
-    return (2);\r
-  }\r
-\r
-  /* Allocate a PCX file header buffer                                  */\r
-\r
-  if ((hdrp = (PCX_HDR *) malloc(sizeof(PCX_HDR))) == (PCX_HDR *) NULL)\r
-  {\r
-    fputs("ERROR: out of memory\n", stderr);\r
-    return (2);\r
-  }\r
-\r
-  /* Open the PCX image file in binary mode                             */\r
-\r
-  if ((fp = fopen(argv[1], "rb")) == (FILE *) NULL)\r
-  {\r
-    fprintf(stderr, "ERROR: cannot open file %s\n", argv[1]);\r
-\r
-    free(hdrp);         /* Free the file header memory                  */\r
-\r
-    return (2);\r
-  }\r
-\r
-  /* Read the file header                                               */\r
-\r
-  if (status == TRUE)\r
-    if (fseek(fp, 0L, SEEK_SET) != 0)\r
-    {\r
-      fprintf(stderr, "ERROR: cannot read file %s\n", argv[1]);\r
-      status = FALSE;\r
-    }\r
-\r
-  if (status == TRUE)\r
-    if (fread(hdrp, sizeof(PCX_HDR), 1, fp) != 1)\r
-    {\r
-      fprintf(stderr, "ERROR: cannot read file %s\n", argv[1]);\r
-      status = FALSE;\r
-    }\r
-\r
-  /* Validate the PCX file format                                       */\r
-\r
-  if (status == TRUE)\r
-    if ((hdrp->pcx_id != 0x0a) || (hdrp->encoding != 1))\r
-    {\r
-      fprintf(stderr, "ERROR: file %s not valid PCX format\n", argv[1]);\r
-      status = FALSE;\r
-    }\r
-\r
-  /* Determine the version number                                       */\r
-\r
-  switch (hdrp->version)\r
-  {\r
-    case 0:\r
-\r
-      vers = "PC Paintbrush 2.5";\r
-\r
-      break;\r
-\r
-    case 2:\r
-\r
-      vers = "PC Paintbrush 2.8 (with palette information)";\r
-\r
-      break;\r
-\r
-    case 3:\r
-\r
-      vers = "PC Paintbrush 2.8 (without palette information)";\r
-\r
-      break;\r
-\r
-    case 4:\r
-\r
-      vers = "PC Paintbrush for Windows (not 3.0)";\r
-\r
-      break;\r
-\r
-    case 5:\r
-\r
-      vers = "PC Paintbrush 3.0 and greater";\r
-\r
-      break;\r
-\r
-    default:\r
-\r
-      vers = "Unknown version";\r
-\r
-      break;\r
-  }\r
-\r
-  /* Display the PCX file header information                            */\r
-\r
-  printf("PCX filename: %s\n", argv[1]);\r
-  printf("Version: %s\n", vers);\r
-  printf("Encoding: %s\n", hdrp->encoding == 1 ? "Run length" :\r
-      "Unknown");\r
-  printf("%d bits per pixel\n", hdrp->bppixel);\r
-  printf("Image from (%d, %d) to (%d, %d) pixels.\n", hdrp->xul,\r
-      hdrp->yul, hdrp->xlr, hdrp->ylr);\r
-  printf("Created on a device with %d x %d dpi resolution\n",\r
-      hdrp->horz_res, hdrp->vert_res);\r
-  printf("Number of color planes: %d\n", hdrp->nplanes);\r
-  printf("Bytes per color plane scan line: %d\n", hdrp->bppscan);\r
-\r
-  switch (hdrp->palette_type & PCX_PAL_MASK)\r
-  {\r
-    case 1:\r
-\r
-      pal_type = "color or B&W";\r
-\r
-      break;\r
-\r
-    case 2:\r
-\r
-      pal_type = "grayscale";\r
-\r
-      break;\r
-\r
-    default:\r
-\r
-      pal_type = "unknown";\r
-\r
-      break;\r
-  }\r
-\r
-  printf("Palette type: %s\n", pal_type);\r
-\r
-  /* Check for extended (256-color) palette                             */\r
-\r
-  if (hdrp->version == 5)\r
-  {\r
-    /* Check for valid palette indicator byte                           */\r
-\r
-    if (fseek(fp, -769L, SEEK_END) != 0)\r
-    {\r
-      fprintf(stderr, "ERROR: cannot read file %s\n", argv[1]);\r
-      status = FALSE;\r
-    }\r
-\r
-    if (status == TRUE)\r
-    {\r
-      if ((indicator = getc(fp)) == PCX_EPAL_FLAG)\r
-      {\r
-        /* Allocate an extended palette buffer                          */\r
-\r
-        if ((ext_palettep = (PCX_PAL *) calloc(sizeof(PCX_PAL),\r
-            PCX_EPAL_SIZE)) == (PCX_PAL *) NULL)\r
-        {\r
-          fputs("ERROR: out of memory\n", stderr);\r
-          status = FALSE;\r
-        }\r
-\r
-        /* Read the extended palette                                    */\r
-\r
-        if (status == TRUE)\r
-        {\r
-          if (fread(ext_palettep, sizeof(PCX_PAL), PCX_EPAL_SIZE, fp) !=\r
-              PCX_EPAL_SIZE)\r
-          {\r
-            free(ext_palettep);         /* Free extended palette buffer */\r
-            status = FALSE;\r
-          }\r
-        }\r
-\r
-        ep_flag = TRUE;         /* Indicate extended palette exists     */\r
-      }\r
-    }\r
-  }\r
-\r
-  if (status == TRUE)\r
-    if (ep_flag == TRUE)\r
-    {\r
-      /* Display extended (256-color) palette                           */\r
-\r
-      puts("Extended 256-color palette:\n");\r
-\r
-      puts("COLOR   RED     GREEN   BLUE\n");\r
-\r
-      for (range = 0; range < PCX_EPAL_SIZE; range++)\r
-        printf(" %03d      %2x      %2x     %2x\n", range,\r
-            ext_palettep[range].red, ext_palettep[range].green,\r
-            ext_palettep[range].blue);\r
-\r
-      putchar('\n');\r
-\r
-      free(ext_palettep);       /* Free the extended palette            */\r
-    }\r
-    else\r
-    {\r
-      /* Display file header palette                                    */\r
-\r
-      puts("File header color palette:\n");\r
-\r
-      printf("RED ...   ");\r
-\r
-      for (range = 0; range < PCX_PAL_SIZE; range++)\r
-        printf("%2x  ", hdrp->palette[range].red);\r
-\r
-      printf("\nGREEN ... ");\r
-\r
-      for (range = 0; range < PCX_PAL_SIZE; range++)\r
-        printf("%2x  ", hdrp->palette[range].green);\r
-\r
-      printf("\nBLUE ...  ");\r
-\r
-      for (range = 0; range < PCX_PAL_SIZE; range++)\r
-        printf("%2x  ", hdrp->palette[range].blue);\r
-\r
-      putchar('\n');\r
-    }\r
-\r
-  if (fclose(fp) == EOF)        /* Close the file                       */\r
-  {\r
-    fprintf(stderr, "Error: cannot close file %s\n", argv[1]);\r
-    status = FALSE;\r
-  }\r
-\r
-  free (hdrp);          /* Free the file header buffer                  */\r
-\r
-  return (0);\r
-}\r
-\r