ftp.nice.ch/pub/next/unix/developer/plplot.3.0.s.tar.gz#/plplot/src/plsvpa.c

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.