1: /*
   2:  *
   3:  * Copyright (c) 1984, 1985 Xerox Corp.
   4:  *
   5:  * HISTORY
   6:  * 01-Dec-85  lee at Xerox, WRC
   7:  *	Modified to pass lint.
   8:  *
   9:  *	28-apr-85  ed flint	add conditional code for vax11-c (vms)
  10:  *				now use -s for point size and added -o for
  11:  *				output file
  12:  */
  13: 
  14: #ifdef vax11c
  15: #include stdio
  16: #include ctype
  17: #else
  18: # include <stdio.h>
  19: # include <ctype.h>
  20: # include <sys/file.h>
  21: # include <strings.h>
  22: #endif
  23: 
  24: # include "iptokens.h"
  25: # include "literal.h"
  26: # include "operator.h"
  27: 
  28: /* frame buffer numbers */
  29: # define    F_backgroundfont    1
  30: # define    F_font      2
  31: # define    F_transform     3
  32: 
  33: # define    INCH        720
  34: # define    Top_margin      (10 * INCH)
  35: # define    Left_margin     (INCH * 2)
  36: # define    Left_table      (Left_margin + INCH/2)
  37: 
  38: main(argc, argv)
  39: 
  40: int  argc;
  41: char *argv[];
  42: 
  43: {
  44:     char u_fontname[256];
  45:     char buffer[256];
  46:     char *outputname= 0;
  47:     int ipressfile;
  48:     int point_size = 10;
  49:     int char_spacing;
  50:     int line_spacing;
  51:     int x_pos;
  52:     int y_pos;
  53:     int i;
  54:     int num;
  55:     int prefix = 0;
  56: 
  57:     if (argc < 2)
  58:     {
  59:     fprintf(stderr, "charset: which font?\n");
  60:     exit(1);
  61:     }
  62: 
  63:     for ( i= 1 ; i <= argc ; i++ )
  64:     {
  65:     if ( argv[i][0] == '-' )
  66:         switch(argv[i][1])
  67:         {
  68:         case ('p'):
  69:         case ('P'):
  70:             (void) sscanf(&argv[i][2], "%o", &prefix);
  71:             break;
  72:         case ('o'):
  73:         case ('O'):
  74:             if ( strlen(argv[i]) > 2 )
  75:             outputname= &(argv[i][2]);
  76:             else
  77:             outputname= argv[++i];
  78:             break;
  79:         case ('s'):
  80:         case ('S'):
  81:             point_size= atoi(&(argv[i][2]));
  82:             break;
  83:         }
  84:     else
  85:         break;
  86:     }
  87: 
  88:     (void) strcpy(u_fontname, "Xerox/XC1-1-1/");
  89:     (void) strcat(u_fontname, argv[i]);
  90: 
  91:     /* set spacing parameters */
  92:     line_spacing = (point_size + 2) * 15;
  93:     char_spacing = point_size * 30;
  94: 
  95:     if ( outputname != 0 )
  96:     {
  97: #ifdef vax11c
  98:     if ( (ipressfile= creat(outputname, 0, "rfm=udf")) == -1 )
  99: #else
 100:     if ( (ipressfile= open(outputname, O_WRONLY | O_CREAT, 0666)) == -1 )
 101: #endif
 102:     {
 103:         perror(outputname);
 104:         exit(1);
 105:     }
 106:     }
 107:     else        /* default to stdout */
 108:     {
 109:     ipressfile= 1;
 110:     }
 111: 
 112:     ip_select(ipressfile);
 113: 
 114:     AppendOp(OP_beginBlock);
 115:     AppendOp(OP_beginBody);
 116: 
 117:     /* set up the two fonts: the background and the font in question */
 118:     SetupFont("Xerox/XC1-1-1/Classic", 100., F_backgroundfont);
 119:     SetupFont(u_fontname, point_size * 10., F_font);
 120: 
 121:     /* set frame[2] to a scaling transform that uses 1/10 point */
 122:     /* co-ordiate system */
 123:     AppendRational(353L, 10000000);
 124:     AppendOp(OP_scale);
 125:     AppendInteger((long) F_transform);
 126:     AppendOp(OP_fset);
 127: 
 128:     AppendOp(OP_endBody);   /* end preamble */
 129: 
 130:     AppendOp(OP_beginBody); /* page 1 (and only) */
 131: 
 132:     Fget(F_transform);
 133:     AppendOp(OP_concatt);
 134:     Setfont(F_backgroundfont);
 135:     Setxy((double)Left_margin, (double)Top_margin);
 136:     (void) sprintf(buffer, "Xerox/XC1-1-1/%s at %d point, character set %o (octal)",
 137:     argv[i], point_size, prefix);
 138:     ShowString(buffer);
 139: 
 140:     buffer[0] = '0';
 141:     buffer[1] = '\0';
 142:     for (x_pos = Left_table, i = 0; i < 8;
 143:      x_pos += char_spacing, i++)
 144:     {
 145:     Setxy((double)x_pos, (double)(Top_margin - 2 * line_spacing));
 146:     ShowString(buffer);
 147:     buffer[0] += 1;
 148:     }
 149: 
 150:     for (y_pos = Top_margin - 3 * line_spacing, num = 000; num < 0377;
 151:      y_pos -= line_spacing)
 152:     {
 153:     Setxy((double)Left_margin, (double)y_pos);
 154:     (void) sprintf(buffer, "%03o", num);
 155:     ShowString(buffer);
 156:     Setfont(F_font);
 157: 
 158:     for (x_pos = Left_table, i = 0; i < 8;
 159:          x_pos += char_spacing, i++, num++)
 160:     {
 161:         Setxy((double)x_pos, (double)y_pos);
 162:         if (num != 0377)
 163:         {
 164:         if (prefix > 0)
 165:         {
 166:             (void) sprintf(buffer, "\377%c%c", prefix, num);
 167:             AppendString(buffer);
 168:         }
 169:         else
 170:         {
 171:             buffer[0] = num;
 172:             buffer[1] = '\0';
 173:             AppendString(buffer);
 174:         }
 175:         AppendOp(OP_show);
 176:         }
 177:     }
 178:     Setfont(F_backgroundfont);
 179:     }
 180: 
 181:     /* wrap it up */
 182:     AppendOp(OP_endBody);
 183:     AppendOp(OP_endBlock);
 184: 
 185:     ip_flush();
 186: }

Defined functions

main defined in line 38; never used

Defined macros

F_backgroundfont defined in line 29; used 3 times
F_font defined in line 30; used 2 times
F_transform defined in line 31; used 2 times
INCH defined in line 33; used 3 times
Left_margin defined in line 35; used 3 times
Left_table defined in line 36; used 2 times
Top_margin defined in line 34; used 3 times
Last modified: 1985-12-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1122
Valid CSS Valid XHTML 1.0 Strict