#include "hp2graph.h"
#include "output.h"
/*
* Get page and other dimensions before printing.
*/
double borderheight = BORDER_HEIGHT;
double borderwidth = BORDER_WIDTH;
double borderspace = BORDER_SPACE;
double borderradius = BORDER_RADIUS;
double titlewidth = (BORDER_WIDTH - (2 * BORDER_SPACE));
double titleheight = TITLE_HEIGHT;
double titleradius = TITLE_RADIUS;
double titletextspace = TITLE_TEXT_SPACE;
double linethick = LINE_THICK;
double graphx0 = GRAPH_X0;
double graphy0 = GRAPH_Y0;
double graphheight;
double graphwidth;
/*
* A desperately grim solution.
*/
int fonttab[] = {
/* 20 (' ') = */ 3,
/* 21 ('!') = */ 1,
/* 22 ('"') = */ 1,
/* 23 ('#') = */ 3,
/* 24 ('$') = */ 3,
/* 25 ('%') = */ 3,
/* 26 ('&') = */ 3,
/* 27 (''') = */ 1,
/* 28 ('(') = */ 3,
/* 29 (')') = */ 3,
/* 2a ('*') = */ 2,
/* 2b ('+') = */ 3,
/* 2c (',') = */ 1,
/* 2d ('-') = */ 3,
/* 2e ('.') = */ 1,
/* 2f ('/') = */ 3,
/* 30 ('0') = */ 4,
/* 31 ('1') = */ 4,
/* 32 ('2') = */ 4,
/* 33 ('3') = */ 4,
/* 34 ('4') = */ 4,
/* 35 ('5') = */ 4,
/* 36 ('6') = */ 4,
/* 37 ('7') = */ 4,
/* 38 ('8') = */ 4,
/* 39 ('9') = */ 4,
/* 3a (':') = */ 1,
/* 3b (';') = */ 1,
/* 3c ('<') = */ 3,
/* 3d ('=') = */ 3,
/* 3e ('>') = */ 3,
/* 3f ('?') = */ 2,
/* 40 ('@') = */ 3,
/* 41 ('A') = */ 5,
/* 42 ('B') = */ 5,
/* 43 ('C') = */ 5,
/* 44 ('D') = */ 5,
/* 45 ('E') = */ 5,
/* 46 ('F') = */ 5,
/* 47 ('G') = */ 5,
/* 48 ('H') = */ 5,
/* 49 ('I') = */ 1,
/* 4a ('J') = */ 5,
/* 4b ('K') = */ 5,
/* 4c ('L') = */ 5,
/* 4d ('M') = */ 5,
/* 4e ('N') = */ 5,
/* 4f ('O') = */ 5,
/* 50 ('P') = */ 5,
/* 51 ('Q') = */ 5,
/* 52 ('R') = */ 5,
/* 53 ('S') = */ 5,
/* 54 ('T') = */ 5,
/* 55 ('U') = */ 5,
/* 56 ('V') = */ 5,
/* 57 ('W') = */ 5,
/* 58 ('X') = */ 5,
/* 59 ('Y') = */ 5,
/* 5a ('Z') = */ 5,
/* 5b ('[') = */ 2,
/* 5c ('\') = */ 3,
/* 5d (']') = */ 2,
/* 5e ('^') = */ 1,
/* 5f ('_') = */ 3,
/* 60 ('`') = */ 1,
/* 61 ('a') = */ 3,
/* 62 ('b') = */ 3,
/* 63 ('c') = */ 3,
/* 64 ('d') = */ 3,
/* 65 ('e') = */ 3,
/* 66 ('f') = */ 3,
/* 67 ('g') = */ 3,
/* 68 ('h') = */ 3,
/* 69 ('i') = */ 1,
/* 6a ('j') = */ 2,
/* 6b ('k') = */ 3,
/* 6c ('l') = */ 1,
/* 6d ('m') = */ 5,
/* 6e ('n') = */ 3,
/* 6f ('o') = */ 3,
/* 70 ('p') = */ 3,
/* 71 ('q') = */ 3,
/* 72 ('r') = */ 2,
/* 73 ('s') = */ 3,
/* 74 ('t') = */ 2,
/* 75 ('u') = */ 3,
/* 76 ('v') = */ 3,
/* 77 ('w') = */ 3,
/* 78 ('x') = */ 3,
/* 79 ('y') = */ 3,
/* 7a ('z') = */ 3,
/* 7b ('{') = */ 2,
/* 7c ('|') = */ 1,
/* 7d ('}') = */ 2,
/* 7e ('~') = */ 2
};
/*
* What size is a string (in points)?
*/
#define FUDGE 1.7
double stringSize(char *s)
{
double r;
for (r = 0; *s; s++)
if(*s>=0x20 && *s <= 0x7e)
r += fonttab[(*s) - 0x20];
return (FUDGE * r);
}
/*
* Calculate the width of the key.
*/
static double keyWidth(void)
{
int i;
double c;
c = 0;
for (i = 0; i < entrysize; i++)
c = max(c, stringSize(entrydata[i]->key.token));
c += 3 * borderspace;
c += 2.8*KEY_BOX_WIDTH;
return c;
}
double xrange;
double yrange;
double graphwidth;
double graphheight;
void dimensions(void)
{
xrange = sampledata[ samplesize - 1 ];
xrange = max(xrange, auxxrange);
yrange = maxCombinedHeight();
yrange = max(yrange, auxyrange);
graphwidth = titlewidth - graphx0 - keyWidth();
graphheight = borderheight - titleheight - (2 * borderspace) - graphy0;
}
|