INTERFACE TO SUBROUTINE J06YCW [C] (X,Y,N,LCOL,ICOL,ISTL) REAL*4 X [REFERENCE] REAL*4 Y [REFERENCE] INTEGER*4 N [REFERENCE] LOGICAL LCOL [REFERENCE] INTEGER*4 ICOL [REFERENCE] INTEGER*4 ISTL [REFERENCE] END SUBROUTINE J06YCX C NAG GRAPHICS LIBRARY, MARK 4 RELEASE. NAG COPYRIGHT 1994. C C NAG Graphical Interface - Inventor - double to single precision C --------------------------------------------------------------- C C Flush the polyline buffer C C .. Parameters .. INTEGER NP PARAMETER (NP=50) C .. Scalars in Common .. INTEGER NGCOL, NGFONT, NGFSTL, NGIHAT, NGLSTL, NPTS LOGICAL LCOLOR C .. Arrays in Common .. DOUBLE PRECISION COLB(2,17), COLG(2,17), COLR(2,17), XPTS(NP), * YPTS(NP) C .. Local Scalars .. DOUBLE PRECISION RX1, RX2, RXIP, RY1, RY2, RYIP, SML, X1, X2, Y1, * Y2 INTEGER I, IP LOGICAL LDRAW C .. Local Arrays .. REAL PTSX(NP), PTSY(NP) C .. External Subroutines .. EXTERNAL J06YCB, J06YCW C .. External Functions .. DOUBLE PRECISION J06YAW, J06YAX, X02AJF EXTERNAL J06YAW, J06YAX, X02AJF C .. Intrinsic Functions .. INTRINSIC ABS, REAL C .. Common blocks .. COMMON /BJ06YA/NGCOL, NGLSTL, NGFONT, NGFSTL, NGIHAT COMMON /VJ06XA/XPTS, YPTS, NPTS COMMON /YJ06XA/COLR, COLG, COLB, LCOLOR C .. Save statement .. SAVE /BJ06YA/, /VJ06XA/, /YJ06XA/ C .. Executable Statements .. C IF (NPTS.NE.0) THEN C C Loop over the line segments C SML = X02AJF() IP = 0 DO 20 I = 2, NPTS X1 = XPTS(I-1) Y1 = YPTS(I-1) X2 = XPTS(I) Y2 = YPTS(I) CALL J06YCB(X1,Y1,X2,Y2,LDRAW) IF (LDRAW) THEN RX1 = J06YAX(X1) RY1 = J06YAW(Y1) RX2 = J06YAX(X2) RY2 = J06YAW(Y2) IF (IP.EQ.0) THEN C C Start the polyline C IP = IP + 1 ELSE IF (ABS(RXIP-RX1).LE.SML .AND. * ABS(RYIP-RY1).LE.SML) THEN C C Continue the polyline C IP = IP + 1 ELSE C C End the polyline and start a new one C CALL J06YCW(PTSX,PTSY,IP,LCOLOR,NGCOL,NGLSTL) IP = 1 END IF END IF C C First point of polyline C IF (IP.EQ.1) THEN PTSX(IP) = REAL(RX1) PTSY(IP) = REAL(RY1) IP = IP + 1 END IF C C Next point of polyline C PTSX(IP) = REAL(RX2) PTSY(IP) = REAL(RY2) RXIP = RX2 RYIP = RY2 ELSE C C End the current polyline if there is one C IF (IP.GT.0) THEN CALL J06YCW(PTSX,PTSY,IP,LCOLOR,NGCOL,NGLSTL) IP = 0 END IF END IF 20 CONTINUE NPTS = 0 C C End the last polyline if there is one C IF (IP.GT.0) THEN CALL J06YCW(PTSX,PTSY,IP,LCOLOR,NGCOL,NGLSTL) END IF END IF C RETURN END