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); }
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); }
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); }
void ps_rgb(t_psdata ps, t_rgb *rgb) { ps_color(ps, rgb->r, rgb->g, rgb->b); }
void ps_rgb(FILE *ps,t_rgb *rgb) { ps_color(ps,rgb->r,rgb->g,rgb->b); }