This is iff.c in view mode; [Download] [Up]
/* IFF file driver. Supplied by Tomas Rokicki (Radical Eye Software) */
#include "plplot.h"
#include <stdio.h>
static FILE *OutFile=NULL;
static int orient=0, setup=0, curwid;
static int fileopen;
static char line[80];
static int xwidth, ywidth, xsubw, ysubw;
static int vxwidth, vywidth;
static double xdotspi, ydotspi;
void iffsetup(xdpi, ydpi, xwid, ywid)
int xwid, ywid;
double xdpi, ydpi;
{
xdotspi = xdpi;
ydotspi = ydpi;
xwidth = xwid;
ywidth = ywid;
setup = 1;
}
void ifforient(ori)
int ori;
{
orient = ori;
}
void iffselect(file)
FILE *file;
{
OutFile = file;
fileopen = 0;
}
static int getint(s)
char *s;
{
int m;
while(1) {
printf(s);
fgets(line,sizeof(line),stdin);
if(sscanf(line,"%d",&m) == 1)
return(m);
printf("No value or value out of range; please try again\n");
}
}
static double getflt(s)
char *s;
{
double m;
while(1) {
printf(s);
fgets(line,sizeof(line),stdin);
if(sscanf(line,"%f",&m) == 1)
return(m);
printf("No value or value out of range; please try again\n");
}
}
void iffopenfile()
{
while(!OutFile) {
printf("Enter graphics file name. ");
fgets(line,sizeof(line),stdin);
line[strlen(line)-1] = '\0';
if (!(OutFile = fopen(line,"w")))
fprintf(stderr,"Can't open %s.\n",line);
else
fileopen=1;
}
}
void iffinit()
{
int mapinit();
if(!setup) {
xdotspi = getflt("Enter desired horizontal IFF resolution (dpi): ");
ydotspi = getflt("Enter desired vertical IFF resolution (dpi): ");
xwidth = getint("Enter desired horizontal IFF size in pixels : ");
ywidth = getint("Enter desired vertical IFF size in pixels : ");
}
setup = 0;
vxwidth = xwidth*25;
vywidth = ywidth*25;
if(orient) {
setpxl((double)(ydotspi*25/25.4), (double)(xdotspi*25/25.4));
setphy(0,vywidth,0,vxwidth);
}
else {
setpxl((double)(xdotspi*25./25.4), (double)(ydotspi*25/25.4));
setphy(0,vxwidth,0,vywidth);
}
xsubw = xwidth - 2;
ysubw = ywidth - 2;
scol(1); /* set pen color (ignored for this driver) */
swid(1); /* set default pen width */
smod(0); /* set mode (not an interactive device) */
/* Allocate bitmap and initialize for line drawing */
if(mapinit(xwidth, ywidth)) {
plexit("");
}
iffopenfile();
}
/* Set IFF to test mode */
void ifftext()
{
/* do nothing here */
}
/* Set IFF to graphics mode */
void iffgraph()
{
/* Do nothing here */
}
/* Print out page */
void iffclear()
{
void iffwritefile();
iffwritefile((int)xdotspi,(int)ydotspi,OutFile);
}
void iffpage()
{
void mapclear();
mapclear();
}
void iffeop()
{
}
void iffwidth(width)
int width;
{
if(width < 1)
curwid = 1;
else if(width > 3)
curwid = 3;
else
curwid = width;
}
/* Change color */
void iffcolor(colour)
int colour;
{
}
void iffline(x1,y1,x2,y2)
int x1, y1, x2, y2;
{
long xn1, yn1, xn2, yn2;
void mapline();
if(orient) {
xn1 = (x1*ysubw)/vywidth;
yn1 = (y1*xsubw)/vxwidth;
xn2 = (x2*ysubw)/vywidth;
yn2 = (y2*xsubw)/vxwidth;
switch(curwid) {
case 3:
mapline(yn1,xn1,yn2,xn2);
case 2:
mapline(yn1+2,xn1+2,yn2+2,xn2+2);
case 1:
default:
mapline(yn1+1,xn1+1,yn2+1,xn2+1);
}
}
else {
xn1 = (x1*xsubw)/vxwidth;
yn1 = (y1*ysubw)/vywidth;
xn2 = (x2*xsubw)/vxwidth;
yn2 = (y2*ysubw)/vywidth;
switch(curwid) {
case 3:
mapline(xn1,ysubw-yn1,xn2,ysubw-yn2);
case 2:
mapline(xn1+2,ysubw-yn1+2,xn2+2,ysubw-yn2+2);
case 1:
default:
mapline(xn1+1,ysubw-yn1+1,xn2+1,ysubw-yn2+1);
}
}
}
/* Reset printer and close file */
void ifftidy()
{
void iffwritefile(), mapfree();
iffwritefile((int)xdotspi,(int)ydotspi,OutFile);
if(fileopen)
fclose(OutFile) ;
mapfree();
OutFile = NULL;
orient = 0;
}
void iffcwin()
{
}
void iffgwin()
{
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.