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: CLPON\CLPOF COMMANDS C SOURCE: 92840 - 18012 C RELOC: 92840 - 16001 C C C CC*********************************************************** C SUBROUTINE XCLPN(IN,IGCB), 92840-16001 REV.1840 780811 C CCCC C C IN=1 INDICATES CLPON CALL IN=2 INDICATES CLPOF CALL EM1840 C DIMENSION TFORM(10),ICODE(3) EM1840 C ICODE WILL CONTAIN THE INDICES INTO IGTBL EM1840 C TFORM WILL RECIEVE THE INFORMATION REQUESTED FROM THE GCB EM1840 C REAL XPHYS,YPHYS EM1840 C XPHYS AND YPHYS WILL RECIEVE THE CALCULATED LOGICAL POSITION EM1840 C EQUIVALENCE (TFORM(1),CPX),(TFORM(2),CPY),(TFORM(3),A), EM1840 1 (TFORM(4),B),(TFORM(5),C),(TFORM(6),D), EM1840 2 (TFORM(7),LOWRX),(TFORM(8),LOWRY), EM1840 3 (TFORM(9),UPPRX),(TFORM(10),UPPRY) EM1840 C CPX,CPY - THE CURRENT PEN POSITION IN MACHINE UNITS FROM GCB EM1840 C A,B,C,D - THE MU/NDC OR MU/WC TRANSFORM COEFFICIENTS FROM GCB EM1840 C C THIS CALL ESTABLISHES AN ADDRESS LINK BETWEEN THE GRAPHICS C PACKAGE AND THE CURRENT GCB AND ALSO CHECKS FOR A C SUSPENDED GCB. ISUSP= 0 CALL GCBIM(99,1,IGCB,ISUSP) IF(ISUSP.NE.0)RETURN C GO TO(100,200),IN C C C TURN ON SOFT CLIPPING BY SETTING BIT 2 OF STATUS WORD = 1 100 CALL GRSTS(2,77773B,4) RETURN C C C C TURN OFF SOFT CLIPPING BY SETTING BIT 2 OF STATUS WORD = 0 EM1840 200 CALL GRSTS(2,77773B,0) C C IF THE CURRENT POSITION IS OUTSIDE SOFT CLIPPING BOUNDARIES, EM1840 C THE PHYSICAL PEN AND THE CP MAY NOT AGREE, SO MOVE THE EM1840 C PHYSICAL PEN TO AGREE WITH THE CP IN THIS CASE. EM1840 C SET THE INDICES TO THE GCB POINTER TABLE AND REQUEST THE DATA EM1840 C POINTER 18 IS TO THE LOGICAL PEN (I.E. CP) INDEX. FUNCTION EM1840 C IADCD RETURNS POINTER TO MU/NDC OR MU/WC TRANSFORMS, EM1840 C DEPENDING ON CURRENT MODE, GDU OR UDU. POINTER 10 IS TO EM1840 C THE SOFT CLIPPING BOUNDARIES INDEX. EM1840 ICODE(3)=10 EM1840 ICODE(2)=IADCD(DUMMY) EM1840 ICODE(1)=18 EM1840 CALL GCBIM(ICODE,3,TFORM,0,1) EM1840 C C CHECK TO SEE IF THE CURRENT PEN POSITION IS OUTSIDE THE SOFT EM1840 C CLIPPING BOUNDARIES. IF IT ISN'T THE PHYSICAL PEN POSITION EM1840 C SHOULD BE FINE AS IS, SO DO NOTHING MORE. EM1840 C C IF IT IS OUTSIDE, MAKE THE MOVE. EM1840 IF (CPX.LT.LOWRX) GO TO 300 EM1840 IF (CPX.GT.UPPRX) GO TO 300 EM1840 IF (CPY.LT.LOWRY) GO TO 300 EM1840 IF (CPY.GT.UPPRY) GO TO 300 EM1840 C C IT IS INSIDE SO NO MOVE IS NECESSARY EM1840 GO TO 500 EM1840 C C TRANSFORM FROM MACHINE UNITS TO NDC OR WC UNITS EM1840 300 XPHYS = (CPX-B)/A EM1840 YPHYS = (CPY-D)/C EM1840 C C MOVE PEN TO CALCULATED POSITION SO LOGICAL AND PHYSICAL MATCH EM1840 CALL MOVE(IGCB,XPHYS,YPHYS) EM1840 C 500 RETURN EM1840 END END$