7 #include "Dimensions.h"
12 #include "TopTwenty.h"
13 #include "TraceElement.h"
14 #include "Deviation.h"
16 #include "Utilities.h"
19 double atof PROTO((char *));
22 boolish pflag = 0; /* read auxiliary file */
23 boolish eflag = 0; /* scaled EPSF */
24 boolish dflag = 0; /* sort by standard deviation */
25 int iflag = 0; /* sort by identifier (3-way flag) */
26 boolish gflag = 0; /* output suitable for previewer */
27 boolish yflag = 0; /* ignore marks */
28 boolish bflag = 0; /* use a big title box */
29 boolish sflag = 0; /* use a small title box */
30 int mflag = 0; /* max no. of bands displayed (default 20) */
31 boolish tflag = 0; /* ignored threshold specified */
32 boolish cflag = 0; /* colour output */
34 boolish filter; /* true when running as a filter */
36 static floatish WidthInPoints PROTO((char *)); /* forward */
37 static FILE *Fp PROTO((char *, char **, char *, char *)); /* forward */
45 static char *pathName;
46 static char *baseName; /* "basename" is a std C library name (sigh) */
52 floatish xrange = 0.0;
53 floatish yrange = 0.0;
55 floatish auxxrange = 0.0;
56 floatish auxyrange = 0.0;
65 floatish THRESHOLD_PERCENT = DEFAULT_THRESHOLD;
66 int TWENTY = DEFAULT_TWENTY;
73 programname = copystring(Basename(argv[0]));
76 while (argc && argv[0][0] == '-') {
84 epsfwidth = WidthInPoints(*argv + 1);
90 switch( *(*argv + 1) ) {
112 TWENTY = atoi(*argv + 1);
113 if (TWENTY > DEFAULT_TWENTY)
118 THRESHOLD_PERCENT = (floatish) atof(*argv + 1);
119 if (THRESHOLD_PERCENT < 0 || THRESHOLD_PERCENT > 5)
144 pathName = copystring(argv[0]);
145 DropSuffix(pathName, ".hp");
146 baseName = copystring(Basename(pathName));
148 hpfp = Fp(pathName, &hpfile, ".hp", "r");
149 psfp = Fp(baseName, &psfile, ".ps", "w");
151 if (pflag) auxfp = Fp(baseName, &auxfile, ".aux", "r");
156 if (!filter && pflag) GetAuxFile(auxfp);
159 TraceElement(); /* Orders on total, Removes trace elements (tflag) */
161 if (dflag) Deviation(); /* ReOrders on deviation */
163 if (iflag) Identorder(iflag); /* ReOrders on identifier */
165 if (pflag) Reorder(); /* ReOrders on aux file */
167 if (TWENTY) TopTwenty(); /* Selects top twenty (mflag) */
171 areabelow = AreaBelow();
178 auxfp = Fp(baseName, &auxfile, ".aux", "w");
187 typedef enum {POINTS, INCHES, MILLIMETRES} pim;
189 static pim Units PROTO((char *)); /* forward */
197 result = (floatish) atof(wstr);
199 switch (Units(wstr)) {
210 if (result <= 144) /* Minimum of 2in wide ! */
223 i = strlen(wstr) - 2;
225 if (wstr[i] == 'p' && wstr[i+1] == 't') {
227 } else if (wstr[i] == 'i' && wstr[i+1] == 'n') {
229 } else if (wstr[i] == 'm' && wstr[i+1] == 'm') {
237 Fp(rootname, filename, suffix, mode)
238 char* rootname; char** filename; char* suffix; char* mode;
240 *filename = copystring2(rootname, suffix);
242 return(OpenFile(*filename, mode));
247 _stgAssert (filename, linenum)
249 unsigned int linenum;
252 fprintf(stderr, "ASSERTION FAILED: file %s, line %u\n", filename, linenum);