void loadppmx(struct FrameBufferDB *imagedb,struct OptionText *ppmx) { FILE *fp; int i; struct FrameBuffer *img=NULL; if (ppmx==NULL) return; for (i=0;i<ppmx->num;i++) { fp=fopen(ppmx->txt[i],"r"); if (fp==NULL) continue; img=FrameBufferLoadPPMX(fp); fclose(fp); if (img==NULL) continue; FrameBufferDBAdd(imagedb,img); } }
int main(int argc,char *argv[]) { int arg=0; FILE *fp; struct FrameBuffer *src=NULL; struct FrameBuffer *dst=NULL; struct FrameBufferMatrix m; unsigned char sflg=0; float wdt=-1; float hgt=-1; float sf=1.0; 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,"wdt",'f',&wdt); OptionAdd(&opt,"hgt",'f',&hgt); OptionAdd(&opt,"sf",'f',&sf); 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; while ((src=FrameBufferLoadPPMX(fp)) !=NULL) { if (dst==NULL) { if ((wdt==-1) && (hgt==-1)) { wdt=src->wdt*sf; hgt=src->hgt*sf; } else if (wdt==-1) { wdt=src->wdt*hgt/src->hgt; } else if (hgt==-1) { hgt=src->hgt*wdt/src->wdt; } if ((wdt==0) || (hgt==0)) { fprintf(stderr,"Invalid image size.\n"); exit(-1); } dst=FrameBufferMake(NULL,wdt,hgt,src->depth); } if ((wdt==src->wdt) && (hgt==src->hgt)) FrameBufferImage(dst,NULL,src,0xf0,0,0,0,NULL); else { float xsc=wdt/src->wdt; float ysc=hgt/src->hgt; m.a=xsc; m.b=0; m.c=0; m.d=ysc; FrameBufferImage(dst,&m,src,0xf0,0,0,sflg,NULL); } FrameBufferSavePPMX(dst,stdout); FrameBufferFree(src); src=NULL; } if (arg<argc) fclose(fp); 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=FrameBufferLoadPPMX(fp)) !=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[]) { #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; }