This is plsvpa.c in view mode; [Download] [Up]
/* Sets the edges of the viewport to the specified absolute */
/* coordinates (mm), measured with respect to the current subpage */
/* boundaries */
#include "plplot.h"
void plsvpa(xmin,xmax,ymin,ymax)
double xmin, xmax, ymin, ymax;
{
int nx, ny, cs;
double sxmin, symin;
double spdxmi, spdxma, spdymi, spdyma;
double vpdxmi, vpdxma, vpdymi, vpdyma;
int level;
glev(&level);
if (level<1) plexit("Please call PLSTAR before calling plsvpa.");
if((xmin>=xmax)||(ymin>=ymax)||(xmin<0.)||(ymin<0.))
plexit("Invalid limits in plsvpa.");
gsub(&nx,&ny,&cs);
if ((cs<=0) || (cs>(nx*ny)))
plexit("Please call pladv or plenv to go to a subpage.");
gspd(&spdxmi,&spdxma,&spdymi,&spdyma);
sxmin = dcmmx(spdxmi);
symin = dcmmy(spdymi);
vpdxmi = mmdcx((double)(sxmin+xmin));
vpdxma = mmdcx((double)(sxmin+xmax));
vpdymi = mmdcy((double)(symin+ymin));
vpdyma = mmdcy((double)(symin+ymax));
svpd(vpdxmi,vpdxma,vpdymi,vpdyma);
svpp(dcpcx(vpdxmi),dcpcx(vpdxma),dcpcy(vpdymi),dcpcy(vpdyma));
sclp(dcpcx(vpdxmi),dcpcx(vpdxma),dcpcy(vpdymi),dcpcy(vpdyma));
slev(2);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.