int main(int argc,char *argv[]) { struct XwinDisplay *dp; struct XwinWindow *win; int wdt=300,hgt=300; unsigned int border=0; int flg; char *display_name=NULL; char *progname; int status=0; struct timeval tmout; unsigned int cv; unsigned char *array=NULL; int x,y,i,imax; float ix,iy,cx,cy,tx,xmin,xmax,ymin,ymax; xmin=-2.25; xmax=-2.25+3; ymin=-1.5; ymax=1.5; imax=255; array=malloc(hgt); progname=argv[0]; dp=XwinOpenDisplay(display_name,&flg); win=XwinMakeWindow(0,0,wdt,hgt,border, dp,"Test Window", "Test Window","Test Window", "basic",argc,argv,&flg); if ((fbuf=FrameBufferMake("Test",wdt,hgt,24))==NULL) { fprintf(stderr,"failed to make frame buffer."); exit(-1); } XwinFrameBufferWindow(fbuf,win); XwinShowWindow(win); for (x=0;x<wdt;x++) { for (y=0;y<hgt;y++) { cx=xmin+(xmax-xmin)*x/wdt; cy=ymin+(ymax-ymin)*y/hgt; ix=0; iy=0; for (i=0;i<imax;i++) { tx=ix*ix-iy*iy+cx; iy=2*ix*iy+cy; ix=tx; if (sqrt(ix*ix+iy*iy)>2.0) break; } array[y]=i; } for (y=0;y<hgt;y++) { cv=FrameBufferColor(16*array[y],16*array[y],255-16*array[y],255); FrameBufferRectangle(fbuf,NULL,x,y,1,1,1,cv,0x0f,0,NULL,NULL); } XwinFrameBufferWindow(fbuf,win); tmout.tv_sec=0; tmout.tv_usec=0; status=XwinDisplayEvent(dp,1,&win,0,&tmout); if (status !=0) break; } XwinFreeWindow(win); XwinCloseDisplay(dp); return 0; }
int main(int argc,char *argv[]) { int arg=0; FILE *fp; struct FrameBuffer *src=NULL; struct FrameBuffer *dst=NULL; unsigned int bgcolor=0; char *bgtxt=NULL; unsigned alpha=0; unsigned char help=0; unsigned char option=0; OptionAdd(&opt,"-help",'x',&help); OptionAdd(&opt,"-option",'x',&option); OptionAdd(&opt,"bgcol",'t',&bgtxt); OptionAdd(&opt,"alpha",'x',&alpha); arg=OptionProcess(1,argc,argv,&opt,NULL); if (help==1) { OptionPrintInfo(stdout,hlpstr); exit(0); } if (option==1) { OptionDump(stdout,&opt); exit(0); } if (arg<argc) { fp=fopen(argv[arg],"r"); if (fp==NULL) { fprintf(stderr,"Error opening file.\n"); exit(-1); } } else fp=stdin; bgcolor=FrameBufferColor(0x00,0x00,0x00,0x00); if (bgtxt !=NULL) { sscanf(bgtxt,"%x",&bgcolor); } while ((src=FrameBufferLoadPNG(fp,"image")) !=NULL) { if (bgcolor !=0) { if (dst==NULL) { dst=FrameBufferMake(NULL,src->wdt,src->hgt,24); if (dst==NULL) { fprintf(stderr,"Error creating image.\n"); exit(-1); } } FrameBufferClear(dst,bgcolor,0x0f); FrameBufferImage(dst,NULL,src,0x0f,0,0,0,NULL); if (alpha==0) FrameBufferSavePPM(dst,stdout); else FrameBufferSavePPMAlpha(dst,stdout); } else { if (alpha==0) FrameBufferSavePPM(src,stdout); else FrameBufferSavePPMAlpha(src,stdout); } FrameBufferFree(src); src=NULL; } if (arg<argc) fclose(fp); return 0; }
int main(int argc,char *argv[]) { unsigned int color=0; unsigned int alpha=255; unsigned char nonzero=0; int arg=0; int c=0,v=0; FILE *fp; char *name=NULL; char *atxt=NULL; struct FrameBuffer *img=NULL; unsigned char help=0; unsigned char option=0; OptionAdd(&opt,"-help",'x',&help); OptionAdd(&opt,"-option",'x',&option); OptionAdd(&opt,"name",'t',&name); OptionAdd(&opt,"alpha",'t',&atxt); OptionAdd(&opt,"nz",'x',&nonzero); arg=OptionProcess(1,argc,argv,&opt,NULL); if (help==1) { OptionPrintInfo(stdout,hlpstr); exit(0); } if (option==1) { OptionDump(stdout,&opt); exit(0); } if (arg<argc) { fp=fopen(argv[arg],"r"); if (fp==NULL) { fprintf(stderr,"Error opening file.\n"); exit(-1); } } else fp=stdin; img=FrameBufferLoadPPM(fp,name); if (img==NULL) { fprintf(stderr,"Error decoding image.\n"); exit(-1); } if (arg<argc) fclose(fp); if (atxt !=NULL) { int alen; alen=strlen(atxt); if ((alen>2) && (atxt[0]=='0') && (atxt[1]=='x')) sscanf(atxt+2,"%x",&alpha); else if (atxt[alen-1]=='%') { float aflt; atxt[alen-1]=0; sscanf(atxt,"%g",&aflt); if (aflt<0) aflt=0; if (aflt>100) aflt=100; alpha=255*aflt/100.0; } else alpha=atoi(atxt); if (alpha>255) alpha=255; } color=FrameBufferColor(0,0,0,alpha); FrameBufferClear(img,color,0x08); if (nonzero) { for (c=0;c<img->wdt*img->hgt;c++) { v=img->img[c]+img->img[c+img->wdt*img->wdt]+ img->img[c+2*img->wdt*img->wdt]; if (v==0) img->msk[c]=0; } } if (img !=NULL) FrameBufferSavePPMX(img,stdout); return 0; }
int main(int argc,char *argv[]) { char lbuf[256]; int s=0; int arg=0; FILE *fp; struct FrameBuffer *src=NULL; struct FrameBuffer *dst=NULL; struct XMLdata *xmldata=NULL; struct FrameBufferXML xmlimg; unsigned int bgcolor=0; char *bgtxt=NULL; unsigned char alpha=0; unsigned char help=0; unsigned char option=0; OptionAdd(&opt,"-help",'x',&help); OptionAdd(&opt,"-option",'x',&option); OptionAdd(&opt,"bgcol",'t',&bgtxt); OptionAdd(&opt,"alpha",'x',&alpha); arg=OptionProcess(1,argc,argv,&opt,NULL); if (help==1) { OptionPrintInfo(stdout,hlpstr); exit(0); } if (option==1) { OptionDump(stdout,&opt); exit(0); } xmldata=XMLMake(); xmlimg.xml=xmldata; xmlimg.img=&src; XMLSetStart(xmldata,FrameBufferXMLStart,&xmlimg); XMLSetEnd(xmldata,FrameBufferXMLEnd,&xmlimg); if (arg<argc) { fp=fopen(argv[arg],"r"); if (fp==NULL) { fprintf(stderr,"Error opening file.\n"); exit(-1); } } else fp=stdin; while(fgets(lbuf,255,fp) !=NULL) { s=XMLDecode(xmldata,lbuf,strlen(lbuf)); if (s !=0) break; } if (s !=0) { fprintf(stderr,"Error decoding image.\n"); exit(-1); } if (arg<argc) fclose(fp); bgcolor=FrameBufferColor(0x00,0x00,0x00,0x00); if (bgtxt !=NULL) { sscanf(bgtxt,"%x",&bgcolor); } if (src==NULL) { fprintf(stderr,"Error decoding image.\n"); exit(-1); } if (bgcolor !=0) { dst=FrameBufferMake(NULL,src->wdt,src->hgt,24); if (dst==NULL) { fprintf(stderr,"Error creating image.\n"); exit(-1); } FrameBufferClear(dst,bgcolor,0x0f); FrameBufferImage(dst,NULL,src,0x0f,0,0,0,NULL); if (alpha==0) FrameBufferSavePPM(dst,stdout); else FrameBufferSavePPMAlpha(dst,stdout); } else { if (alpha==0) FrameBufferSavePPM(src,stdout); else FrameBufferSavePPMAlpha(src,stdout); } return 0; }
int main(int argc,char *argv[]) { #ifdef _XLIB_ char *name="ppmxd"; int xdf=0; struct XwinDisplay *dp; struct XwinWindow *win; char *display_name=NULL; int xdoff=-1; int ydoff=-1; #endif int arg=0; FILE *fp; unsigned int bgcolor=0; struct FrameBufferMatrix m; struct FrameBuffer *src=NULL; struct FrameBuffer *dst=NULL; char *bgtxt=NULL; unsigned char cflg=0; unsigned char sflg=0; float scale=100; float wdt=-1; float hgt=-1; unsigned char help=0; unsigned char option=0; OptionAdd(&opt,"-help",'x',&help); OptionAdd(&opt,"-option",'x',&option); OptionAdd(&opt,"smooth",'x',&sflg); OptionAdd(&opt,"scale",'f',&scale); OptionAdd(&opt,"check",'x',&cflg); OptionAdd(&opt,"bgcol",'t',&bgtxt); #ifdef _XLIB_ OptionAdd(&opt,"display",'t',&display_name); OptionAdd(&opt,"xoff",'i',&xdoff); OptionAdd(&opt,"yoff",'i',&ydoff); #endif arg=OptionProcess(1,argc,argv,&opt,NULL); if (help==1) { OptionPrintInfo(stdout,hlpstr); exit(0); } if (option==1) { OptionDump(stdout,&opt); exit(0); } if (arg<argc) { fp=fopen(argv[arg],"r"); if (fp==NULL) { fprintf(stderr,"Error opening file.\n"); exit(-1); } } else fp=stdin; src=FrameBufferLoadPPMX(fp); if (src==NULL) { fprintf(stderr,"Error decoding image.\n"); exit(-1); } if (arg<argc) fclose(fp); bgcolor=FrameBufferColor(0x00,0x00,0x00,0xff); if (bgtxt !=NULL) { sscanf(bgtxt,"%x",&bgcolor); bgcolor=bgcolor | 0xff000000; } if (scale<=0) scale=0.5; if (scale !=100) { wdt=src->wdt*scale/100.0; hgt=src->hgt*scale/100.0; } else { wdt=src->wdt; hgt=src->hgt; } if ((wdt==0) || (hgt==0)) { fprintf(stderr,"Invalid image size.\n"); exit(-1); } dst=FrameBufferMake(NULL,wdt,hgt,24); FrameBufferClear(dst,bgcolor,0x0f); if (cflg !=0) { /* plot checker board */ int x,y; int c=0,d=0; for (x=0;x<wdt;x+=8) { c=d; d=!d; for (y=0;y<hgt;y+=8) { c=!c; if (c==0) FrameBufferRectangle(dst,NULL,x,y,8,8,1, 0xffc0c0c0,0x0f,0,NULL,NULL); else FrameBufferRectangle(dst,NULL,x,y,8,8,1, 0xffffffff,0x0f,0,NULL,NULL); } } } if (scale==100) FrameBufferImage(dst,NULL,src,0x0f,0,0,0,NULL); else { m.a=scale/100.0; m.b=0; m.c=0; m.d=scale/100.0; FrameBufferImage(dst,&m,src,0x0f,0,0,sflg,NULL); } #ifdef _XLIB_ dp=XwinOpenDisplay(display_name,&xdf); if (dp==NULL) { fprintf(stderr,"Could not open display.\n"); exit(-1); } if (xdoff==-1) xdoff=(dp->wdt-dst->wdt)/2; if (ydoff==-1) ydoff=(dp->hgt-dst->hgt)/2; win=XwinMakeWindow(xdoff,ydoff,dst->wdt,dst->hgt,0, dp,name, name,argv[0],name,argc,argv,&xdf); if (win==NULL) { fprintf(stderr,"Could not create window.\n"); exit(-1); } XwinFrameBufferWindow(dst,win); XwinShowWindow(win); XwinDisplayEvent(dp,1,&win,1,NULL); XwinFreeWindow(win); XwinCloseDisplay(dp); #endif return 0; }