void lj4_printer::draw(int code, int *p, int np, const environment *env) { switch (code) { case 'R': { if (np != 2) { error("2 arguments required for rule"); break; } int hpos = env->hpos; int vpos = env->vpos; int hsize = p[0]; int vsize = p[1]; if (hsize < 0) { hpos += hsize; hsize = -hsize; } if (vsize < 0) { vpos += vsize; vsize = -vsize; } if (!moveto(hpos, vpos)) return; printf("\033*c%da%db0P", hsize, vsize); break; } case 'l': if (np != 2) { error("2 arguments required for line"); break; } hpgl_init(); if (!moveto(env->hpos, env->vpos)) return; hpgl_start(); set_line_thickness(env->size, p[0] == 0 && p[1] == 0); printf("PD%d,%d", p[0], p[1]); hpgl_end(); break; case 'p': case 'P': { if (np & 1) { error("even number of arguments required for polygon"); break; } if (np == 0) { error("no arguments for polygon"); break; } hpgl_init(); if (!moveto(env->hpos, env->vpos)) return; hpgl_start(); if (code == 'p') set_line_thickness(env->size); printf("PMPD%d", p[0]); for (int i = 1; i < np; i++) printf(",%d", p[i]); printf("PM2%cP", code == 'p' ? 'E' : 'F'); hpgl_end(); break; } case '~': { if (np & 1) { error("even number of arguments required for spline"); break; } if (np == 0) { error("no arguments for spline"); break; } hpgl_init(); if (!moveto(env->hpos, env->vpos)) return; hpgl_start(); set_line_thickness(env->size); printf("PD%d,%d", p[0]/2, p[1]/2); const int tnum = 2; const int tden = 3; if (np > 2) { fputs("BR", stdout); for (int i = 0; i < np - 2; i += 2) { if (i != 0) putchar(','); printf("%d,%d,%d,%d,%d,%d", (p[i]*tnum)/(2*tden), (p[i + 1]*tnum)/(2*tden), p[i]/2 + (p[i + 2]*(tden - tnum))/(2*tden), p[i + 1]/2 + (p[i + 3]*(tden - tnum))/(2*tden), (p[i] - p[i]/2) + p[i + 2]/2, (p[i + 1] - p[i + 1]/2) + p[i + 3]/2); } } printf("PR%d,%d", p[np - 2] - p[np - 2]/2, p[np - 1] - p[np - 1]/2); hpgl_end(); break; } case 'c': case 'C': // troff adds an extra argument to C if (np != 1 && !(code == 'C' && np == 2)) { error("1 argument required for circle"); break; } hpgl_init(); if (!moveto(env->hpos + p[0]/2, env->vpos)) return; hpgl_start(); if (code == 'c') { set_line_thickness(env->size); printf("CI%d", p[0]/2); } else printf("WG%d,0,360", p[0]/2); hpgl_end(); break; case 'e': case 'E': if (np != 2) { error("2 arguments required for ellipse"); break; } hpgl_init(); if (!moveto(env->hpos + p[0]/2, env->vpos)) return; hpgl_start(); printf("SC0,%.4f,0,-%.4f,2", hpgl_scale * double(p[0])/p[1], hpgl_scale); if (code == 'e') { set_line_thickness(env->size); printf("CI%d", p[1]/2); } else printf("WG%d,0,360", p[1]/2); printf("SC0,%.4f,0,-%.4f,2", hpgl_scale, hpgl_scale); hpgl_end(); break; case 'a': { if (np != 4) { error("4 arguments required for arc"); break; } hpgl_init(); if (!moveto(env->hpos, env->vpos)) return; hpgl_start(); set_line_thickness(env->size); double c[2]; if (adjust_arc_center(p, c)) { double sweep = ((atan2(p[1] + p[3] - c[1], p[0] + p[2] - c[0]) - atan2(-c[1], -c[0])) * 180.0/PI); if (sweep > 0.0) sweep -= 360.0; printf("PDAR%d,%d,%f", int(c[0]), int(c[1]), sweep); } else printf("PD%d,%d", p[0] + p[2], p[1] + p[3]); hpgl_end(); } break; case 'f': if (np != 1 && np != 2) { error("1 argument required for fill"); break; } hpgl_init(); hpgl_start(); if (p[0] >= 0 && p[0] <= 1000) printf("FT10,%d", p[0]/10); hpgl_end(); break; case 'F': // not implemented yet break; case 't': { if (np == 0) { line_thickness = -1; } else { // troff gratuitously adds an extra 0 if (np != 1 && np != 2) { error("0 or 1 argument required for thickness"); break; } line_thickness = p[0]; } break; } default: error("unrecognised drawing command `%1'", char(code)); break; } }
void lbp_printer::draw(int code, int *p, int np, const environment *env) { if ((req_linethickness < 0 ) && (env->size != cur_size)) set_line_thickness(req_linethickness,env); switch (code) { case 't': if (np == 0) line_thickness = 1; else { // troff gratuitously adds an extra 0 if (np != 1 && np != 2) { error("0 or 1 argument required for thickness"); break; } set_line_thickness(p[0],env); } break; case 'l': // Line if (np != 2) { error("2 arguments required for line"); break; } if (!vdminited()) vdmstart(); vdmline(env->hpos, env->vpos, p[0], p[1]); /* fprintf(stderr, "\nline: %d,%d - %d,%d thickness %d == %d\n", env->hpos - 64,env->vpos -64, env->hpos - 64 + p[0], env->vpos -64 + p[1], env->size, line_thickness);*/ break; case 'R': // Rule if (np != 2) { error("2 arguments required for Rule"); break; } if (vdminited()) { setfillmode(fill_pattern); // Solid Rule vdmrectangle(env->hpos, env->vpos, p[0], p[1]); } else { lbpruleabs(env->hpos - 64, env->vpos -64, p[0], p[1]); cur_vpos = p[1]; cur_hpos = p[0]; } // fprintf(stderr, "\nrule: thickness %d == %d\n", // env->size, line_thickness); break; case 'P': // Filled Polygon if (!vdminited()) vdmstart(); setfillmode(fill_pattern); polygon(env->hpos, env->vpos, np, p); break; case 'p': // Empty Polygon if (!vdminited()) vdmstart(); setfillmode(0); polygon(env->hpos, env->vpos, np, p); break; case 'C': // Filled Circle if (!vdminited()) vdmstart(); // fprintf(stderr, "Circle (%d,%d) Fill %d\n", // env->hpos, env->vpos, fill_pattern); setfillmode(fill_pattern); vdmcircle(env->hpos + (p[0]/2), env->vpos, p[0]/2); break; case 'c': // Empty Circle if (!vdminited()) vdmstart(); setfillmode(0); vdmcircle(env->hpos + (p[0]/2), env->vpos, p[0]/2); break; case 'E': // Filled Ellipse if (!vdminited()) vdmstart(); setfillmode(fill_pattern); vdmellipse(env->hpos + (p[0]/2), env->vpos, p[0]/2, p[1]/2, 0); break; case 'e': // Empty Ellipse if (!vdminited()) vdmstart(); setfillmode(0); vdmellipse(env->hpos + (p[0]/2), env->vpos, p[0]/2, p[1]/2, 0); break; case 'a': // Arc if (!vdminited()) vdmstart(); setfillmode(0); // VDM draws arcs clockwise and pic counterclockwise // We must compensate for that, exchanging the starting and // ending points vdmvarc(env->hpos + p[0], env->vpos+p[1], int(sqrt(double((p[0]*p[0]) + (p[1]*p[1])))), p[2], p[3], (-p[0]), (-p[1]), 1, 2); break; case '~': // Spline if (!vdminited()) vdmstart(); setfillmode(0); vdmspline(np/2, env->hpos, env->vpos, p); break; case 'f': if (np != 1 && np != 2) { error("1 argument required for fill"); break; } // fprintf(stderr, "Fill %d\n", p[0]); if ((p[0] == 1) || (p[0] >= 1000)) { // Black fill_pattern = 1; break; } if (p[0] == 0) { // White fill_pattern = 0; break; } if ((p[0] > 1) && (p[0] < 1000)) { if (p[0] >= 990) fill_pattern = -23; else if (p[0] >= 700) fill_pattern = -28; else if (p[0] >= 500) fill_pattern = -27; else if (p[0] >= 400) fill_pattern = -26; else if (p[0] >= 300) fill_pattern = -25; else if (p[0] >= 200) fill_pattern = -22; else if (p[0] >= 100) fill_pattern = -24; else fill_pattern = -21; } break; case 'F': // not implemented yet break; default: error("unrecognised drawing command `%1'", char(code)); break; } return; }
void lbp_printer::set_char(int idx, font *f, const environment *env, int w, const char *) { int code = f->get_code(idx); unsigned char ch = code & 0xff; unsigned short symbol_set = code >> 8; if (f != cur_font) { lbp_font *psf = (lbp_font *)f; // fprintf(stderr, "Loading font %s \"%d\" \n", psf->lbpname, env->size); if (psf->is_scalable) { // Scalable font selection is different from bitmaped lbpprintf("\033Pz%s.IBML\033\\\033[%d C", psf->lbpname, (int)((env->size * font::res) / 72)); } else // bitmapped font lbpprintf("\033Pz%s.IBML\033\\\n", font_name(psf, env->size)); lbpputs("\033)' 1"); // Select IBML and IBMR1 symbol set cur_font = psf; cur_symbol_set = 0; // Update the line thickness if needed if ((req_linethickness < 0 ) && (env->size != cur_size)) set_line_thickness(req_linethickness,env); cur_size = env->size; } if (symbol_set != cur_symbol_set) { if (cur_symbol_set == 3) // if current symbol set is Symbol we must restore the font lbpprintf("\033Pz%s.IBML\033\\\033[%d C", cur_font->lbpname, (int)((env->size * font::res) / 72)); switch (symbol_set) { case 0: lbpputs("\033('$2\033)' 1"); // Select IBML and IBMR1 symbol sets break; case 1: lbpputs("\033(d\033)' 1"); // Select wp54 symbol set break; case 2: lbpputs("\033('$2\033)'!0"); // Select IBMP symbol set break; case 3: lbpprintf("\033PzSymbol.SYML\033\\\033[%d C", (int)((env->size * font::res) / 72)); lbpputs("\033(\"!!0\033)\"!!1"); // Select symbol font break; case 4: lbpputs("\033)\"! 1\033(\"!$2"); // Select PS symbol set break; } cur_symbol_set = symbol_set; } if (env->size != cur_size) { if (!cur_font->is_scalable) lbpprintf("\033Pz%s.IBML\033\\\n", font_name(cur_font, env->size)); else lbpprintf("\033[%d C", (int)((env->size * font::res) / 72)); cur_size = env->size; // Update the line thickness if needed if (req_linethickness < 0 ) set_line_thickness(req_linethickness,env); } if ((env->hpos != cur_hpos) || (env->vpos != cur_vpos)) { // lbpmoveabs(env->hpos - ((5 * 300) / 16), env->vpos); lbpmoveabs(env->hpos - 64, env->vpos - 64); cur_vpos = env->vpos; cur_hpos = env->hpos; } if ((ch & 0x7F) < 32) lbpputs("\033[1.v"); lbpputc(ch); cur_hpos += w; }
void AspInteg::display(spAspCell_t cell, spAspTrace_t trace, spAspDataInfo_t dataInfo, int integFlag, double is, double off) { set_transparency_level(transparency); disFlag = integFlag; float *traceData = trace->getFirstDataPtr(); if(!traceData) return; int maxpts = trace->getTotalpts(); if(maxpts<1) return; absValue = trace->getInteg(sCoord[0].x,sCoord[1].x); double x1=pCoord[0].x=cell->val2pix(HORIZ,sCoord[0].x); double x2=pCoord[1].x=cell->val2pix(HORIZ,sCoord[1].x); // get integ data if(m_data) delete[] m_data; int p1 = trace->val2dpt(sCoord[0].x); int p2 = trace->val2dpt(sCoord[1].x); m_datapts = p2-p1+1; m_data = new float[m_datapts]; float sum = 0; int k=0; for(int i=p1;i<=p2;i++) { //sum += (*(traceData+i) - *(traceData+p1)); sum += (*(traceData+i)); (*(m_data+k)) = sum; k++; } double vcali = cell->getCali(VERT); m_scale = is/(double)maxpts; m_yoff = off*vcali; double vscale = dataInfo->getVscale(); if(vscale == 0) vscale = 1.0; double scale = m_scale*vscale*vcali; // add vp double yoff = m_yoff + (dataInfo->getVpos())*vcali; double y1=pCoord[0].y=cell->val2pix(VERT,(*(m_data))*m_scale) - m_yoff; double y2=pCoord[1].y=cell->val2pix(VERT,(*(m_data+m_datapts-1))*m_scale) - m_yoff; //AspUtil::drawMark((int)x1,(int)y1,ACTIVE_COLOR); //AspUtil::drawMark((int)x2,(int)y2,ACTIVE_COLOR); // check x1, x2 boundary double px,pw,py,ph,px2; cell->getPixCell(px,py,pw,ph); px2=px+pw; if(x1 < px && x2 < px) return; if(x1 > px2 && x2 > px2) return; if(x1 < px) x1=px; if(x2 > px2) x2=px2; int roiColor; if(selected == ROI_SELECTED) roiColor=ACTIVE_COLOR; else roiColor = INT_COLOR; char thickName[64]; int thickness; // used by functions int thick=0; // use thickness set by functions string value; if(integFlag & SHOW_INTEG) { getOptName(INTEG_LINE,thickName); //AspUtil::getDisplayOption(string(thickName)+"Thickness",value); //thickness = atoi(value.c_str()); //set_spectrum_width(thickness); //set_line_width(thickness); set_spectrum_thickness(thickName,thickName,1.0); set_line_thickness(thickName); cell->drawPolyline(m_data,m_datapts,1,x1,py,x2-x1,ph,roiColor,scale,yoff); int i = selectedHandle-1; if(i>=0 && i < npts) { AspUtil::drawMark((int)pCoord[i].x,(int)pCoord[i].y,ACTIVE_COLOR,thick); } } labelX=labelY=labelW=labelH=0; if((integFlag & SHOW_LABEL)) { if(integFlag & SHOW_VERT_LABEL) rotate = 1; else rotate=0; string labelStr; getLabel(dataInfo,labelStr,labelW,labelH); labelX=(int)(labelLoc.x+(x1+x2)/2) - labelW/2; labelY=(int)(labelLoc.y+(y1+y2)/2) - labelH; if(labelY<(py+labelH)) labelY = (int)py+labelH; char fontName[64]; if(LABEL_SELECTED) { int labelColor; setFont(labelColor); AspUtil::drawString((char *)labelStr.c_str(), labelX,labelY, labelColor, "", rotate); } else { getOptName(INTEG_LABEL,fontName); AspUtil::drawString((char *)labelStr.c_str(), labelX, labelY, -1, fontName,rotate); } labelY -= labelH; } if(selected == ROI_SELECTED) roiColor=ACTIVE_COLOR; else roiColor = INTEG_MARK_COLOR; getOptName(INTEG_MARK,thickName); AspUtil::getDisplayOption(string(thickName)+"Thickness",value); thickness = atoi(value.c_str()); if(thickness < 1) thickness=1; //set_spectrum_width(thickness); //set_line_width(thickness); set_spectrum_thickness(thickName,thickName,1.0); set_line_thickness(thickName); if((integFlag & SHOW_VALUE) && (integFlag & SHOW_VERT_VALUE)) { string labelStr; int cwd, cht, ascent, descent; getValue(dataInfo,labelStr,cht,cwd); // overwrite cht, cwd with fixed length char str[MAXSTR]; sprintf(str,"%.2f",100.00); GraphicsWin::getTextExtents(str, 14, &ascent, &descent, &cht); cwd = ascent + descent; double y = py + ph - cht - 5*thickness; Dpoint_t p1,p2; p1.x=x1; p2.x=x2; p1.y=p2.y=y; AspUtil::drawLine(p1,p2,roiColor,thick); p1.x=p2.x=x1; p2.y=y-5*thickness; AspUtil::drawLine(p1,p2,roiColor,thick); p1.x=p2.x=x2; p2.y=y-5*thickness; AspUtil::drawLine(p1,p2,roiColor,thick); p1.x=p2.x=0.5*(x1+x2); p2.y=y+5*thickness; AspUtil::drawLine(p1,p2,roiColor,thick); char fontName[64]; getOptName(INTEG_NUM,fontName); y = py + ph - cwd/2; AspUtil::drawString((char *)labelStr.c_str(), (int)p1.x-cwd/2, (int)y, -1, fontName,1); } else if(integFlag & SHOW_VALUE) { string labelStr; int cwd, cht; getValue(dataInfo,labelStr,cwd,cht); double y = py + ph - cht - 15*thickness; Dpoint_t p1,p2; p1.x=x1; p2.x=x2; p1.y=p2.y=y; AspUtil::drawLine(p1,p2,roiColor,thick); p1.x=p2.x=x1; p2.y=y-5*thickness; AspUtil::drawLine(p1,p2,roiColor,thick); p1.x=p2.x=x2; p2.y=y-5*thickness; AspUtil::drawLine(p1,p2,roiColor,thick); p1.x=p2.x=0.5*(x1+x2); p2.y=y+5*thickness; AspUtil::drawLine(p1,p2,roiColor,thick); char fontName[64]; getOptName(INTEG_NUM,fontName); y = py + ph - cht/2; AspUtil::drawString((char *)labelStr.c_str(), (int)p1.x-cwd/2, (int)y, -1, fontName,0); } getOptName(SPEC_LINE_MIN,thickName); set_spectrum_width(1); set_line_width(1); set_transparency_level(0); }
int dpir(int argc, char *argv[], int retc, char *retv[]) /*************/ { int groups; int resets; int i, min, ysize; char name[64]; char tmpstr[MAXSTR]; (void) retc; (void) retv; if (argc > 1 && strcmp(argv[1],"off") == 0) { set_dpir_flag(0,""); redo_dpf_dpir(); RETURN; } else if (argc > 1 && strcmp(argv[1],"turnoff") == 0) { set_dpir_flag(0,""); RETURN; } vertflag=0; if ( ! P_getstring(GLOBAL, "integralOrient", tmpstr, 1, MAXSTR) ) { vertflag = (strcmp(tmpstr,"vert") == 0); } if (argc > 1 && strcmp(argv[1],"vert") == 0) { vertflag=1; } if(argc == 1 || strcmp(argv[1],"noli") != 0) { execString("nli\n"); } if (check_int(&resets)) { Werrprintf("intmod must not be set to 'full'"); ABORT; } if (resets <= 1) { Werrprintf("no integral resets are defined"); ABORT; } plot = (argv[0][0] == 'p'); if (select_init( 0, plot+1, NO_FREQ_DIM, NO_HEADERS, DO_CHECK2D, DO_SPECPARS, NO_BLOCKPARS, NO_PHASEFILE )) { ABORT; } if(strlen(argv[0]) > 4 && argv[0][4] == 'N') { normInt = 1; } else if(strlen(argv[0]) > 3 && argv[0][3] == 'N') { normInt = 1; } if ((groups = getregions(resets)) == 0) { ABORT; } min=mnumxpnts; for (i = 1; i <= groups; i++) { if(gb[i].lowlimit <= 0 || gb[i].highlimit <= 0 || gb[i].lowlimit >= (mnumxpnts-xcharpixels) || gb[i].highlimit >= (mnumxpnts-xcharpixels)) continue; if((gb[i].highlimit-gb[i].lowlimit) < min) min = gb[i].highlimit-gb[i].lowlimit; } if(min != 0 && min < 3*xcharpixels) ysize = 3; else ysize=2; if (!plot) { setwindows(); dispcalib = (float) (mnumypnts-ymin) / (float) wc2max; CharSize = ycharpixels + ycharpixels / 5; getOptName(INTEG_MARK,name); set_line_thickness(name); getOptName(INTEG_NUM,name); set_graphics_font(name); } else { double size = G_getCharSize("IntegralNum"); charsize(size); //charsize((double)0.7); dispcalib = ppmm / ymultiplier; CharSize = ycharpixels; } if (showPlotBox()) dpir_off=0.0; else dpir_off=9.0; if(dispcalib>0) { int size= 12; G_getSize("IntegralNum", &size); i = (int)(vp*dispcalib); if (vertflag && i < 4*size) { char cmd[64]; i = (int)(4*size/dispcalib)+1; if(vertflag) sprintf(cmd,"vp=%d ds %s('vert')\n",i,argv[0]); else sprintf(cmd,"vp=%d ds %s\n",i,argv[0]); if(!plot) execString(cmd); //Werrprintf("pir requires minimum vp of %d",i); RETURN; } else if (i < 3*size) { char cmd[64]; i = (int)(3*size/dispcalib)+1; if(vertflag) sprintf(cmd,"vp=%d ds %s('vert')\n",i,argv[0]); else sprintf(cmd,"vp=%d ds %s\n",i,argv[0]); if(!plot) execString(cmd); //Werrprintf("pir requires minimum vp of %d",i); RETURN; } } else { if (vp < 30) { char cmd[64]; i=30; if(vertflag) sprintf(cmd,"vp=%d ds %s('vert')\n",i,argv[0]); else sprintf(cmd,"vp=%d ds %s\n",i,argv[0]); if(!plot) execString(cmd); //Werrprintf("pir requires minimum vp of 30"); RETURN; } } //color(PARAM_COLOR); color(INTEG_MARK_COLOR); if (debug1) { Wscrprintf("dispcalib= %g, dfpnt2= %d, CharSize= %d, bottom= %d\n", dispcalib,dfpnt2,CharSize, dfpnt2 - CharSize + (int) (dispcalib * (vp - dpir_off - 5.0))); Wscrprintf("index highlimit lowlimit below\n"); for (i = 1; i <= groups; i++) Wscrprintf("%d %d %d %s\n",i,gb[i].highlimit,gb[i].lowlimit, (gb[i].below) ? "true" : "false"); } if(vertflag) { for (i = 1; i <= groups; i++) label_pirv(i); } else { for (i = 1; i <= groups; i++) label_pir(i, ysize); } if (!plot) { char cmd[64]; if(argc > 1) { if (isReal(argv[1]) ) sprintf(cmd,"%s(%s",argv[0],argv[1]); else sprintf(cmd,"%s('%s'",argv[0],argv[1]); for(i=2;i<argc;i++) { if (isReal(argv[i]) ) { strcat(cmd,","); strcat(cmd,argv[i]); } else { strcat(cmd,",'"); strcat(cmd,argv[i]); strcat(cmd,"'"); } } strcat(cmd,")\n"); } else sprintf(cmd,"%s\n",argv[0]); Wsetgraphicsdisplay("ds"); set_dpir_flag(1,cmd); } releaseAllWithId("dpir"); endgraphics(); disp_status(" "); set_graphics_font("Default"); RETURN; }
int dpf(int argc, char *argv[], int retc, char *retv[]) /*************/ { int groups; int noisemult_p = 0; int numlines,maxlines; int i; int donll = TRUE; int noneg = FALSE; int top = FALSE; char command[128]; char name[64]; (void) retc; (void) retv; Wturnoff_buttons(); leader_len = 20.0; axish = FALSE; axisp = FALSE; axisp_freq = 1.0; if (argc > 1) { for (i=1; i<argc; i++) { if (strcmp(argv[i],"off") == 0) { set_dpf_flag(0,""); redo_dpf_dpir(); RETURN; } else if (strcmp(argv[i],"turnoff") == 0) { set_dpf_flag(0,""); RETURN; } else if (strcmp(argv[i],"noll") == 0) donll = FALSE; else if (strcmp(argv[i],"pos") == 0) noneg = TRUE; else if (strcmp(argv[i],"top") == 0) top = TRUE; else if (strcmp(argv[i],"axish") == 0) axish = TRUE; else if (strcmp(argv[i],"axisp") == 0) { axisp = TRUE; P_getreal(PROCESSED,"sfrq",&axisp_freq,1); } else if (strcmp(argv[i],"leader") == 0) { if (((i+1) < argc) && isReal(argv[i+1]) ) { i++; leader_len = stringReal(argv[i]); } } else if (isReal(argv[i])) noisemult_p = i; } } if (donll) /* if not donll, dpf uses last previous line listing */ { if (noisemult_p != 0) { if (noneg) strcpy(command,"nll('dpf','pos',"); else strcpy(command,"nll('dpf',"); strcat(command,argv[noisemult_p]); strcat(command,")\n"); } else { if (noneg) strcpy(command,"nll('dpf','pos')\n"); else strcpy(command,"nll('dpf')\n"); } execString(command); } if(P_getreal(CURRENT, "dpf_sc2",&dpf_sc2,1)) dpf_sc2=sc2; if(P_getreal(CURRENT, "dpf_wc2",&dpf_wc2,1)) dpf_wc2=wc2; if(dpf_wc2>wc2) dpf_wc2=wc2; if(dpf_sc2<sc2) dpf_sc2=sc2; /* if (init2d(1,1)) return(ERROR); */ scale = vs; if (normflag) scale *= normalize; /* Wscrprintf("normflag=%d normalize=%g\n",normflag,normalize); */ plot = (argv[0][0] == 'p'); /*select_init(get_rev, dis_setup, fdimname, doheaders, docheck2d, dospecpars, doblockpars, dophasefile)*/ /*if (init2d(0,plot + 1)) return(ERROR); */ if (select_init( 0, plot+1, NO_FREQ_DIM, NO_HEADERS, DO_CHECK2D, DO_SPECPARS, NO_BLOCKPARS, NO_PHASEFILE )) return(ERROR); if ((numlines = getlines(noneg)) == 0) RETURN; if (!plot) { setwindows(); dispcalib = (float) (mnumypnts-ymin) / (float) wc2max; getOptName(PEAK_MARK,name); set_line_thickness(name); getOptName(PEAK_NUM,name); set_graphics_font(name); } else { double size = G_getCharSize("PeakNum"); charsize(size); //charsize((double)0.7); dispcalib = ppmm / ymultiplier; } CharSize = ycharpixels + ycharpixels / 5; maxlines = dnpnt / CharSize; if (maxlines < numlines) remove_lines(maxlines,&numlines); if (numlines > 0) { //color(PARAM_COLOR); color(PEAK_MARK_COLOR); groups = groupcheck(numlines); if (debug1) { Wscrprintf("index high low newhigh newlow highlimit lowlimit\n"); for (i = 1; i <= groups; i++) Wscrprintf("%d %d %d %d %d %d %d\n",i,ga[i].high,ga[i].low, ga[i].newhigh,ga[i].newlow,ga[i].highlimit,ga[i].lowlimit); } label_proc = (top) ? (PFV) label_top : (PFV) label_bot; for (i = 1; i <= groups; i++) label_group(i); if (!plot) { // construct the command, and set the flag and command char cmd[64]; if(argc > 1) { if (isReal(argv[1]) ) sprintf(cmd,"%s(%s",argv[0],argv[1]); else sprintf(cmd,"%s('%s'",argv[0],argv[1]); for(i=2;i<argc;i++) { if (isReal(argv[i]) ) { strcat(cmd,","); strcat(cmd,argv[i]); } else { strcat(cmd,",'"); strcat(cmd,argv[i]); strcat(cmd,"'"); } } strcat(cmd,")\n"); } else sprintf(cmd,"%s\n",argv[0]); Wsetgraphicsdisplay("ds"); set_dpf_flag(1, cmd); } } releaseAllWithId("dpf"); endgraphics(); disp_status(" "); set_graphics_font("Default"); RETURN; }