Пример #1
0
int hpa(int argc, char *argv[], int retc, char *retv[])
/*************/
{
  double plotchar = 0.6;

  (void) argc;
  (void) argv;
  (void) retc;
  (void) retv;
  if (setplotter()) return(ERROR);
  if (raster)
  {
    Werrprintf("hpa is not supported on raster plotters");
    return(COMPLETE);
  }
  charsize(plotchar);
  color(GREEN);
  if (debug1)
    Wscrprintf("ppmm= %g ymultiplier= %d plot= %d raster= %d, mnumxpnts= %d\n",
                ppmm,ymultiplier,plot,raster,mnumxpnts);

/*  Copy the display parameters from the current group to the
    processed group so the current values will be plotted.	*/

  P_copygroup( CURRENT, PROCESSED, G_DISPLAY );

  plotparam("tn",      COL1,   ROW1, 6,0);
  plotparam("sw",      COL1,   ROW2, 8,1);
  plotparam("at",      COL1,   ROW3, 8,3);
  plotparam("pw",      COL1,   ROW4, 8,1);
  plotparam("sfrq",    COL2,   ROW1, 8,4);
  plotparam("tof",     COL2,   ROW2, 8,1);
  plotparam("d1",      COL2,   ROW3, 8,3);
  plotparam("ct",      COL2+2, ROW4, 8,0);
  plotparam("dn",      COL3,   ROW1, 6,0);
  plotparam("dm",      COL3,   ROW2, 6,0);
  plotparam("dmm",     COL3+7, ROW3, 6,0);
  plotparam("pp",      COL3,   ROW4, 8,1);
  plotparam("dof",     COL4,   ROW1, 8,1);
  plotparam("dlp",     COL4,   ROW2, 8,0);
  plotparam("dmf",     COL4,   ROW3, 8,0);
  plotparam("dpwr",    COL4,   ROW4, 8,0);
  plotparam("fn",      COL5,   ROW1, 8,0);
  plotparam("lb",      COL5,   ROW2, 8,3);
  plotparam("wp",      COL5+2, ROW3, 8,1);
  plotparam("gf",      COL6,   ROW2, 8,3);
  plotparam("sp",      COL7-6, ROW3, 8,1);
  plotparam("seqfil",  COL8,   ROW1, 6,0);
  plotparam("temp",    COL8-2, ROW3, 8,1);
  plotparam("solvent", COL8,   ROW4, 8,0);
  plotparam("file",    COL9,   ROW2, 8,0);
  plotparam("date",    COL9,   ROW3, 8,0);
  plotparam("h1freq",  COL9,   ROW4, 6,0);
  plottext(295,ROW2);
  endgraphics();
  return(COMPLETE);
}
Пример #2
0
void plotlabels(char *fontname)
{
  long i;
  double compr, dx = 0, dy = 0, labangle, cosl, sinl, cosv, sinv, vec;
  boolean left, right;
  node *lp;
  double *firstlet;

  firstlet = (double *)Malloc(nextnode*sizeof(double));
  textlength = (double *)Malloc(nextnode*sizeof(double));
  compr = xunitspercm / yunitspercm;
  if (penchange == yes)
    changepen(labelpen);
  for (i = 0; i < nextnode; i++) {
    if (nodep[i]->tip) {
      lp = nodep[i];
      firstlet[i] = lengthtext(nodep[i]->nayme,1L,fontname,font)
                              /fontheight;
      textlength[i] = lengthtext(nodep[i]->nayme, nodep[i]->naymlength,
                                fontname, font)/fontheight;
      labangle = nodep[i]->oldtheta;
      if (cos(labangle) < 0.0)
        labangle += pi;
      cosl = cos(labangle);
      sinl = sin(labangle);
      vec = sqrt(1.0+firstlet[i]*firstlet[i]);
      cosv = firstlet[i]/vec;
      sinv = 1.0/vec;
      if (style == circular) {
        right = cos(nodep[i]->oldtheta) > 0.0;
        left = !right;
        if (right) {
          dx = labelheight * expand * cos(nodep[i]->oldtheta);
          dy = labelheight * expand * sin(nodep[i]->oldtheta);
          dx -= labelheight * expand * 0.5 * vec * (cosl*sinv-sinl*cosv);
          dy -= labelheight * expand * 0.5 * vec * (sinl*sinv+cosl*cosv);
        }
        if (left) {
          dx = labelheight * expand * cos(nodep[i]->oldtheta);
          dy = labelheight * expand * sin(nodep[i]->oldtheta);
          dx -= labelheight * expand * textlength[i] * cosl;
          dy -= labelheight * expand * textlength[i] * sinl;
          dx += labelheight * expand * 0.5 * vec * (cosl*cosv+sinl*sinv);
          dy -= labelheight * expand * 0.5 * vec * (-sinl*cosv+cosl*sinv);
        }
      } else {
          dx = labelheight * expand * cos(nodep[i]->oldtheta);
          dy = labelheight * expand * sin(nodep[i]->oldtheta);
          dx += labelheight * expand * 0.5 * vec * (cosl*cosv+sinl*sinv);
          dy += labelheight * expand * 0.5 * vec * (-sinl*cosv+cosl*sinv);
        }
      if (style == circular) {
        plottext(lp->nayme, lp->naymlength,
             labelheight * expand * xscale / compr, compr,
             xscale * (lp->xcoord + dx + xoffset),
             yscale * (lp->ycoord + dy + yoffset), 180 * (-labangle) / pi,
             font,fontname);
      } else {
        if (grows == vertical)
          plottext(lp->nayme, lp->naymlength,
                   labelheight * expand * xscale / compr, compr,
                   xscale * (lp->xcoord + dx + xoffset),
                   yscale * (lp->ycoord + dy + yoffset),
                   -labelrotation, font,fontname);
        else
          plottext(lp->nayme, lp->naymlength, labelheight * expand * yscale,
                   compr, xscale * (lp->xcoord + dy + xoffset),
                   yscale * (lp->ycoord - dx + yoffset), 90.0 - labelrotation,
                   font,fontname);
      }
    }
  }
  if (penchange == yes)
    changepen(treepen);
  free(firstlet);
  free(textlength);
}  /* plotlabels */