/** * * Allocate basic colors * * \param dev device * * \ingroup color */ void g2_allocate_basic_colors(int dev) { g2_device *devp; int i; if((devp=g2_get_device_pointer(dev))==NULL) { fprintf(stderr, "g2_allocate_basic_colors: No such device: %d\n", dev); return; } switch(devp->t) { case g2_PD: g2_allocate_basic_colors_pd(devp->d.pd); break; case g2_VD: for(i=0;i<devp->d.vd->N;i++) g2_allocate_basic_colors(devp->d.vd->dix[i]); break; case g2_ILLEGAL: break; case g2_NDEV: break; } __g2_last_device=dev; }
/* * * Attach PS device * */ int g2_open_PS(const char *file_name, enum g2_PS_paper paper, enum g2_PS_orientation orientation) { g2_PS_device *psout=NULL; int pid=-1, i; int vid; FILE *fp; if((fp=fopen(file_name, "w"))==NULL) { fprintf(stderr, "g2_attach_PS: Error! Can not open file '%s'\n", file_name); return -1; } if(g2_PS_dev==NULL) { g2_PS_dev=g2_malloc(sizeof(g2_PS_device)); N_PS=1; /* first PS device */ psout=&g2_PS_dev[N_PS-1]; pid=0; } else { for(i=0; i<N_PS; i++) /* find free place */ if(g2_PS_dev[i].fp==NULL) { psout=&g2_PS_dev[i]; pid=i; break; } if(i==N_PS) { /* free place not avail. */ N_PS++; g2_PS_dev=g2_realloc(g2_PS_dev, sizeof(g2_PS_device)*N_PS); psout=&g2_PS_dev[N_PS-1]; pid=N_PS-1; } } vid = g2_register_physical_device(pid, NULL, g2_DoubleCoor, g2_PS_funix, 1.0, 1.0, 0.0, 0.0); psout->fp=fp; /* init PostScript structures */ psout->paper=paper; psout->orient=orientation; psout->inks=NULL; psout->N_ink=0; psout->pen=0; psout->page_counter=0; g2_PS_write_file_header(psout); g2_PS_set_line_width(pid, NULL, 0.0); g2_PS_set_font_size(pid, NULL, 12.0); /* g2 settings */ g2_allocate_basic_colors(vid); g2_pen(vid, 1); return vid; }