You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
2.9 KiB
Fortran

SUBROUTINE GOUTLIN
USE WINTERACTER
USE BLK1MOD
! INCLUDE 'BLK1.COM'
INCLUDE 'TXFRM.COM'
CHARACTER(LEN=255) :: FNAME,FILTER
CHARACTER(LEN=4) :: SUB
LOGICAL OPENED
CHARACTER*1 IFLAG,ANS(10)
! DIMENSION XOUT(1000),YOUT(1000)
DATA ANS/' ',' ',' ',' ',' ',' ','n','z','r','q'/
IF(.NOT. ALLOCATED(XOUT)) THEN
ALLOCATE (XOUT(5000,10),YOUT(5000,10))
ENDIF
N=0
IOUTOUT=25
INQUIRE(25, OPENED=OPENED)
if(.not. opened) then
Filter='OUTLINE file -- *.dat|*.dat|POLY file -- *.poly|*.poly|'
CALL WSelectFile(Filter,SaveDialog+PromptOn+AppendExt+DirChange,FNAME,'Save Outline File')
IF (WInfoDialog(ExitButtonCommon).EQ.CommonOpen) THEN
CALL IlowerCase(FNAME)
CALL GETSUB(FNAME,SUB)
OPEN(IOUTOUT,FILE=FNAME,STATUS='UNKNOWN',ACTION='WRITE')
ELSE
GO TO 1
ENDIF
ENDIF
1 CONTINUE
IF(SUB(1:3) .EQ. 'dat') THEN
IOUTSW=0
ELSE
IOUTSW=1
ENDIF
!IPK GET STRING OF MAP COORDINATES
!
! Draw box around selections
!
2 CONTINUE
NHTPSV=NHTP
NMESSV=NMESS
NBRRSV=NBRR
NHTP=0
NBRR=1
NMESS=45
CALL HEDR
!
! Get answer
!
! 3 call xyloc(XPT,YPT,ANS,IBOX)
3 call xyloc(XPT,YPT,IFLAG,IBOX)
!
IF(IRMAIN .NE. 1 .and. ibox .ne. 10) THEN
N=N+1
XTMP = XPT*TXSCAL - XS
YTMP = YPT*TXSCAL - YS
IF(IOUTSW .EQ. 0) THEN
WRITE(IOUTOUT,*) XTMP,YTMP
ELSE
XOUT(N,1)=XTMP
YOUT(N,1)=YTMP
ENDIF
GO TO 3
ENDIF
IF(IOUTSW .EQ. 1) THEN
NDIM=2
NZERO=0
NONE=1
WRITE(IOUTOUT,*)N,NDIM,NZERO,NZERO
DO I=1,N
WRITE(IOUTOUT,*) I,XOUT(I,1),YOUT(I,1)
ENDDO
WRITE(IOUTOUT,*) N,NZERO
DO I=1,N-1
WRITE(IOUTOUT,*) I,I,I+1
ENDDO
WRITE(IOUTOUT,*) N,N,NONE
WRITE(IOUTOUT,*) NZERO
ENDIF
NHTP=NHTPSV
NMESS=NMESSV
NBRR=NBRRSV
CALL HEDR
RETURN
END
SUBROUTINE GETSUB4(FNAME,SUB)
CHARACTER(LEN=255) :: FNAME
CHARACTER(LEN=4) :: SUB
INTEGER ,EXTERNAL :: LENSTR
INTEGER :: LNNAM,K
LNNAM=LENSTR(FNAME)
SUB=' '
DO K=LNNAM,1,-1
IF(FNAME(K:K) .EQ. '.') THEN
IF(LNNAM .GT. K+3) THEN
SUB=FNAME(K+1:K+4)
ELSEIF(LNNAM .GT. K+2) THEN
SUB(1:3)=FNAME(K+1:K+3)
SUB(4:4)=' '
ELSE
SUB=' '
ENDIF
GO TO 110
ENDIF
ENDDO
110 CONTINUE
RETURN
END