SUBROUTINE HCGDIS C C This subroutine generates the MENU, the CHARACTER C COORDINATE SYSTEM and the CHARACTER as presently C defined. C+ COMMON /PLTR/ ILun,IDev,IsTerm,IMode,IXMax,IYmax, 1 Cnvrsn,CMag,CnvMag,IX0,IY0,KSetNo,IFancy,IBfDv3, 1 CSize,DeltaH,DeltaV,Upsiln,CosUP,SinUP COMMON /HCDB/ ICASE, NVEC, IWIDTH, LL0, LL0D, SCALE, SCALED, 1 COSUPC, SINUPC, COSUPD, SINUPD, COSUPT, SINUPT, DES, DEF COMMON /ETC/ NEWDO, OLDDO, DFAULT, MAPIN(128), SCALEF, 1 NVCTRS(90), NCHAR, IVCTRS(800), ITIS, H, HD, TABFAC, 2 ISETAV, TRNFRM, TABON, YWRITE, CHMIN, CHMAX, XMENU, YMENU, 3 XC, YC, XCH, YCH, IPEN, COSTH, SINTH, XTAB0, YTAB0, 4 IXTAB, IYTAB, ICHAR, ISET(2) DIMENSION ISCALE(2) INTEGER OLDDO LOGICAL DFAULT, TRNFRM, TABON LOGICAL*1 ICHAR, ISET EQUIVALENCE ( SCALE, ISCALE ) C- COMPLEX MENUT(15), MENU8 LOGICAL*1 LABEL(20) EQUIVALENCE ( MENU8, LABEL(1) ) DATA MENUT/'A''dd', 'C''lear', 'Delete', 'D''isplay', 'F''inish', 1 'I''nsert', 'M''ve', 'P''en Up', 'R''estart', 'Save', 1 'Scale', 'S''elect', 'T''ablet', 'Transfrm', 'W''idth'/ DATA XMENU, YMENU/ 9., .5/ DATA XCS, YCS/ .5, .5/ C C - GENERATE MENU. CALL ERASE YWRITE = IYMAX/CNVMAG CALL CALPLT( XMENU, YMENU, -3 ) DO 1000 I=0,3 CALL CALPLT( I*1., 0., 3 ) 1000 CALL CALPLT( I*1., 2.5, 2 ) DO 2000 I=0,5 CALL CALPLT( 0., I*.5, 3 ) 2000 CALL CALPLT( 3., I*.5, 2 ) C DO 4000 I=0,2 DO 4000 J=0,4 MENU8 = MENUT( I*5+J+1 ) DO 3000 K=8,1,-1 3000 IF( LABEL(K) .NE. ' ' ) GO TO 3100 3100 XP = I*1. + .5 - DELTAH*.5*K YP = ( 4-J )*.5 + .25 - CSIZE*.5 4000 CALL HCGEN( XP, YP, LABEL, K ) C C - ADD CHARACTER INFORMATION. XP = 0. YP = 2.5 + CSIZE ENCODE(11,4010,LABEL) NVEC 4010 FORMAT('Nvctrs:',I4) CALL HCGEN(XP,YP,LABEL,11) C YP = YP + DELTAV ENCODE(20,4020,LABEL) ICHAR, ICHAR, NCHAR 4020 FORMAT('Character:',A1,O5,I4) CALL HCGEN(XP,YP,LABEL,20) C YP = YP + DELTAV ENCODE(10,4030,LABEL) DFAULT 4030 FORMAT('Default:',L2) CALL HCGEN(XP,YP,LABEL,10) C YP = YP + DELTAV ENCODE(12,4040,LABEL) IWIDTH 4040 FORMAT('IWidth:',I5) CALL HCGEN(XP,YP,LABEL,12) C YP = YP + DELTAV ENCODE(8,4050,LABEL) LL0 + 64 4050 FORMAT('LL0:',I4) CALL HCGEN(XP,YP,LABEL,8) C YP = YP + DELTAV ENCODE(14,4060,LABEL) SCALE 4060 FORMAT('Scale:',F8.6) CALL HCGEN(XP,YP,LABEL,14) C YP = YP + DELTAV ENCODE(14,4070,LABEL) H 4070 FORMAT('Height:',F7.3) CALL HCGEN(XP,YP,LABEL,14) C C - DRAW CHARACTER COORDINATE SYSTEM. CALL ABSPLT( 0, 0, -3 ) CALL CALPLT( XCS, YCS, -3 ) SCALEF = .06 SIDE = 128.*SCALEF BSIDE = ( 64 + LL0 )*SCALEF CHMIN = -BSIDE CHMAX = SIDE - BSIDE C CALL CALPLT( 0., 0., 3 ) CALL CALPLT( SIDE, 0., 2 ) CALL CALPLT( SIDE, SIDE, 2 ) CALL CALPLT( 0., SIDE, 2 ) CALL CALPLT( 0., 0., 2 ) C CALL SVCTR(2) CALL CALPLT( BSIDE, 0., 3 ) CALL CALPLT( BSIDE, SIDE, 2 ) CALL CALPLT( 0., BSIDE, 3 ) CALL CALPLT( SIDE, BSIDE, 2 ) CALL SVCTR(1) C C - GENERATE CHARACTER. CALL ABSPLT( 0, 0, -3 ) XCH = XCS + BSIDE YCH = YCS + BSIDE IF( NVEC .EQ. 0 ) GO TO 7100 C DO 5000 I=1,NVEC CALL UNPACK( IVCTRS(I), IX, IY, IPEN ) IWIDTH = MAX0( IWIDTH, IX ) XP = XCH + IX*SCALEF YP = YCH + IY*SCALEF 5000 CALL CALPLT( XP, YP, IPEN ) C C - DRAW SCALED CHARACTERS. XLL = XCS + SIDE + .5 YLL = YCS + SIDE*.7 DO 7000 J=0,2 SCALES = SCALE*2.**(-J) DO 6000 I=1,NVEC CALL UNPACK( IVCTRS(I), IX, IY, IPEN ) XP = XLL + IX*SCALES YP = YLL + IY*SCALES 6000 CALL CALPLT(XP,YP,IPEN) 7000 XLL = XLL + IWIDTH*SCALES C C - SET WIDTH. 7100 WIDTH = XCH + IWIDTH*SCALEF CALL SVCTR(3) CALL CALPLT( WIDTH, YCH+CHMIN, 3 ) CALL CALPLT( WIDTH, YCH+CHMAX, 2 ) CALL SVCTR(1) C RETURN END