/* $Log: dim_to_dots.c,v $ * Revision 0.8 92/11/23 19:46:39 19:46:39 bt (Bo Thide') * Fixed resolution bug. Portable downloading. Added/changed options. PJXL color support * * Revision 0.7 92/11/13 02:41:23 02:41:23 bt (Bo Thide') * More bug fixes and improvements. Support for PaintJet XL * * Revision 0.6 92/11/10 21:47:40 21:47:40 bt (Bo Thide') * Bug fixes. Added -R option. Better font handling. * * Revision 0.5 92/11/09 16:25:26 16:25:26 bt (Bo Thide') * Rewrite of dospecial.c. Extended \special support * * Revision 0.4 92/11/08 02:45:42 02:45:42 bt (Bo Thide') * Changed to portable bit manipulations. Replaced strrstr for non-POSIX compliant C. Fixed numerous bugs. Added support for more \special's. * * Revision 0.3 92/08/24 12:45:34 12:45:34 bt (Bo Thide') * Fixed 8 bit (dc font) support. * * Revision 0.2 92/08/23 17:28:55 17:28:55 bt (Bo Thide') * Source cleaned up. Changed certain function calls. Removed globals. * * Revision 0.1 92/08/22 23:58:47 23:58:47 bt (Bo Thide') * First Release. * */ #include #include "globals.h" #include "macros.h" static char rcsid[] = "$Header: dim_to_dots.c,v 0.8 92/11/23 19:46:39 bt Exp $"; /* * This routine converts a string which contains a floating number terminated * by a dimension into the proper number of dots for resolution dots/inch. */ long dim_to_dots(data, resolution) char *data; short resolution; { double val; long ival; char valstr[16]; char dim; char dimstr[4]; strcpy(valstr, data); sscanf(valstr,"%lf %c",&val,&dim); switch(dim) { case 'i': ival = round(resolution*val); break; case 'c': ival = round((resolution*val)/2.54); break; case 'm': ival = round((resolution*val)/25.4); break; case 'p': ival = round((resolution*val)/72.27); break; case 'd': ival = round(val); break; default: sscanf(data,"%*f%3s",dimstr); fprintf(stderr,"Unknown dimension '%3s' in options or \\special\n",dimstr); ival = resolution; break; } return(ival); }