Пример #1
0
void wheel2(const char *fn, int nres, char *resnm[], real rot0, char *title)
{
    const real fontsize  = 14;
    const real gray      = 0.9;
    const real fontasp   = 0.45;
    const int  angle     = 9;
    const real fontwidth = fontsize*fontasp;

    t_psdata   out;
    int        i, slen;
    real       ring, inner, outer;
    real       xc, yc, box;

    inner = 60.0;
    slen  = 0;
    for (i = 0; (i < nres); i++)
    {
        slen = std::max(slen, static_cast<int>(strlen(resnm[i])));
    }
    fprintf(stderr, "slen = %d\n", slen);
    ring  = slen*fontwidth;
    outer = inner+ring;
    box   = (1+(nres / (2*angle)))*outer;

    out = ps_open(fn, 0, 0, 2.0*box, 2.0*box);
    xc  = box;
    yc  = box;

    ps_font(out, efontHELV, 1.5*fontsize);
    ps_translate(out, xc, yc);
    ps_color(out, 0, 0, 0);
    if (title)
    {
        ps_ctext(out, 0, -fontsize*1.5/2.0, title, eXCenter);
    }
    ps_font(out, efontHELV, fontsize);

    ps_rotate(out, rot0);
    for (i = 0; (i < nres); )
    {
        if ((i % 5) == 4)
        {
            ps_color(out, gray, gray, 1.0);
            ps_fillarcslice(out, 0, 0, inner, outer, -angle, angle);
            ps_color(out, 0, 0, 0);
        }
        ps_arcslice(out, 0, 0, inner, outer, -angle, angle);

        ps_ctext(out, inner+fontwidth, -fontsize/2.0, resnm[i], eXLeft);
        ps_rotate(out, -2*angle);
        i++;

        if ((i % (2*angle)) == 0)
        {
            inner  = outer;
            outer += ring;
        }
    }
    ps_close(out);
}
Пример #2
0
void plot_phi(char *fn,rvec box,int natoms,rvec x[],real phi[])
{
  t_psdata eps;
  real phi_max,rr,gg,bb,fac,dx,x0,y0;
  real offset;
  int  i;
  
  phi_max=phi[0];
  rr=gg=bb=0.0;
  for(i=0; (i<natoms); i++) 
    phi_max=max(phi_max,fabs(phi[i]));
    
  if (phi_max==0.0) {
    fprintf(stderr,"All values zero, see .out file\n");
    return;
  }
  offset=20.0;
  fac=15.0;
#ifdef DEBUG
  fprintf(stderr,"Scaling box by %g\n",fac);
#endif
  eps=ps_open(fn,0,0,
	      (real)(fac*box[XX]+2*offset),(real)(fac*box[YY]+2*offset));
  ps_translate(eps,offset,offset);
  ps_color(eps,0,0,0);
  ps_box(eps,1,1,(real)(fac*box[XX]-1),(real)(fac*box[YY]-1));
  dx=0.15*fac;
  for(i=0; (i<natoms); i++) {
    rr=gg=bb=1.0;
    if (phi[i] < 0)
      gg=bb=(1.0+(phi[i]/phi_max));
    else 
      rr=gg=(1.0-(phi[i]/phi_max));
    rr=rgbset(rr);
    gg=rgbset(gg);
    bb=rgbset(bb);
    ps_color(eps,rr,gg,bb);
    x0=fac*x[i][XX];
    y0=fac*x[i][YY];
    ps_fillbox(eps,(real)(x0-dx),(real)(y0-dx),(real)(x0+dx),(real)(y0+dx));
  }
  ps_close(eps);
}
Пример #3
0
void wheel(const char *fn, int nres, char *resnm[], int r0, real rot0, char *title)
{
    const real fontsize  = 16;
    const real gray      = 0.9;
    const real fontasp   = 0.6;
    const real fontwidth = fontsize*fontasp;

    t_psdata   out;
    int        i, sl, slen;
    real       ring, inner, outer;
    real       xc, yc, box;
    gmx_bool  *bPh;
    char     **rnms;
    char       sign;

    inner = 75.0;
    slen  = 0;
    snew(rnms, nres);
    for (i = 0; (i < nres); i++)
    {
        snew(rnms[i], 256);
        sl   = std::strlen(resnm[i]);
        sign = resnm[i][sl-1];
        if ((sign == '+') || (sign == '-'))
        {
            resnm[i][sl-1] = '\0';
        }
        sprintf(rnms[i], "%s-%d", resnm[i], i+r0);
        if ((sign == '+') || (sign == '-'))
        {
            sl            = std::strlen(rnms[i]);
            rnms[i][sl]   = sign;
            rnms[i][sl+1] = '\0';
        }

        slen = std::max(slen, static_cast<int>(std::strlen(rnms[i])));
    }
    ring  = (2+slen)*fontwidth;
    outer = inner+ring;
    box   = inner*1.5+(1+(nres / 18))*ring;

    bPh = bPhobics(nres, resnm);

    out = ps_open(fn, 0, 0, 2.0*box, 2.0*box);
    xc  = box;
    yc  = box;

    ps_font(out, efontHELV, 1.5*fontsize);
    ps_translate(out, xc, yc);
    if (title)
    {
        ps_ctext(out, 0, -fontsize*1.5/2.0, title, eXCenter);
    }
    ps_font(out, efontHELV, fontsize);
    ps_rotate(out, rot0);
    for (i = 0; (i < nres); )
    {
        if (bPh[i])
        {
            ps_color(out, gray, gray, gray);
            ps_fillarcslice(out, 0, 0, inner, outer, -10, 10);
            ps_color(out, 0, 0, 0);
        }
        ps_arcslice(out, 0, 0, inner, outer, -10, 10);

        ps_ctext(out, inner+fontwidth, -fontsize/2.0, rnms[i], eXLeft);
        ps_rotate(out, -100);
        i++;

        if ((i % 18) == 0)
        {
            inner  = outer;
            outer += ring;
        }
    }
    ps_close(out);
}
Пример #4
0
void ps_rgb(t_psdata ps, t_rgb *rgb)
{
    ps_color(ps, rgb->r, rgb->g, rgb->b);
}
Пример #5
0
void ps_rgb(FILE *ps,t_rgb *rgb)
{
  ps_color(ps,rgb->r,rgb->g,rgb->b);
}