home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / printer / dvi2pcl.lha / dim_to_dots.c < prev    next >
C/C++ Source or Header  |  1992-11-25  |  2KB  |  75 lines

  1. /* $Log:    dim_to_dots.c,v $
  2.  * Revision 0.8  92/11/23  19:46:39  19:46:39  bt (Bo Thide')
  3.  * Fixed resolution bug. Portable downloading. Added/changed options. PJXL color support
  4.  * 
  5.  * Revision 0.7  92/11/13  02:41:23  02:41:23  bt (Bo Thide')
  6.  * More bug fixes and improvements. Support for PaintJet XL
  7.  * 
  8.  * Revision 0.6  92/11/10  21:47:40  21:47:40  bt (Bo Thide')
  9.  * Bug fixes. Added -R option. Better font handling.
  10.  * 
  11.  * Revision 0.5  92/11/09  16:25:26  16:25:26  bt (Bo Thide')
  12.  * Rewrite of dospecial.c. Extended \special support
  13.  * 
  14.  * Revision 0.4  92/11/08  02:45:42  02:45:42  bt (Bo Thide')
  15.  * Changed to portable bit manipulations. Replaced strrstr for non-POSIX compliant C. Fixed numerous bugs. Added support for more \special's.
  16.  * 
  17.  * Revision 0.3  92/08/24  12:45:34  12:45:34  bt (Bo Thide')
  18.  * Fixed 8 bit (dc font) support.
  19.  * 
  20.  * Revision 0.2  92/08/23  17:28:55  17:28:55  bt (Bo Thide')
  21.  * Source cleaned up.  Changed certain function calls.  Removed globals.
  22.  * 
  23.  * Revision 0.1  92/08/22  23:58:47  23:58:47  bt (Bo Thide')
  24.  * First Release.
  25.  *  */
  26.  
  27. #include <stdio.h>
  28. #include "globals.h"
  29. #include "macros.h"
  30.  
  31. static char rcsid[] = "$Header: dim_to_dots.c,v 0.8 92/11/23 19:46:39 bt Exp $";
  32.  
  33. /*
  34.  * This routine converts a string which contains a floating number terminated
  35.  * by a dimension into the proper number of dots for resolution dots/inch.
  36.  */
  37. long dim_to_dots(data, resolution)
  38. char    *data;
  39. short    resolution;
  40.     double    val;
  41.     long    ival;
  42.     char    valstr[16];
  43.     char    dim;
  44.     char    dimstr[4];
  45.  
  46.     strcpy(valstr, data);
  47.     sscanf(valstr,"%lf %c",&val,&dim);
  48.  
  49.     switch(dim)
  50.     { 
  51.     case 'i':
  52.         ival = round(resolution*val);
  53.         break;
  54.     case 'c':
  55.         ival = round((resolution*val)/2.54);
  56.         break;
  57.     case 'm':
  58.         ival = round((resolution*val)/25.4);
  59.         break;
  60.     case 'p':
  61.         ival = round((resolution*val)/72.27);
  62.         break;
  63.     case 'd':
  64.         ival = round(val);
  65.         break;
  66.     default:
  67.         sscanf(data,"%*f%3s",dimstr);
  68.         fprintf(stderr,"Unknown dimension '%3s' in options or \\special\n",dimstr);
  69.         ival = resolution;
  70.         break;
  71.     }
  72.     return(ival);
  73. }
  74.