1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
/*
* TransFig: Facility for Translating Fig code
* Parts Copyright (c) 1989-2002 by Brian V. Smith
*
* Any party obtaining a copy of these files is granted, free of charge, a
* full and unrestricted irrevocable, world-wide, paid up, royalty-free,
* nonexclusive right and license to deal in this software and
* documentation files (the "Software"), including without limitation the
* rights to use, copy, modify, merge, publish and/or distribute copies of
* the Software, and to permit persons who receive copies from any such
* party to do so, with the only requirement being that this copyright
* notice remain intact.
*
*/
#include "fig2dev.h"
#include "object.h"
extern int _read_pcx();
/* return codes: 1 : success
0 : invalid file
*/
int
read_tif(filename,filetype,pic,llx,lly)
char *filename;
int filetype;
F_pic *pic;
int *llx, *lly;
{
char buf[2*PATH_MAX+40],pcxname[PATH_MAX];
FILE *tiftopcx;
int stat;
*llx = *lly = 0;
/* output PostScript comment */
fprintf(tfp, "%% Originally from a TIFF File: %s\n\n", pic->file);
/* make name for temp output file */
sprintf(pcxname, "%s/%s%06d.pix", TMPDIR, "xfig-pcx", getpid());
/* make command to convert tif to pnm then to pcx into temp file */
sprintf(buf, "tifftopnm %s 2> /dev/null | ppmtopcx > %s 2> /dev/null",
filename, pcxname);
if ((tiftopcx = popen(buf,"w" )) == 0) {
fprintf(stderr,"Cannot open pipe to tifftopnm or ppmtopcx\n");
/* remove temp file */
unlink(pcxname);
return 0;
}
/* close pipe */
pclose(tiftopcx);
if ((tiftopcx = fopen(pcxname, "rb")) == NULL) {
fprintf(stderr,"Can't open temp output file\n");
/* remove temp file */
unlink(pcxname);
return 0;
}
/* now call _read_pcx to read the pcx file */
stat = _read_pcx(tiftopcx, pic);
pic->transp = -1;
/* close the temp file */
fclose(tiftopcx);
/* and remove it */
unlink(pcxname);
return stat;
}
|