CTITLESAPANN -- SURVEY POINT PLOT ANNOTATION 00000010 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR P.JENNINGS 00000020 CA DESIGNER G.W.ARCENEAUX 00000030 CA LANGUAGE S/370 FORTRAN 00000040 CA WRITTEN 08-06-80 00000050 C REVISED 04-14-81 DJP. - CHANGED PLOTTING CALLS FOR IMPLEMEN- 00000060 C TATION OF THE LOGIC ASSOCIATES SOFTWARE. 00000070 C REVISED 05-21-81 SAS. - ADDED LINE LABEL ANNOTATION. 00000080 C REVISED 10-30-84 REP. - CHANGE LOGICAL ARRAYS TO CHARACTER. 00000081 CA 00000090 CA CALL SAPANN (X, Y, HEIGHT, IPSYM, ITEXT, ANGLE, NTEXT, 00000100 CA LLANNO, LTEXT) 00000110 CA 00000120 CA 00000130 CA INPUT X = X COORDINATE R4 00000140 CA INPUT Y = Y COORDINATE R4 00000150 CA INPUT HEIGHT = CHARACTER HEIGHT R4 00000160 CA INPUT IPSYM = PLOT SYMBOL. 1 = 'PLUS' SIGN I4 00000170 CA 2 = 'PLUS' SIGN - 2*HEIGHT 00000180 CA 3 = OPEN CIRCLE 00000190 CA 4 = BLACK CIRCLE 00000200 CA 5 = CIRCLE WITH 4 RADIAL 00000210 CA LINES 00000220 CA 6 = CIRCLE WITH 8 RADIAL 00000230 CA LINES 00000240 CA 7 = DOT WITH 4 RADIAL LINES 00000250 CA 8 = TRIANGLE WITH DOT 00000260 CA 9 = X FOR SHOT ANNOTATION 00000270 CA INPUT ITEXT = STATION ANNOTATION TEXT A4 00000280 CA INPUT ANGLE = TEXT ANNOTATION ANGLE R4 00000290 CA INPUT NTEXT = INPUT NO. STATION TEXT CHARACTERS I4 00000300 CA INPUT LLANNO = LINE LABEL ANNOTATION TEXT A4 00000310 CA INPUT LTEXT = INPUT NO. LINE LABEL TEXT CHARACTERS I4 00000320 CA 00000330 CA 00000340 CA GIVEN AN X AND Y COORDINATE, THIS SUBROUTINE PLOTS A USER 00000350 CA SPECIFIED PLOT SYMBOL AT THE POINT AND ANNOTATES IT WITH THE 00000360 CA ANNOTATION TEXT AT THE GIVEN ANGLE. 00000370 CA 00000380 CAEND 00000390 C 00000400 SUBROUTINE SAPANN (X, Y, HEIGHT, IPSYM, ITEXT, ANGLE, NTEXT, 00000410 * LLANNO, LTEXT) 00000420 C 00000430 C CHARACTER ARRAYS -- ARGUMENT LIST 00000440 00000450 CHARACTER*1 ITEXT (1) 00000460 CHARACTER*1 LLANNO (1) 00000470 C 00000480 C REAL VARIABLES -- ARGUMENT LIST 00000490 C 00000500 REAL ANGLE 00000510 REAL HEIGHT 00000520 REAL X 00000530 REAL Y 00000540 C 00000550 C REAL VARIABLES -- LOCAL 00000560 C 00000570 REAL DR 00000580 REAL HHT 00000590 REAL HT 00000600 C 00000610 C INTEGER VARIABLES -- LOCAL 00000620 C 00000630 INTEGER BLANK /' '/ 00000640 C 00000650 C***********************************************************************00000660 C 00000670 HT = HEIGHT 00000680 HHT = HEIGHT / 2 00000690 DR = 57.29577951 00000700 GO TO (10, 20, 30, 40, 60, 80, 90, 100, 110), IPSYM 00000710 C 00000720 C IPSYM = 1; DRAW PLUS SIGN AT X,Y 00000730 C 00000740 10 CALL PLOT (X, Y+HHT, 3) 00000750 CALL PLOT (X, Y-HHT, 2) 00000760 C 00000770 CALL PLOT (X-HHT, Y, 3) 00000780 CALL PLOT (X+HHT, Y, 2) 00000790 GO TO 120 00000800 C 00000810 C IPSYM = 2; DRAW LARGE PLUS SIGN AT X,Y 00000820 C 00000830 20 CALL PLOT (X, Y+HT, 3) 00000840 CALL PLOT (X, Y-HT, 2) 00000850 00000860 CALL PLOT (X-HT, Y, 3) 00000870 C CALL PLOT (X+HT, Y, 2) 00000880 GO TO 120 00000890 C 00000900 C IPSYM = 3; DRAW OPEN CIRCLE AT X,Y 00000910 C 00000920 30 CALL VCIRCL (X, Y, HHT) 00000930 IF (NTEXT .EQ. 0) GO TO 120 00000940 C 00000950 X1 = X + HHT * COS(ANGLE / DR) 00000960 Y1 = Y + HHT * SIN(ANGLE / DR) 00000970 C 00000980 X2 = X + 1.5 * HT * COS(ANGLE / DR) 00000990 Y2 = Y + 1.5 * HT * SIN(ANGLE / DR) 00001000 C 00001010 CALL PLOT (X1, Y1, 3) 00001020 CALL PLOT (X2, Y2, 2) 00001030 GO TO 120 00001040 C 00001050 C IPSYM = 4; DRAW BLACK CIRCLE AT X,Y 00001060 C 00001070 40 RAD = HHT 00001080 CLOSE = .005 00001090 C 00001100 50 CALL VCIRCL (X, Y, RAD) 00001110 RAD = RAD - CLOSE 00001120 IF (RAD .GT. CLOSE) GO TO 50 00001130 GO TO 120 00001140 C 00001150 C IPSYM = 5; DRAW CIRCLE WITH 4 RADIAL LINES AT X,Y 00001160 C 00001170 60 CALL VCIRCL (X, Y, HHT) 00001180 C 00001190 70 CALL PLOT (X, Y+HT, 3) 00001200 CALL PLOT (X, Y+HHT, 2) 00001210 C 00001220 CALL PLOT (X, Y-HHT, 3) 00001230 CALL PLOT (X, Y-HT, 2) 00001240 C 00001250 CALL PLOT (X-HT, Y, 3) 00001260 CALL PLOT (X-HHT, Y, 2) 00001270 C 00001280 CALL PLOT (X+HHT, Y, 3) 00001290 CALL PLOT (X+HT, Y, 2) 00001300 GO TO 120 00001310 C 00001320 C IPSYM = 6; DRAW CIRCLE WITH 8 RADIAL LINES AT X,Y 00001330 C 00001340 80 CALL VCIRCL (X, Y, HHT) 00001350 C 00001360 D1 = HT * SIN(45 / DR) 00001370 D2 = D1 / 2 00001380 C 00001390 CALL PLOT (X-D1, Y+D1, 3) 00001400 CALL PLOT (X-D2, Y+D2, 2) 00001410 C 00001420 CALL PLOT (X+D2, Y-D2, 3) 00001430 CALL PLOT (X+D1, Y-D1, 2) 00001440 C 00001450 CALL PLOT (X-D1, Y-D1, 3) 00001460 CALL PLOT (X-D2, Y-D2, 2) 00001470 00001480 CALL PLOT (X+D2, Y+D2, 3) 00001490 CALL PLOT (X+D1, Y+D1, 2) 00001500 C FOUR LINES DRAWN; GO DRAW OTHER FOUR 00001510 GO TO 70 00001520 C 00001530 C IPSYM = 7; DRAW DOT DITH 4 RADIAL LINES AT X,Y 00001540 C 00001550 90 CALL PLOT (X, Y, 3) 00001560 CALL PLOT (X, Y, 2) 00001570 C 00001580 D1 = HT * SIN(45 / DR) 00001590 D2 = D1 / 4 00001600 00001610 CALL PLOT (X-D1, Y+D1, 3) 00001620 CALL PLOT (X-D2, Y+D2, 2) 00001630 C 00001640 CALL PLOT (X+D2, Y-D2, 3) 00001650 CALL PLOT (X+D1, Y-D1, 2) 00001660 C 00001670 CALL PLOT (X-D1, Y-D1, 3) 00001680 CALL PLOT (X-D2, Y-D2, 2) 00001690 C 00001700 CALL PLOT (X+D2, Y+D2, 3) 00001710 CALL PLOT (X+D1, Y+D1, 2) 00001720 GO TO 120 00001730 C 00001740 C IPSYM = 8; DRAW TRIANGLE WITH DOT AT X,Y 00001750 C 00001760 100 CALL PLOT (X, Y, 3) 00001770 CALL PLOT (X, Y, 2) 00001780 CALL PLOT (X-HHT, Y-HHT, 2) 00001790 CALL PLOT (X+HHT, Y-HHT, 2) 00001800 CALL PLOT (X, Y+HHT, 2) 00001810 CALL PLOT (X-HHT, Y-HHT, 2) 00001820 GO TO 120 00001830 C 00001840 C IPSYM = 9; DRAW X FOR ACTUAL SHOT ANNOTATION 00001850 C 00001860 110 CALL SYMBOL (X, Y, HEIGHT*1.5, 4, ANGLE, -1) 00001870 C 00001880 IF (NTEXT .EQ. 0) GO TO 120 00001890 C 00001900 X1 = X + HHT * COS(ANGLE / DR) 00001910 Y1 = Y + HHT * SIN(ANGLE / DR) 00001920 C 00001930 X2 = X + 1.5 * HT * COS(ANGLE / DR) 00001940 Y2 = Y + 1.5 * HT * SIN(ANGLE / DR) 00001950 C 00001960 CALL PLOT (X1, Y1, 3) 00001970 CALL PLOT (X2, Y2, 2) 00001980 GO TO 120 00001990 C 00002000 C ANNOTATE POINT USING GIVEN TEXT AND ANGLE 00002010 C 00002020 120 IF (NTEXT .EQ. 0) GO TO 130 00002030 C 00002040 SX = X + 2 * HT * COS(ANGLE / DR) + (HT / 2) * SIN(ANGLE / DR) 00002050 SY = Y + 2 * HT * SIN(ANGLE / DR) - (HT / 2) * COS(ANGLE / DR) 00002060 C 00002070 CALL SYMBOL (SX, SY, HEIGHT, ITEXT, ANGLE, NTEXT) 00002080 C 00002090 130 IF (LTEXT .EQ. 0) RETURN 00002100 SX = X - 30 * HT * COS(ANGLE / DR) + (HT * 1.5) * SIN(ANGLE / DR) 00002110 SY = Y - 30 * HT * SIN(ANGLE / DR) - (HT * 1.5) * COS(ANGLE / DR) 00002120 C 00002130 IF (SX .GE. 0.0 .AND. SY .GE. 0.0) GO TO 160 00002140 C 00002150 J = 10 00002160 C 00002170 DO 140 00002180 * I = 1, 10 00002190 IF (S1CPCH(ITEXT,J,BLANK,1,1) .NE. 0) GO TO 150 00002200 J = J - 1 00002210 140 CONTINUE 00002220 C 00002230 RETURN 00002240 C 00002250 150 J = J + 5 00002260 SX = X + J * HT * COS(ANGLE / DR) + (HT * 1.5) * SIN(ANGLE / DR) 00002270 SY = Y + J * HT * SIN(ANGLE / DR) - (HT * 1.5) * COS(ANGLE / DR) 00002280 C 00002290 160 CALL SYMBOL (SX, SY, HEIGHT*3.0, LLANNO, ANGLE, LTEXT) 00002300 C 00002310 LTEXT = 0 00002320 C 00002330 RETURN 00002340 END 00002350