FTN,L C C C CC************************************************************ C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978. ALL RIGHTS * C RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- * C PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * C OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * CC************************************************************ C C C C NAME: SHOW C SOURCE: 92840 - 18013 C RELOC: 92840 - 16001 C C C CC*********************************************************** C SUBROUTINE XSHOW(IN,IGCB,U3X,U4X,U3Y, 1U4Y), 92840-16001 REV.1819 780515 DIMENSION VAR(4) EQUIVALENCE (VAR,V1X) EQUIVALENCE (VAR(2),V1Y),(VAR(3),V2X),(VAR(4),V2Y) C C C THIS MODULE IS RESPONSIBLE FOR PROCESSING THE AGL COMMAND C SHOW. SHOW ISOTROPICALLY SCALES USER UNITS U3-U4, GETTING C THE BIGGEST POSSIBLE AREA IN THE REGION OF INTEREST (VIEWPORT) C ON WHICH TO MAP USER UNITS. ESSENTIALLY SHOW REDEFINES C USER UNITS U1-U2 AND DISCARDS U3-U4. C CCCC C THIS CALL ESTABLISHES AN ADDRESS LINK BETWEEN THE GRAPGHICS C PACKAGE AND THE CURRENT GCB AND ALSO CHECKS FOR A SUSPENDED GCB. C ISUSP= 0 CALL GCBIM(99,1,IGCB,ISUSP) IF(ISUSP.NE.0)RETURN C C C GET CURRENT SOFT CLIP LIMITS C ICODE = 9 CALL GCBIM(ICODE,1,VAR,0,1) C C LOOK FOR ERRORS C IF(U3X.EQ.U4X.OR.U3Y.EQ.U4Y)GO TO 800 C C COMPUTE THE DELTA X AND Y FOR THE USER UNITS TO DETERMINE C MINIMUM SIDE. C DXUDU = U4X - U3X DYUDU = U4Y - U3Y DXV = V2X - V1X DYV = V2Y - V1Y DX = ABS(DXV/DXUDU) DY = ABS( DYV/DYUDU ) C C NOW DETERMINE WHAT TO ASSIGN TO U1 - U2 C C U1X = U3X U2X = U4X U1Y = U3Y U2Y = U4Y C C 20 IF(DX.EQ.DY)GO TO 120 C C U3,U4 HIT TOP AND BOTTOM EDGES OF VIEW SURFACE C SO ADJUST U3X AND U4X TO OBTAIN MAXIMUM SQUARE. C 100 IF(DX.LT.DY)GO TO 110 TEMP= ( ( ((DXV * DYUDU)/DYV) - DXUDU )/2. ) C C SEE U3,U4 ARE REVERSED C U1X = U3X - TEMP U2X = U4X + TEMP GO TO 120 C C U3,U4 HIT LEFT AND RIGHT SIDES THERE ADJUST U3Y AND U4Y C 110 TEMP = ( (((DYV * DXUDU)/DXV) - DYUDU )/2. ) U1Y = U3Y - TEMP U2Y = U4Y + TEMP C C CALL WINDOW TO COMPUTE TRANSFORMATION CONSTANTS AND C TO ESTABLISH USER UNITS = UDUS C 120 CALL WINDW( IGCB,U1X,U2X,U1Y,U2Y) RETURN 800 CALL PLTER(16) END END$