home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 344b.lha / plplot_v2.6 / src / plsvpa.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-01-27  |  1.2 KB  |  41 lines

  1. /* Sets the edges of the viewport to the specified absolute          */
  2. /* coordinates (mm), measured with respect to the current subpage    */
  3. /* boundaries                                                        */
  4.  
  5. #include "plplot.h"
  6.  
  7. void plsvpa(xmin,xmax,ymin,ymax)
  8. PLFLT xmin, xmax, ymin, ymax;
  9. {
  10.  
  11.     PLINT nx, ny, cs;
  12.     PLFLT sxmin, symin;
  13.     PLFLT spdxmi, spdxma, spdymi, spdyma;
  14.     PLFLT vpdxmi, vpdxma, vpdymi, vpdyma;
  15.     PLINT level;
  16.  
  17.     glev(&level);
  18.     if (level<1) plexit("Please call PLSTAR before calling plsvpa.");
  19.     if((xmin>=xmax)||(ymin>=ymax)||(xmin<0.)||(ymin<0.))
  20.         plexit("Invalid limits in plsvpa.");
  21.  
  22.     gsub(&nx,&ny,&cs);
  23.     if ((cs<=0) || (cs>(nx*ny)))
  24.         plexit("Please call pladv or plenv to go to a subpage.");
  25.  
  26.     gspd(&spdxmi,&spdxma,&spdymi,&spdyma);
  27.     sxmin = dcmmx(spdxmi);
  28.     symin = dcmmy(spdymi);
  29.  
  30.     vpdxmi = mmdcx((PLFLT)(sxmin+xmin));
  31.     vpdxma = mmdcx((PLFLT)(sxmin+xmax));
  32.     vpdymi = mmdcy((PLFLT)(symin+ymin));
  33.     vpdyma = mmdcy((PLFLT)(symin+ymax));
  34.  
  35.     svpd(vpdxmi,vpdxma,vpdymi,vpdyma);
  36.     svpp(dcpcx(vpdxmi),dcpcx(vpdxma),dcpcy(vpdymi),dcpcy(vpdyma));
  37.     sclp(dcpcx(vpdxmi),dcpcx(vpdxma),dcpcy(vpdymi),dcpcy(vpdyma));
  38.     slev(2);
  39. }
  40.  
  41.