int GrPlotZeroEnd(char *name,char *buf,int sze,void *data) { struct GrPlotBlock *blk; struct GrPlotZero *ptr; struct GrPlotData *plt; blk=(struct GrPlotBlock *) data; if (blk==NULL) return -1; ptr=(struct GrPlotZero *) blk->data; if (ptr==NULL) return -1; plt=ptr->plt; if (strcmp(name,blk->name)==0) { struct PlotData *plot; plot=plt->plot; if (plot==NULL) return -1; if (ptr->state !=1) return -1; if (strcmp(name,"xzero")==0) PlotXzero(plot,plt->num,ptr->min,ptr->max, ptr->color,ptr->mask,ptr->width,ptr->dash); if (strcmp(name,"yzero")==0) PlotYzero(plot,plt->num,ptr->min,ptr->max, ptr->color,ptr->mask,ptr->width,ptr->dash); if (ptr->dash !=NULL) RplotFreeDash(ptr->dash); free(ptr); GrPlotRestore(blk); return 0; } return 0; }
int GrPlotIncludeEnd(char *name,char *buf,int sze,void *data) { int s=0; struct GrPlotBlock *blk; struct GrPlotInclude *ptr; struct GrPlotIncludeBlock *inc; struct XMLdata *xml; blk=(struct GrPlotBlock *) data; if (blk==NULL) return -1; ptr=(struct GrPlotInclude *) blk->data; if (ptr==NULL) return -1; inc=ptr->inc; if (inc==NULL) return -1; if (strcmp(name,blk->name)==0) { if (ptr->name==NULL) return -1; xml=blk->xml; GrPlotRestore(blk); if (inc->user !=NULL) s=(inc->user)(ptr->name,GrPlotIncludeUser,xml,inc->data); free(ptr->name); free(ptr); return s; } return 0; }
int GrPlotBarPlotEnd(char *name,char *buf,int sze,void *data) { void *fp; double xval,yval; struct GrPlotBlock *blk; struct GrPlotBarPlot *ptr; struct GrPlotData *plt; blk=(struct GrPlotBlock *) data; if (blk==NULL) return -1; ptr=(struct GrPlotBarPlot *) blk->data; if (ptr==NULL) return -1; plt=ptr->plt; if (strcmp(name,blk->name)==0) { struct PlotData *plot; plot=plt->plot; if (plot==NULL) return -1; if ((ptr->state & 0x05) !=0x05) return -1; if (ptr->name==NULL) return -1; if (ptr->x==NULL) return -1; if (ptr->y==NULL) return -1; /* do the plot here */ if ((plt->file.open !=NULL) && (plt->file.close!=NULL) && (plt->file.read !=NULL)) { fp=(plt->file.open)(ptr->name,ptr->encode,ptr->x,ptr->y, plt->file.data); if (fp !=NULL) { while ( (plt->file.read)(fp,ptr->encode,ptr->x,ptr->y, &xval,&yval,plt->file.data) !=-1) { if (xval<ptr->xdmin) continue; if (xval>ptr->xdmax) continue; if (yval<ptr->ydmin) continue; if (yval>ptr->ydmax) continue; PlotBar(plot,plt->num,xval,yval,ptr->w,ptr->o, ptr->xmin,ptr->xmax,ptr->ymin,ptr->ymax, ptr->or,ptr->fill,ptr->color,ptr->mask,ptr->width,ptr->dash); } (plt->file.close)(fp,plt->file.data); } } free(ptr->name); if (ptr->encode !=NULL) free(ptr->encode); free(ptr->x); free(ptr->y); if (ptr->dash !=NULL) RplotFreeDash(ptr->dash); free(ptr); GrPlotRestore(blk); return 0; } return 0; }
int GrPlotAxisEnd(char *name,char *buf,int sze,void *data) { struct GrPlotBlock *blk; struct GrPlotAxis *ptr; struct GrPlotData *plt; blk=(struct GrPlotBlock *) data; if (blk==NULL) return -1; ptr=(struct GrPlotAxis *) blk->data; if (ptr==NULL) return -1; plt=ptr->plt; if (strcmp(name,blk->name)==0) { struct PlotData *plot; plot=plt->plot; if (plot==NULL) return -1; if (ptr->state !=1) return -1; plot->major_wdt=ptr->major_size; plot->minor_wdt=ptr->minor_size; plot->major_hgt=ptr->major_size; plot->minor_hgt=ptr->minor_size; if (strcmp(name,"xaxis")==0) PlotXaxis(plot,plt->num,ptr->min,ptr->max,ptr->major,ptr->minor, ptr->flg,ptr->color,ptr->mask,ptr->width); if (strcmp(name,"yaxis")==0) PlotYaxis(plot,plt->num,ptr->min,ptr->max,ptr->major,ptr->minor, ptr->flg,ptr->color,ptr->mask,ptr->width); if (strcmp(name,"xaxislog")==0) PlotXaxisLog(plot,plt->num,ptr->min,ptr->max,ptr->major,ptr->minor, ptr->flg,ptr->color,ptr->mask,ptr->width); if (strcmp(name,"yaxislog")==0) PlotYaxisLog(plot,plt->num,ptr->min,ptr->max,ptr->major,ptr->minor, ptr->flg,ptr->color,ptr->mask,ptr->width); free(ptr); GrPlotRestore(blk); return 0; } return 0; }
int GrPlotShapeEnd(char *name,char *buf,int sze,void *data) { struct GrPlotBlock *blk; struct GrPlotShape *ptr; struct GrPlotData *plt; blk=(struct GrPlotBlock *) data; if (blk==NULL) return -1; ptr=(struct GrPlotShape *) blk->data; if (ptr==NULL) return -1; plt=ptr->plt; if (strcmp(name,blk->name)==0) { struct PlotData *plot; plot=plt->plot; if (plot==NULL) return -1; if (ptr->state !=0x03) return -1; if (ptr->off !=NULL) { ptr->x=(ptr->off)->x+ptr->x*(ptr->off)->w; ptr->y=(ptr->off)->y+ptr->y*(ptr->off)->h; ptr->w=ptr->w*(ptr->off)->w; ptr->h=ptr->h*(ptr->off)->h; } if (strcmp(name,"rectangle")==0) PlotRectangle(plot,plt->num,ptr->matrix,ptr->x,ptr->y,ptr->w,ptr->h, ptr->xmin,ptr->xmax,ptr->ymin,ptr->ymax, ptr->fill,ptr->color,ptr->mask,ptr->width,ptr->dash); if (strcmp(name,"ellipse")==0) PlotEllipse(plot,plt->num,ptr->matrix,ptr->x,ptr->y,ptr->w,ptr->h, ptr->xmin,ptr->xmax,ptr->ymin,ptr->ymax, ptr->fill,ptr->color,ptr->mask,ptr->width,ptr->dash); if (ptr->matrix !=NULL) free(ptr->matrix); if (ptr->dash !=NULL) RplotFreeDash(ptr->dash); free(ptr); GrPlotRestore(blk); return 0; } return 0; }
int GrPlotTickEnd(char *name,char *buf,int sze,void *data) { struct GrPlotBlock *blk; struct GrPlotTick *ptr; blk=(struct GrPlotBlock *) data; if (blk==NULL) return -1; ptr=(struct GrPlotTick *) blk->data; if (ptr==NULL) return -1; if (strcmp(name,blk->name)==0) { free(ptr); GrPlotRestore(blk); return 0; } return 0; }
int GrPlotImageNameEnd(char *name,char *buf,int sze,void *data) { struct GrPlotBlock *blk; struct GrPlotImageName *ptr; struct GrPlotData *plt; blk=(struct GrPlotBlock *) data; if (blk==NULL) return -1; ptr=(struct GrPlotImageName *) blk->data; if (ptr==NULL) return -1; plt=ptr->plt; if (strcmp(name,blk->name)==0) { struct PlotData *plot; plot=plt->plot; if (plot==NULL) return -1; if (ptr->state !=0x01) return -1; if (ptr->name==NULL) return -1; if (ptr->off !=NULL) { ptr->x+=(ptr->off)->x; ptr->y+=(ptr->off)->y; } PlotImageName(plot,plt->num,ptr->matrix,ptr->name,ptr->dx,ptr->dy, ptr->x,ptr->y, ptr->xmin,ptr->xmax,ptr->ymin,ptr->ymax, ptr->mask); if (ptr->matrix !=NULL) free(ptr->matrix); free(ptr->name); free(ptr); GrPlotRestore(blk); return 0; } return 0; }
int GrPlotStringEnd(char *name,char *buf,int sze,void *data) { struct GrPlotBlock *blk; struct GrPlotString *ptr; blk=(struct GrPlotBlock *) data; if (blk==NULL) return -1; ptr=(struct GrPlotString *) blk->data; if (ptr==NULL) return -1; if (strcmp(name,blk->name)==0) { int i,j,c,k=0,s=0; int match; char *symbol[]={"\"","\\","<",">","&",0}; char *entity[]={""","'","<",">","&",0}; int state[]={0,0,0,0,0,0}; char *stack=NULL,*tmp=NULL; if (ptr->buf==NULL) return -1; stack=malloc(strlen(ptr->buf)+1); for (j=0;ptr->buf[j] !=0;j++) { c=ptr->buf[j]; match=0; for (i=0;entity[i] !=0;i++) { if (entity[i][state[i]]==c) { state[i]++; match=1; } else state[i]=0; if (entity[i][state[i]]==0) break; } if (entity[i] !=NULL) { ptr->buf[k]=symbol[i][0]; k++; state[i]=0; s=0; continue; } if (match==1) { stack[s]=c; s++; continue; } else if (s>0) { for (i=0;i<s;i++) ptr->buf[k+i]=stack[i]; k+=s; s=0; } ptr->buf[k]=c; k++; } ptr->buf[k]=0; tmp=realloc(ptr->buf,k+1); *(ptr->txt)=tmp; free(stack); free(ptr); GrPlotRestore(blk); return 0; } return 0; }