home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / procssng / ccs / ccs-11.lha / ccs-lib / lib / libpbm.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-03-01  |  1.4 KB  |  75 lines

  1. /*
  2. %    libpbm . c
  3. */
  4.  
  5. #include "pgm.h"
  6.  
  7. #ifdef    PGM_READ_ALL
  8. static bit*    bitrow;
  9.  
  10. pgm_readpgminit(fileP, colsP, rowsP, maxvalP, formatP)
  11. FILE*    fileP;
  12. int    *colsP, *rowsP, *formatP;
  13. gray*    maxvalP;
  14. {
  15. register int    status;
  16.     /* Check magic number */
  17.     *formatP = pbm_readmagicnumber(fileP);
  18.     switch (status=PGM_FORMAT_TYPE(*formatP))    {
  19.         case PGM_TYPE:
  20.         status = pgm_readpgminitrest(fileP, colsP, rowsP, maxvalP);
  21.         break;
  22.         case PBM_TYPE:
  23.         status = 0;
  24.         pbm_readpbminitrest(fileP, colsP, rowsP);
  25.         *maxvalP = 1;
  26.         bitrow = pbm_allocrow(*colsP);
  27.         break;
  28.     default:
  29.         DEBUGMESSAGE("magic number %d - not a pgm file.\n", status);
  30.     }
  31. return    status;
  32. }
  33.  
  34. gray**    pgm_readpgm(fileP, colsP, rowsP, maxvalP)
  35. FILE*    fileP;
  36. int*    colsP;
  37. int*    rowsP;
  38. gray*    maxvalP;
  39. {
  40. gray**    grays=NULL;
  41. int    row, format;
  42.  
  43.     pgm_readpgminit(fileP, colsP, rowsP, maxvalP, &format);
  44.     grays = pgm_allocarray(*colsP, *rowsP);
  45.     for (row=0; row < *rowsP; ++row)
  46.     pgm_readpgmrow(fileP, grays[row], *colsP, *maxvalP, format);
  47. return grays;
  48. }
  49.  
  50. #endif    PGM_READ_ALL
  51.  
  52.  
  53. char**
  54. pm_allocarray(cols, rows, size)
  55. int    cols, rows, size;
  56. {
  57. register char**    its;
  58. register int    i;
  59.  
  60.     its = (char**) nzalloc(rows, sizeof(char*), "pm-alloc**");
  61.     its[0] = (char*) nzalloc(rows * cols, size, "pm_alloc*");
  62.     for (i=1; i < rows; ++i)
  63.     its[i] = &(its[0][i * cols * size]);
  64. return    its;
  65. }
  66.  
  67. void
  68. pm_freearray(its, rows)
  69. char**    its;
  70. int    rows;
  71. {
  72.     free(its[0]);
  73.     free(its);
  74. }
  75.