int PlotRawXaxisLabelValue(struct Rplot *ptr, float ox,float oy,float wdt,float hgt, double xmin,double xmax,double value, float offset,int txt_flg,int or, int (*text_box)(char *,float,int,char *,float *,void *), void *boxdata, int sze,char *text, char *fntname,float fntsze, unsigned int color,unsigned char mask) { int s=0; float px; float txtbx[3]; if (ptr==NULL) return -1; if (text_box==NULL) return -1; if (fntname==NULL) return -1; if (text==NULL) return -1; s=(*text_box)(fntname,fntsze,sze,text,txtbx,boxdata); if (s !=0) return s; px=wdt*(value-xmin)/(xmax-xmin); if (or==0) { if (txt_flg & 0x01) s=RplotText(ptr,NULL,fntname,fntsze,ox+px-txtbx[0]/2, oy+hgt+offset+txtbx[2],sze,text, color,0x0f,1); if (s !=0) return s; if (txt_flg & 0x02) s=RplotText(ptr,NULL,fntname,fntsze,ox+px-txtbx[0]/2, oy-offset+txtbx[1],sze,text, color,0x0f,1); } else { struct RplotMatrix rm; rm.a=0; rm.b=1; rm.c=-1; rm.d=0; if (txt_flg & 0x01) s=RplotText(ptr,&rm,fntname,fntsze,ox+px+(txtbx[2]+txtbx[1])/2.0, oy+hgt+offset+txtbx[0],sze,text, color,0x0f,1); if (s !=0) return s; if (txt_flg & 0x02) s=RplotText(ptr,&rm,fntname,fntsze,ox+px+(txtbx[1]+txtbx[2])/2.0, oy-offset,sze,text, color,0x0f,1); if (s !=0) return s; } return s; }
int PlotRawText(struct Rplot *ptr, struct RplotMatrix *matrix, float ox,float oy,float wdt,float hgt, char *fontname,float fontsize, double x,double y,int num,char *txt, float dx,float dy, double xmin,double xmax, double ymin,double ymax, unsigned int color,unsigned char mask) { float fx,fy; fx=ox+dx+wdt*(x-xmin)/(xmax-xmin); fy=oy-dy+hgt-hgt*(y-ymin)/(ymax-ymin); return RplotText(ptr,matrix,fontname,fontsize,fx,fy,num,txt, color,mask,1); }
void plot_chi(struct Rplot *rplot, float xoff,float yoff, struct CnvMapData *ptr, int degfree,int degfree_dat, unsigned int color,unsigned char mask, char *txtfontname,char *symfontname,float fontsize, void *txtdata) { char txt[256]; float txbox[3]; float lhgt; sprintf(txt,"Xy"); txtbox(txtfontname,fontsize,strlen(txt),txt,txbox,txtdata); lhgt=4+txbox[2]-txbox[1]; txtbox(symfontname,fontsize,strlen("c"),"c",txbox,txtdata); RplotText(rplot,NULL,symfontname,fontsize,xoff,yoff, strlen("c"),"c",color,mask,1); RplotText(rplot,NULL,txtfontname,fontsize*0.8,xoff+txbox[0],yoff-lhgt*0.2, strlen("2"),"2",color,mask,1); sprintf(txt,"/%d=%.1g",degfree,ptr->chi_sqr/degfree); RplotText(rplot,NULL,txtfontname,fontsize,xoff+txbox[0]*2,yoff, strlen(txt),txt,color,mask,1); RplotText(rplot,NULL,symfontname,fontsize,xoff,yoff+lhgt, strlen("c"),"c",color,mask,1); RplotText(rplot,NULL,txtfontname,fontsize*0.8,xoff+txbox[0],yoff+lhgt*0.8, strlen("2"),"2",color,mask,1); sprintf(txt,"/%d=%.1g",degfree_dat,ptr->chi_sqr/degfree_dat); RplotText(rplot,NULL,txtfontname,fontsize,xoff+txbox[0]*2,yoff+lhgt, strlen(txt),txt,color,mask,1); }
int PlotRawYaxisTitle(struct Rplot *ptr, float ox,float oy,float wdt,float hgt, float offset,int txt_flg,int or, int (*text_box)(char *,float,int,char *,float *,void *), void *boxdata, int sze,char *text, char *fntname,float fntsze, unsigned int color,unsigned char mask) { int s=0; float txtbx[3]; if (ptr==NULL) return -1; if (text_box==NULL) return -1; if (fntname==NULL) return -1; if (text==NULL) return -1; s=(*text_box)(fntname,fntsze,sze,text,txtbx,boxdata); if (s !=0) return s; if (or==0) { if (txt_flg & 0x01) { if (txt_flg & 0x04) s=RplotText(ptr,NULL,fntname,fntsze,ox-offset-txtbx[0], oy+hgt+txtbx[1],sze,text, color,0x0f,1); else if (txt_flg & 0x08) s=RplotText(ptr,NULL,fntname,fntsze,ox-offset-txtbx[0], oy+txtbx[2],sze,text, color,0x0f,1); else s=RplotText(ptr,NULL,fntname,fntsze,ox-offset-txtbx[0], oy+(hgt+txtbx[1]+txtbx[2])/2.0,sze,text, color,0x0f,1); if (s !=0) return s; } if (txt_flg & 0x02) { if (txt_flg & 0x04) s=RplotText(ptr,NULL,fntname,fntsze,ox+wdt+offset, oy+hgt+txtbx[1],sze,text, color,0x0f,1); else if (txt_flg & 0x08) s=RplotText(ptr,NULL,fntname,fntsze,ox+wdt+offset, oy+txtbx[2],sze,text, color,0x0f,1); else s=RplotText(ptr,NULL,fntname,fntsze,ox+wdt+offset, oy+(hgt+txtbx[1]+txtbx[2])/2.0,sze,text, color,0x0f,1); if (s !=0) return s; } } else { struct RplotMatrix rm; rm.a=0; rm.b=1; rm.c=-1; rm.d=0; if (txt_flg & 0x01) { if (txt_flg & 0x04) s=RplotText(ptr,&rm,fntname,fntsze,ox-offset+txtbx[1], oy+hgt,sze,text, color,0x0f,1); else if (txt_flg & 0x08) s=RplotText(ptr,&rm,fntname,fntsze,ox-offset+txtbx[1], oy+txtbx[0],sze,text, color,0x0f,1); else s=RplotText(ptr,&rm,fntname,fntsze,ox-offset, oy+(hgt+txtbx[0])/2.0,sze,text, color,0x0f,1); if (s !=0) return s; } if (txt_flg & 0x02) { if (txt_flg & 0x04) s=RplotText(ptr,&rm,fntname,fntsze,ox+wdt+offset+txtbx[2], oy+hgt,sze,text, color,0x0f,1); else if (txt_flg & 0x08) s=RplotText(ptr,&rm,fntname,fntsze,ox+wdt+txtbx[2], oy+txtbx[0],sze,text, color,0x0f,1); else s=RplotText(ptr,&rm,fntname,fntsze,ox+wdt+offset+txtbx[2], oy+(hgt+txtbx[0])/2.0,sze,text, color,0x0f,1); if (s !=0) return s; } } return 0; }
int PlotRawYaxisLabel(struct Rplot *ptr, float ox,float oy,float wdt,float hgt, double ymin,double ymax,double step, float offset,int txt_flg,int or, int (*text_box)(char *,float,int,char *,float *,void *), void *boxdata, char * (*make_text)(double,double,double,void *), void *textdata, char *fntname,float fntsze, unsigned int color,unsigned char mask) { float py; double y; float txtbx[3]; char *text=NULL; int s=0; if (ptr==NULL) return -1; if (make_text==NULL) return -1; if (text_box==NULL) return -1; if (fntname==NULL) return -1; if (step==0) return 0; for (y=ymin;y<=ymax;y+=step) { text=(*make_text)(y,ymin,ymax,textdata); if (text==NULL) continue; s=(*text_box)(fntname,fntsze,strlen(text),text,txtbx,boxdata); if (s !=0) break; py=hgt*(y-ymin)/(ymax-ymin); if (or==0) { if (txt_flg & 0x01) s=RplotText(ptr,NULL,fntname,fntsze,ox-offset-txtbx[0], oy+(txtbx[1]+txtbx[2])/2.0+hgt-py,strlen(text),text, color,0x0f,1); if (s !=0) break; if (txt_flg & 0x02) s=RplotText(ptr,NULL,fntname,fntsze,ox+wdt+offset, oy+(txtbx[1]+txtbx[2])/2.0+hgt-py,strlen(text),text, color,0x0f,1); if (s !=0) break; } else { struct RplotMatrix rm; rm.a=0; rm.b=1; rm.c=-1; rm.d=0; if (txt_flg & 0x01) s=RplotText(ptr,&rm,fntname,fntsze,ox-offset+txtbx[1], oy+hgt-py+txtbx[0]/2.0,strlen(text),text, color,0x0f,1); if (s !=0) break; if (txt_flg & 0x02) s=RplotText(ptr,&rm,fntname,fntsze,ox+wdt+offset+txtbx[2], oy+hgt-py+txtbx[0]/2.0,strlen(text),text, color,0x0f,1); if (s !=0) break; } free(text); text=NULL; } if (text !=NULL) free(text); return s; }
int PlotRawXaxisLabel(struct Rplot *ptr, float ox,float oy,float wdt,float hgt, double xmin,double xmax,double step, float offset,int txt_flg,int or, int (*text_box)(char *,float,int,char *,float *,void *), void *boxdata, char * (*make_text)(double,double,double,void *), void *textdata, char *fntname,float fntsze, unsigned int color,unsigned char mask) { float px; double x; float txtbx[3]; char *text=NULL; int s=0; if (ptr==NULL) return -1; if (make_text==NULL) return -1; if (text_box==NULL) return -1; if (fntname==NULL) return -1; if (step==0) return 0; for (x=xmin;x<=xmax;x+=step) { text=(*make_text)(x,xmin,xmax,textdata); if (text==NULL) continue; s=(*text_box)(fntname,fntsze,strlen(text),text,txtbx,boxdata); if (s !=0) break; px=wdt*(x-xmin)/(xmax-xmin); if (or==0) { if (txt_flg & 0x01) s=RplotText(ptr,NULL,fntname,fntsze,ox+px-txtbx[0]/2, oy+hgt+offset+txtbx[2],strlen(text),text, color,0x0f,1); if (s !=0) break; if (txt_flg & 0x02) s=RplotText(ptr,NULL,fntname,fntsze,ox+px-txtbx[0]/2, oy-offset+txtbx[1],strlen(text),text, color,0x0f,1); if (s !=0) break; } else { struct RplotMatrix rm; rm.a=0; rm.b=1; rm.c=-1; rm.d=0; if (txt_flg & 0x01) s=RplotText(ptr,&rm,fntname,fntsze,ox+px+(txtbx[2]+txtbx[1])/2.0, oy+hgt+offset+txtbx[0],strlen(text),text, color,0x0f,1); if (s !=0) break; if (txt_flg & 0x02) s=RplotText(ptr,&rm,fntname,fntsze,ox+px+(txtbx[1]+txtbx[2])/2.0, oy-offset,strlen(text),text, color,0x0f,1); if (s !=0) break; } free(text); text=NULL; } if (text !=NULL) free(text); return s; }