INTERFACE TO SUBROUTINE J06YNZ [C] (X,Y,N,LCOL,NCOL,NSTL,IND, * SCALE) REAL*4 X [REFERENCE] REAL*4 Y [REFERENCE] INTEGER*4 N [REFERENCE] LOGICAL LCOL [REFERENCE] INTEGER*4 NCOL [REFERENCE] INTEGER*4 NSTL [REFERENCE] INTEGER*4 IND [REFERENCE] REAL*4 SCALE [REFERENCE] END SUBROUTINE J06YNF(PX,PY,N) C NAG GRAPHICS LIBRARY, MARK 4 RELEASE. NAG COPYRIGHT 1994. C C NAG Graphical Interface - Inventor - double to single precision C --------------------------------------------------------------- C C This routine fills the area defined by the polygon C (PX(1),PY(1)),.. (PX(N),PY(N)). C C .. Parameters .. INTEGER NCORD PARAMETER (NCORD=100) C .. Scalar Arguments .. INTEGER N C .. Array Arguments .. DOUBLE PRECISION PX(N), PY(N) C .. Scalars in Common .. DOUBLE PRECISION DENSE, SHSF, V1, V2, V3, V4, ZGXHIH, ZGXLOW, * ZGYHIH, ZGYLOW INTEGER ISHADE, NDUMMY, NGCOL, NGFCOL, NGFONT, NGFSTL, * NGIBR, NGIHAT, NGLSTL LOGICAL LCOL, LCOLOR, LHOL C .. Arrays in Common .. DOUBLE PRECISION COLB(2,17), COLG(2,17), COLR(2,17) INTEGER NGBR(2,16,3) C .. Local Scalars .. REAL SCALEX, SCALEY, XMAX, XMIN, YMAX, YMIN INTEGER I, IPALET, NERR LOGICAL BOUND, PREMSG CHARACTER*80 OUTREC C .. Local Arrays .. REAL PTSX(NCORD), PTSY(NCORD) C .. External Subroutines .. EXTERNAL J06VAF, J06YNZ, J06ZEF, X04BAF C .. External Functions .. DOUBLE PRECISION J06YAW, J06YAX EXTERNAL J06YAW, J06YAX C .. Intrinsic Functions .. INTRINSIC ABS, REAL C .. Common blocks .. COMMON /AJ06WA/V1, V2, V3, V4 COMMON /AJ06WB/ZGXLOW, ZGXHIH, ZGYLOW, ZGYHIH COMMON /BJ06YA/NGCOL, NGLSTL, NGFONT, NGFSTL, NGIHAT COMMON /CJ06YA/NGFCOL COMMON /DJ06XA/SHSF, DENSE, ISHADE, NDUMMY COMMON /EJ06XA/NGBR, NGIBR, LHOL, LCOL COMMON /YJ06XA/COLR, COLG, COLB, LCOLOR C .. Save statement .. SAVE /AJ06WA/, /AJ06WB/, /BJ06YA/, /CJ06YA/, * /DJ06XA/, /EJ06XA/, /YJ06XA/, PREMSG C .. Data statements .. DATA PREMSG/.FALSE./ C .. Executable Statements .. C IF (N.GE.3 .AND. N.LE.NCORD) THEN C IF (NGIBR.GT.0) THEN C C Determine current palette C IPALET = ISHADE + 1 IF (IPALET.EQ.1) THEN IF (NGFSTL.EQ.0 .OR. NGFSTL.EQ.2) THEN C C Vertices for solid Inventor area fill C DO 20 I = 1, N PTSX(I) = REAL(J06YAX(PX(I))) PTSY(I) = REAL(J06YAW(PY(I))) 20 CONTINUE C C Size of polygon is required for pattern fill only C IF (NGFSTL.EQ.2) THEN XMIN = PTSX(1) XMAX = XMIN DO 40 I = 2, N IF (XMIN.GT.PTSX(I)) XMIN = PTSX(I) IF (XMAX.LT.PTSX(I)) XMAX = PTSX(I) 40 CONTINUE SCALEX = XMAX - XMIN YMIN = PTSY(1) YMAX = YMIN DO 60 I = 2, N IF (YMIN.GT.PTSY(I)) YMIN = PTSY(I) IF (YMAX.LT.PTSY(I)) YMAX = PTSY(I) 60 CONTINUE SCALEY = YMAX - YMIN ELSE SCALEX = 1.0 SCALEY = 1.0 END IF C C Inventor area fill C Use scale factors to ensure C the correct size of the pattern fill C SCALEX = SCALEX/ABS(REAL(J06YAX(ZGXHIH-ZGXLOW)/(V2- * V1))) SCALEY = SCALEY/ABS(REAL(J06YAW(ZGYHIH-ZGYLOW)/(V4- * V3))) IF (SCALEX.GT.SCALEY) THEN CALL J06YNZ(PTSX,PTSY,N,LCOLOR,NGFCOL,NGFSTL, * NGIHAT,SCALEX) ELSE CALL J06YNZ(PTSX,PTSY,N,LCOLOR,NGFCOL,NGFSTL, * NGIHAT,SCALEY) END IF ELSE C C Inventor hatched or pattern area fill not implemented C IF ( .NOT. PREMSG) THEN CALL J06VAF(0,NERR) WRITE (OUTREC,FMT=99999) CALL X04BAF(NERR,OUTREC) WRITE (OUTREC,FMT=99997) CALL X04BAF(NERR,OUTREC) PREMSG = .TRUE. END IF END IF ELSE IF (IPALET.EQ.2) THEN C C Simulate requested area fill C (NAG area fill) C BOUND = .FALSE. CALL J06ZEF(PX,PY,N,BOUND) END IF END IF ELSE CALL J06VAF(0,NERR) WRITE (OUTREC,FMT=99998) CALL X04BAF(NERR,OUTREC) WRITE (OUTREC,FMT=99997) CALL X04BAF(NERR,OUTREC) END IF RETURN C 99999 FORMAT (' Warning - Inventor interface does not support package ', * 'hatch fill') 99998 FORMAT (' Warning - Invalid number of polygon co-ordinates provi', * 'ded') 99997 FORMAT (' ...Call of J06YNF ignored') END