FTN4,L C C C 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: GPLC2 C SOURCE: 92840 - 18158 C RELOC: 92840 - 16021 C C C CC*********************************************************** SUBROUTINE GPLC2(IGCB,INFO,XMTRX,X1,Y1,DELTX,DELTY,LORG,NOCARR, +IBUFR),92840-16021 REV.2013 791129 C************************************************************** C GPLC2 ADJUSTS THE CP AT (X1,Y1) IN ORDER TO IMPLEMENT C THE LORG CAPABILITY. BASICALLY, IT MOVES THE CP THE PROPER C AMOUNT SO THAT THE STRING IS PLACED PROPERLY FOR LEFT OR C RIGHT JUSTIFICATION, AND ALSO BOTTOM, CENTER, OR TOP C JUSTIFICATION. C C THE ALGORITHM WORKS LIKE THIS. FIRST OF ALL, THE CHARACTER HEIGHT C IS FOUND. THEN WE CALCULATE THE FOLLOWING VALUES: C C CX = DISTANCE THE CP MUST BE MOVED IN THE X DIRECTION TO ACCOUNT C FOR THE CURRENT CHARACTER HEIGHT (REMEMBERING LORG AND LDIR) C CY = DISTANCE THE CP MUST BE MOVED IN THE Y DIRECTION TO ACCOUNT C FOR THE CURRENT CHARACTER HEIGHT (REMEMBERING LORG AND LDIR) C C C (X1,Y1) = CURRENT POSITION C DELTX = AMOUNT THE CURRENT STRING WOULD MOVE THE CP IN THE C X-DIRECTION. C DELTY = AMOUNT THE CURRENT STRING WOULD MOVE THE CP IN THE C Y-DIRECTION. C LORG = CURRENT LORG VALUE (1 THROUGH 9). C NOCARR = .TRUE. IFF THE CR-LF SHOULD BE SUPPRESSED. C*************************************************************** INTEGER IGCB,INFO(1),ITEXT(1),LORG,IBUFR(1) LOGICAL NOCARR,GWC REAL XMTRX(2,2),X1,Y1,DELTX,DELTY C C**************************************************************** C IMPLEMENT A STUB. C D LU=LOGLU(IDUMY) D WRITE(LU,1005) D1005 FORMAT(/"GPLC2: ENTERING A STUB.") C************************************************************* C BRANCH TO BELOW IF THERE'S NO CR-LF. C OTHERWISE, BRING THE CP BACK AND SPACE DOWN ONE CHARACTER CELL C FOR THE CR-LF. C GET THE LDIR, AND DON'T CONVERT IT IF YOURE DOING WC CHARACTERS. C IF (NOCARR) GO TO 1000 C CALL GCBIM(35,1,XLDIR,0,1) IF (GWC(IGCB)) GO TO 500 CALL GANG3(IGCB,XLDIR,XLDIRM,IBUFR) CALL GANG4(IGCB,XLDIRM,XLDIR,IBUFR) C 500 CALL GKAR(IGCB,WIDTH,HEIGHT) X=X1+HEIGHT*SIN(XLDIR) Y=Y1-HEIGHT*COS(XLDIR) CALL MOVE(IGCB,X,Y) RETURN C**************************************************************** C NO CR-LF. CALCULATE THE NEW POSITION FOR THE CP, AND MOVE THERE. C C IF LORG=1,2, OR 3, NEW POSITION IS TO RIGHT OF (X1,Y1). FACTR=1.0 C =4,5, OR 6, NEW POSITION IS ON TOP OF (X1,Y1). FACTR=0.0 C =7,8, OR 9, NEW POSITION IS TO LEFT OF (X1,Y1). FACTR=-1.0 C 1000 CONTINUE NUMB=(LORG-1)/3 FACTR=FLOAT(1-NUMB) X=X1+FACTR*DELTX Y=Y1+FACTR*DELTY CALL MOVE(IGCB,X,Y) RETURN END