int main(int argc,char *argv[]) {

  char *txt={"Hello World"};

  int wdt=400;
  int hgt=400;

  struct FrameBuffer *fb=NULL;

  struct FrameBufferFontDB *fontdb=NULL;
  struct FrameBufferFont *font;

  FILE *fontfp=NULL;
  char *fntdbfname=NULL;

  char *fontname="Times-Roman";
  float fontsize=34.0;

  fntdbfname=getenv("FONTDB");
  fontfp=fopen(fntdbfname,"r");
  if (fontfp !=NULL) {
   fontdb=FrameBufferFontDBLoad(fontfp);
   fclose(fontfp);
  }
 
  if (fontdb==NULL) {
   fprintf(stderr,"Could not load fonts.\n");
   exit(-1);
  }

  
  fb=FrameBufferMake("image",wdt,hgt,24);

  font=FrameBufferFontDBFind(fontdb,fontname,fontsize);


  FrameBufferText(fb,NULL,font,20,200,strlen(txt),
                  txt,0xffffffff,0x0f,1,NULL);

  FrameBufferSavePPM(fb,stdout);
  FrameBufferFree(fb);

  FrameBufferFontDBFree(fontdb);

  return 0;
}
Exemple #2
0
int SplotPlotStart(struct Splot *ptr,char *name,
                  float wdt,float hgt,int depth) {

 if (ptr==NULL) return -1;
 if (ptr->ps.ptr !=NULL) 
    PostScriptPlotStart(ptr->ps.ptr);

 if (ptr->fb.ptr !=NULL) {
   struct FrameBuffer *img=NULL;
   img=*(ptr->fb.ptr);
   if (img !=NULL) FrameBufferFree(img);
   img=FrameBufferMake(name,wdt,hgt,depth);
   if (img==NULL) return -1;
   *(ptr->fb.ptr)=img;
   FrameBufferClear(img,ptr->fb.bgcolor,0x0f);
  } 
  return 0;
}
Exemple #3
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;
}
Exemple #4
0
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;
}
Exemple #5
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=NULL;
  FILE *afp=NULL;
  char *name=NULL;
  char *atxt=NULL;
  char *afname=NULL;
  struct FrameBuffer *img=NULL;
  struct FrameBuffer *msk=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,"afname",'t',&afname);

  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;

  if (afname !=NULL) {
    afp=fopen(afname,"r");
     if (afp==NULL) {
      fprintf(stderr,"Error opening alpha file.\n");
      exit(-1);
    }   
  }


  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);

  while ((img=FrameBufferLoadPPM(fp,name)) !=NULL) {

    if (afp !=NULL) msk=FrameBufferLoadPPM(afp,name);

    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 (msk !=NULL) memcpy(img->msk,msk->img,img->wdt*img->hgt);

    FrameBufferSavePNG(img,stdout);
    FrameBufferFree(img);
    if (msk !=NULL) FrameBufferFree(msk);
    img=NULL;
    msk=NULL;
  }


  return 0;
}
Exemple #6
0
int GrplotRawKey(struct Plot *ptr,
               float ox,float oy,float wdt,float hgt,
	       double min,double max,
     	       double tick_major,double tick_minor,
               float major_size,float minor_size,
               float txt_off,float ttl_off,
               int tick_flg,int txt_flg,int ttl_flg,
               int txt_or,int ttl_or,
               int or, 
               int ttl_num,char *ttl_text,
	       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 width,
               int ksze,unsigned char *a,
               unsigned char *r,unsigned char *g,unsigned char *b) {
  int s=0;
  int i=0,j=0;
  int kwdt=0,khgt=0;
  struct FrameBuffer *img=NULL;

  if (ptr==NULL) return -1;
  if (text_box==NULL) return -1;
  if (fntname==NULL) return -1;
  if (fntsze==0) return -1;
  if (ksze==0) return -1;
  
  kwdt=ksze;
  khgt=ksze;

  if (or==0) img=FrameBufferMake(NULL,kwdt,ksze,24);
  else img=FrameBufferMake(NULL,ksze,khgt,24);

  if (img==NULL) return -1;

  if (or==0) {
    for (i=0;i<ksze;i++) {
      for (j=0;j<kwdt;j++) {
        if (a !=NULL) img->msk[(ksze-1-i)*kwdt+j]=a[i];
        if (r !=NULL) img->img[(ksze-1-i)*kwdt+j]=r[i];
        if (g !=NULL) img->img[ksze*kwdt+(ksze-1-i)*kwdt+j]=g[i];
        if (b !=NULL) img->img[2*ksze*kwdt+(ksze-1-i)*kwdt+j]=b[i];
      }
    }
  } else {
    for (i=0;i<ksze;i++) {
      for (j=0;j<khgt;j++) {
        if (a !=NULL) img->msk[j*ksze+i]=a[i];
        if (r !=NULL) img->img[j*ksze+i]=r[i];
        if (g !=NULL) img->img[ksze*khgt+j*ksze+i]=g[i];
        if (b !=NULL) img->img[2*ksze*khgt+j*ksze+i]=b[i];
      }
    }
  }


  s=GrplotRawFitImage(ptr,ox,oy,wdt,hgt,img,mask);
  
  if (s==0) s=GrplotRawPanel(ptr,ox,oy,wdt,hgt,color,mask,width);
  if (or==0) {
    if (s==0) s=GrplotRawYaxis(ptr,ox,oy,wdt,hgt,
                 min,max,tick_major,tick_minor,major_size,minor_size,
                 tick_flg,color,mask,width);
    if ((s==0) && (make_text !=NULL)) 
         s=GrplotRawYaxisLabel(ptr,ox,oy,wdt,hgt,min,max,tick_major,txt_off,
                      txt_flg,txt_or,text_box,boxdata,
		      make_text,textdata,fntname,fntsze,color,mask);
    
  } else {
    if (s==0) s=GrplotRawXaxis(ptr,ox,oy,wdt,hgt,
                 min,max,tick_major,tick_minor,major_size,minor_size,
                 tick_flg,color,mask,width);
    if ((s==0) && (make_text !=NULL))
        s=GrplotRawXaxisLabel(ptr,ox,oy,wdt,hgt,min,max,tick_major,txt_off,
                      txt_flg,txt_or,text_box,boxdata,
                      make_text,textdata,fntname,fntsze,color,mask);
  }

  if ((s==0) && (ttl_text !=NULL) && (ttl_num !=0)) 
      s=GrplotRawYaxisTitle(ptr,ox,oy,wdt,hgt,ttl_off,ttl_flg,ttl_or,
                          text_box,boxdata,
                          ttl_num,ttl_text,fntname,fntsze,color,mask);

  FrameBufferFree(img);
  return s;
}