home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / fchek284.zip / test / t208a.f < prev    next >
Text File  |  1994-11-06  |  4KB  |  115 lines

  1.       SUBROUTINE  DDIAPA (IX,IY)
  2. C     (Add to Path)
  3. C     Add the point (IX,IY) to the current path, which is assumed
  4. C     to have  already been  started by  a call  to DDIBPA.   The
  5. C     current point and visibility are updated in COMMON.
  6. C     (27-May-1991)
  7. C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  8. C
  9. C     EXTERNAL REFERENCES (FUNCTION,SUBROUTINE,COMMON)
  10. C
  11. C     EXTERNAL REFS       TKIOLL,      TKIOWB,      TKIOWH,      TKIOWN
  12. C
  13.       INTEGER             TKIOLL
  14. C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15. C
  16. C     NON-COMMON VARIABLES
  17. C
  18. C     SETS                BLANK
  19. C
  20.       INTEGER             BLANK,       DUMMY,       IX,          IY
  21. C
  22. C-----------------------------------------------------------------------
  23. C                         P o s t S c r i p t
  24. C           D i s p l a y   D e v i c e   I n t e r f a c e
  25. C                       C O M M O N   B l o c k
  26. C
  27. C     DSSIZE                   display surface size in cm
  28. C     IMAGE                    image transformation in effect
  29. C     (LASTX,LASTY,VILAST)     last position and visibility of pen
  30. C     LINEIN                   line intensity (0..1 scale)
  31. C     LINEWT                   line weight (1..25 scale)
  32. C     MAGFAC                   resolution magnification factor
  33. C     (MOVEX,MOVEY)            position of first point in path
  34. C     NPATH                    number of line segments in current page
  35. C     PLSTEP                   plotter step size in cm
  36. C     (PSXOFF,PSYOFF)          image offset in PostScript units (bp)
  37. C     ROTATE                   plot frame is rotated
  38. C     (SX,SY)                  scale factors (unit square to plot steps)
  39. C     TIMAGE(*,*)              image transformation matrix
  40. C     (XMAX,YMAX,ZMAX)         normalized device space extents
  41. C     (MAXX,MAXY,MINX,MINY)    actual coordinate limits reached
  42. C
  43. C-----------------------------------------------------------------------
  44.       INTEGER             LASTX,       LASTY,       LINEWT,      MAGFAC
  45.       INTEGER             MAXX,        MAXY,        MINX,        MINY
  46.       INTEGER             MOVEX,       MOVEY,       NPATH,       PSXOFF
  47.       INTEGER             PSYOFF
  48. C
  49.       LOGICAL             DVINIT,      IMAGE,       ROTATE,      VILAST
  50. C
  51.       REAL                DSSIZE,      LINEIN,      PLSTEP,      SX
  52.       REAL                SY,          TIMAGE,      XMAX,        YMAX
  53.       REAL                ZMAX
  54. C
  55.       COMMON / DDI01  /   DSSIZE,      LINEIN,      PLSTEP,      SX
  56.       COMMON / DDI01  /   SY,          TIMAGE(4,4), XMAX,        YMAX
  57.       COMMON / DDI01  /   ZMAX,        LASTX,       LASTY,       LINEWT
  58.       COMMON / DDI01  /   MAGFAC,      MAXX,        MAXY,        MINX
  59.       COMMON / DDI01  /   MINY,        MOVEX,       MOVEY,       NPATH
  60.       COMMON / DDI01  /   PSXOFF,      PSYOFF,      DVINIT,      IMAGE
  61.       COMMON / DDI01  /   ROTATE,      VILAST
  62. C
  63. C
  64.       DATA                BLANK     / 32 /
  65. C
  66. C     We can generate an  entry of size "-ddddd -ddddd R "; try to
  67. C     keep line lengths under 80 characters.
  68. C
  69.       IF (TKIOLL(DUMMY) .GT. 64) CALL TKIOWH (2H$N,2)
  70. C
  71. C     Use relative coordinates for lines to reduce the  number of
  72. C     bytes in the  verbose  PostScript  command language.   This
  73. C     shortens the plot file by 5 to 10 percent.
  74. C
  75. C     We optimize output into 3 different forms:
  76. C
  77. C     # # R   (relative lineto)
  78. C     # X     (relative lineto with delta-y = 0)
  79. C     # Y     (relative lineto with delta-x = 0)
  80. C
  81. C     The  latter two cases  occur frequently enough  to be worth
  82. C     taking advantage of  to compress the  output and reduce the
  83. C     parsing  time.    We cannot  discard zero length  segments,
  84. C     however, because that  would discard single  points from  a
  85. C     point plot.
  86. C
  87.       IF (IX .EQ. LASTX) GO TO 10
  88.       IF (IY .EQ. LASTY) GO TO 20
  89.       CALL TKIOWN (IX-LASTX)
  90.       CALL TKIOWB (BLANK)
  91.       CALL TKIOWN (IY-LASTY)
  92.       CALL TKIOWH (3H R ,3)
  93.       GO TO 30
  94.    10 CALL TKIOWN (IY-LASTY)
  95.       CALL TKIOWH (3H Y ,3)
  96.       GO TO 30
  97.    20 CALL TKIOWN (IX-LASTX)
  98.       CALL TKIOWH (3H X ,3)
  99.    30 NPATH = NPATH + 1
  100.       LASTX = IX
  101.       LASTY = IY
  102.       VILAST = .TRUE.
  103.       MAXX = MAX0(MAXX,IX)
  104.       MINX = MIN0(MINX,IX)
  105.       MAXY = MAX0(MAXY,IY)
  106.       MINY = MIN0(MINY,IY)
  107. C
  108. C     Insert a  line break  periodically to  prevent  excessively
  109. C     long lines.
  110. C
  111. C     IF (MOD(NPATH,10) .EQ. 0) CALL TKIOWH (2H$N,2)
  112. C
  113.    40 RETURN
  114.       END
  115.