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: GPLC1 C SOURCE: 92840 - 18157 C RELOC: 92840 - 16021 C C C CC*********************************************************** SUBROUTINE GPLC1(IGCB,ITEXT,X1,Y1,DELTX,DELTY,LORG) +,92840-16021 REV.2013 790904 C************************************************************** C GPLC1 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 DX = DISTANCE THE CP MUST BE MOVED IN THE X DIRECTION TO ACCOUNT C FOR THE CURRENT LINE LENGTH (BASED ON LORG ONLY, THE LDIR C WAS ALREADY TAKEN INTO ACCOUNT BEFORE IT WAS PASSED IN). C DY = DISTANCE THE CP MUST BE MOVED IN THE Y DIRECTION TO ACCOUNT C FOR THE CURRENT LINE LENGTH (BASED ON LORG ONLY). 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 C CHIGH = CHARACTER HEIGHT (IN CURRENT UNITS). C C HOW TO CALCULATE CX,CY,DX, AND DY. C C CX = CFACT*CHIGH*SIN(THETA) C CY = -CFACT*CHIGH*COS(THETA) C C WHERE: C C CFACT= 0.0 IF LORG=1,4, OR 7 C = 0.5 IF LORG=2,5, OR 8 C = 1.0 IF LORG=3,6, OR 9 C CHIGH= CHARACTER HEIGHT C THETA= CURRENT LDIR ANGLE. C C C DX = -DFACT*DELTX C DY = -DFACT*DELTY C C WHERE: C C DFACT= 0.0 IF LORG=1,2, OR 3 C = 0.5 IF LORG=4,5, OR 6 C = 1.0 IF LORG=7,8, OR 9 C DELTX= TEXT LENGTH IN X DIRECTION (PASSED IN) C DELTY= TEXT LENGTH IN Y DIRECTION (PASSED IN) C C*************************************************************** INTEGER IGCB,ITEXT(1),LORG REAL X1,Y1,DELTX,DELTY C C**************************************************************** C IMPLEMENT A STUB. C D LU=LOGLU(IDUMY) D WRITE(LU,1005) D1005 FORMAT(/"GPLC1: ENTERING A STUB.") C********************************************************** C GET THE LORG AND LDIR VALUES. C CALL GCBIM(21,1,LORG,0,1) CALL GCBIM(22,1,THETA,0,1) C**************************************************************** C GET THE SOFTWARE OR HARDWARE CELL SIZE IN CURRENT UNITS. C CALL GKAR(IGCB,CWIDE,CHIGH) C**************************************************************** C SET THE CFACT VALUE. C CFACT=FLOAT(MOD(LORG-1,3))/2.0 DFACT=FLOAT((LORG-1)/3)/2.0 C**************************************************************** C CALCULATE HOW FAR TO MOVE THE VALUES. C CX=CFACT*CHIGH*SIN(THETA) CY=-CFACT*CHIGH*COS(THETA) C DX=-DFACT*DELTX DY=-DFACT*DELTY C***************************************************************** C MOVE THE CP THE CALCULATED AMOUNTS. C CALL MOVE(IGCB,X1+DX+CX,Y1+DY+CY) RETURN END