SUBROUTINE HCGSCL C C This subroutine allows for the changing of the scaling and C offset and will also calculate these values. C 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- C C - GENERATE LIST OF OPTIONS. CALL ERASE CALL HOME IF( .NOT. DFAULT ) GO TO 100 DFAULT = .TRUE. LL = LL0D + 64 SC = SCALED HH = HD GO TO 200 100 LL = LL0 + 64 SC = SCALE HH = H C 200 WRITE(2,210) LL, SC, HH 210 FORMAT(/,' -1',T10,'To return to defaults.',/, 1 ' 0',T10,'To continue.',/, 2 ' 1,LL',T10,'To change value of LL0 from',I5,/, 3 ' 2,SC',T10,'To change value of SCALE from',F9.6,/, 4 ' 3,HH',T10,'To change value of HEIGHT from',F9.3,/, 4 ' 4',T10,'To have values calculated.',/) C 300 WRITE(2,310) 310 FORMAT('$Action: ') READ(2,320,END=1200) IACT, VALUE 320 FORMAT(I8,F8.0) IF( ( IACT .LT. 0. ) .OR. ( IACT .GT. 4 ) ) GO TO 300 GO TO ( 400, 900, 500, 600, 700, 800 ), IACT + 2 C C - RETURN TO DEFAULTS. 400 DFAULT = .TRUE. LL = LL0D SC = SCALED GO TO 200 C C - CHANGE LL OR SC. 500 LL = VALUE DFAULT = .FALSE. GO TO 200 600 SC = VALUE DFAULT = .FALSE. GO TO 200 700 HH = VALUE DFAULT = .FALSE. GO TO 200 C C - CALCULATE SCALING. 800 WRITE(2,810) 810 FORMAT(/,' Please enter character height.',//, 1 '$In inches =? ') READ(2,820,END=1200) HH 820 FORMAT(F8.0) WRITE(2,830) 830 FORMAT(/,' Please enter the greater of either the HEIGHT of',/, 1 ' tallest character or the WIDTH of the widest character',/, 1 ' (excluding the portion accounted for by the "Width"', 1 ' command).',//, 1 '$In inches =? ') READ(2,820,END=1200) W1 WRITE(2,840) 840 FORMAT(//,' Please enter the greater of either the DEPTH of',/, 1 ' the lowest descender or the WIDTH of the character most',/, 1 ' past the origin (WIDTH to left of origin).',//, 1 '$In inches =? ') READ(2,820,END=1200) W2 C IF( HH .LE. 0. ) GO TO 800 W2 = ABS( W2 ) SC = ( W1 + W2 )/( 128.*HH ) LL = W2/( W1 + W2 )*128. DFAULT = .FALSE. GO TO 200 C C - EVERYTHING OK? 900 IF( DFAULT ) GO TO 1000 IF( ( SC .LE. 0. ) .OR. 1 ( LL .LT. 0 ) .OR. ( LL .GT. 128 ) ) GO TO 200 C 1000 IF( NEWDO .NE. -1 ) GO TO 1100 SCALED = SC LL0D = LL - 64 HD = HH C 1100 IF( ( SCALED .LE. 0. ) .OR. ( HH .LE. 0. ) .OR. 1 ( LL0 .LT. -64 ) .OR. ( LL0 .GT. 64 ) ) 1 GO TO 200 LL0 = LL - 64 SCALE = SC H = HH RETURN C 1200 CALL PLTNOS CALL CALPLT(0.,0.,999) STOP END