#include "hp2graph.h" #include "output.h" #include "format.h" Format *output; static void Prologue(void) { double scale; if (eflag) scale = epsfwidth / (double) borderwidth; output->Prelude(scale,eflag); if (eflag) { output->Scale(scale); } else if (gflag) { output->Portrait(); } else { output->Landscape(); } } static void BorderOutlineBox(void) { outputBox(-1,0.0,0.0,borderwidth,borderheight); } static void TitleOutlineBox(void) { outputBox(-1,borderspace,borderheight - titleheight - borderspace ,titlewidth,titleheight); } static void TitleText(void) { double x, y; char info[100]; x = borderspace + titletextspace; y = borderheight - titleheight - borderspace + titletextspace; sprintf(info,"%d %s x %s",(int) areabelow,"bytes" ,(timebyallocation?"samples":"seconds")); /* job identifier goes at far left */ output->Text(JustifyLeft,x,y,TITLE_FONT,jobstring); /* area below curve is centered */ output->Text(JustifyRight,titlewidth,y,TITLE_FONT,info); } void outputBox(int fill,double x,double y,double w,double h) { output->PathNew(Closed,4); if (fill>= 0) output->PathFill(fill); output->PathWidth(0.2); output->PathMoveTo(x,y); output->PathLine(0.0, h); output->PathLine(w, 0.0); output->PathLine(0.0, -h); output->PathStroke(); } void outputLine(double x,double y,double dx,double dy) { output->PathNew(Open,2); output->PathWidth(0.3); output->PathMoveTo(x, y); output->PathLine(dx, dy); output->PathStroke(); } void outputLineTo(double x,double y,double x2,double y2) { output->PathNew(Open,2); output->PathWidth(0.1); output->PathMoveTo(x, y); output->PathLineTo(x2,y2); output->PathStroke(); } void outputCaret(double x,double y,double d) { output->PathNew(Closed,3); output->PathFill(22); output->PathWidth(0.5); output->PathMoveTo(x - d, y); output->PathLine(d, -d); output->PathLine(d, d); output->PathStroke(); } int FontSize(int font) { switch(font) { case TITLE_FONT: return LARGE_FONT; case SCALE_FONT: return NORMAL_FONT; case KEY_FONT: return NORMAL_FONT; case SMALLKEY_FONT: return SMALL_FONT; } return NORMAL_FONT; } void putFile(void) { jobstring = argv2str(); Prologue(); output->Fonts(); BorderOutlineBox(); TitleOutlineBox(); TitleText(); curvesInit(); key(); curves(); axes(); if (showMark) marks(); if (showComment) comments(); output->Prologue(); }