home *** CD-ROM | disk | FTP | other *** search
/ RISC DISC 3 / RISC_DISC_3.iso / resources / etexts / gems / gemsii / realpixels / resolu.c < prev   
C/C++ Source or Header  |  1991-09-22  |  1KB  |  58 lines

  1. #ifndef lint
  2. static char SCCSid[] = "@(#)resolu.c 1.1 9/22/90 LBL";
  3. #endif
  4.  
  5. /*
  6.  * Read and write image resolutions.
  7.  */
  8.  
  9. #include <stdio.h>
  10.  
  11. #include "color.h"
  12.  
  13.  
  14. fputresolu(ord, xres, yres, fp)        /* put x and y resolution */
  15. register int  ord;
  16. int  xres, yres;
  17. FILE  *fp;
  18. {
  19.     if (ord&YMAJOR)
  20.         fprintf(fp, "%cY %d %cX %d\n",
  21.                 ord&YDECR ? '-' : '+', yres,
  22.                 ord&XDECR ? '-' : '+', xres);
  23.     else
  24.         fprintf(fp, "%cX %d %cY %d\n",
  25.                 ord&XDECR ? '-' : '+', xres,
  26.                 ord&YDECR ? '-' : '+', yres);
  27. }
  28.  
  29.  
  30. fgetresolu(xrp, yrp, fp)        /* get x and y resolution */
  31. int  *xrp, *yrp;
  32. FILE  *fp;
  33. {
  34.     char  buf[64], *xndx, *yndx;
  35.     register char  *cp;
  36.     register int  ord;
  37.  
  38.     if (fgets(buf, sizeof(buf), fp) == NULL)
  39.         return(-1);
  40.     xndx = yndx = NULL;
  41.     for (cp = buf+1; *cp; cp++)
  42.         if (*cp == 'X')
  43.             xndx = cp;
  44.         else if (*cp == 'Y')
  45.             yndx = cp;
  46.     if (xndx == NULL || yndx == NULL)
  47.         return(-1);
  48.     ord = 0;
  49.     if (xndx > yndx) ord |= YMAJOR;
  50.     if (xndx[-1] == '-') ord |= XDECR;
  51.     if (yndx[-1] == '-') ord |= YDECR;
  52.     if ((*xrp = atoi(xndx+1)) <= 0)
  53.         return(-1);
  54.     if ((*yrp = atoi(yndx+1)) <= 0)
  55.         return(-1);
  56.     return(ord);
  57. }
  58.