Exemplo n.º 1
0
/**
 *
 * 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;
}
Exemplo n.º 2
0
/*
 *
 * 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;
}