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.
		
		
		
		
		
			
		
			
				
	
	
		
			345 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Fortran
		
	
			
		
		
	
	
			345 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Fortran
		
	
!     Last change:  IPK  24 Aug 2001    3:08 pm
 | 
						|
      SUBROUTINE REGISTR(I)
 | 
						|
      USE BLK1MOD
 | 
						|
!      INCLUDE 'BLK1.COM'
 | 
						|
      INCLUDE 'BFILES.I90'
 | 
						|
 | 
						|
      CALL SLPOINT(A1,B1,A2,B2,C1,D1,C2,D2,N)
 | 
						|
!
 | 
						|
!     A1 = X CORD OF DESIRED WORLD-1
 | 
						|
!     B1 = Y CORD OF DESIRED WORLD-1
 | 
						|
!     A2 = X CORD OF DESIRED WORLD-2
 | 
						|
!     B2 = X CORD OF DESIRED WORLD-2
 | 
						|
!     C1 = X CORD OF INPUT WORLD-1
 | 
						|
!     D1 = Y CORD OF INPUT WORLD-1
 | 
						|
!     C2 = X CORD OF INPUT WORLD-2
 | 
						|
!     D2 = X CORD OF INPUT WORLD-2
 | 
						|
 | 
						|
      IF(N .EQ. 1) THEN
 | 
						|
 | 
						|
!     Compute new locations
 | 
						|
 | 
						|
        SCALEER= (A2-A1)/(C2-C1)
 | 
						|
        ASIZ=(BFMINMAX(I,3)-BFMINMAX(I,1))*SCALEER
 | 
						|
        FLEFT=(C1-BFMINMAX(I,1))/(BFMINMAX(I,3)-BFMINMAX(I,1))
 | 
						|
        XNEW1=A1-FLEFT*ASIZ
 | 
						|
        XNEW2=XNEW1+ASIZ
 | 
						|
        WRITE(90,*) 'X-SCAL',SCALEER,ASIZ,FLEFT,XNEW1,XNEW2
 | 
						|
        SCALEER= (B2-B1)/(D2-D1)
 | 
						|
        BSIZ=(BFMINMAX(I,4)-BFMINMAX(I,2))*SCALEER
 | 
						|
        FBEL=(D1-BFMINMAX(I,2))/(BFMINMAX(I,4)-BFMINMAX(I,2))
 | 
						|
        YNEW1=B1-FBEL*BSIZ
 | 
						|
        YNEW2=YNEW1+BSIZ
 | 
						|
        WRITE(90,*) 'Y-SCAL',SCALEER,BSIZ,FBEL,YNEW1,YNEW2
 | 
						|
 | 
						|
!      Confirm that they are acceptable
 | 
						|
 | 
						|
        CALL DISPREG(BFMINMAX(I,1),BFMINMAX(I,2),BFMINMAX(I,3),BFMINMAX(I,4),XNEW1,YNEW1,XNEW2,YNEW2,NN)
 | 
						|
        WRITE(90,*) 'AFTER DIS',NN,XNEW1,YNEW1,XNEW2,YNEW2
 | 
						|
 | 
						|
!      Store them in the appropriate array
 | 
						|
 | 
						|
        IF(NN .EQ. 1) THEN
 | 
						|
          BFMINMAX(I,1)=XNEW1
 | 
						|
          BFMINMAX(I,2)=YNEW1
 | 
						|
          BFMINMAX(I,3)=XNEW2
 | 
						|
          BFMINMAX(I,4)=YNEW2
 | 
						|
        ELSE
 | 
						|
          RETURN
 | 
						|
        ENDIF
 | 
						|
 | 
						|
!      Save them if they are wanted
 | 
						|
 | 
						|
        CALL SAVORG(I,1)
 | 
						|
       
 | 
						|
      ENDIF
 | 
						|
 | 
						|
      RETURN
 | 
						|
      END SUBROUTINE
 | 
						|
      
 | 
						|
!     Display selected origins
 | 
						|
 | 
						|
      SUBROUTINE DISPREG(A1,B1,A2,B2,C1,D1,C2,D2,NN)
 | 
						|
 | 
						|
!   This subroutine gets points
 | 
						|
!
 | 
						|
      USE WINTERACTER
 | 
						|
 | 
						|
      IMPLICIT NONE
 | 
						|
!
 | 
						|
! Define some parameters to match those in the resource file
 | 
						|
!
 | 
						|
   include 'd.inc'
 | 
						|
!
 | 
						|
!
 | 
						|
! Declare window-type and message variables
 | 
						|
!
 | 
						|
      TYPE(WIN_STYLE)    :: WINDOW
 | 
						|
 | 
						|
      TYPE(WIN_MESSAGE) :: MESSAGE
 | 
						|
      
 | 
						|
      INTEGER            :: N,IBOX,NN
 | 
						|
      INTEGER           :: IERR
 | 
						|
      REAL              :: A1,B1,A2,B2,C1,D1,C2,D2
 | 
						|
      CHARACTER*1       :: IFLAG
 | 
						|
 | 
						|
 | 
						|
           
 | 
						|
      call wdialogload(IDD_CONFIRM)
 | 
						|
      ierr=infoerror(1)
 | 
						|
 | 
						|
      CALL WDialogSelect(IDD_CONFIRM)
 | 
						|
      ierr=infoerror(1)
 | 
						|
 | 
						|
      CALL WDialogPutReal(IDF_REAL1,A1,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL2,B1,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL5,A2,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL6,B2,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL3,C1,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL4,D1,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL7,C2,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL8,D2,'(F8.0)')
 | 
						|
 | 
						|
      CALL WDialogShow(-1,-1,0,Modal)
 | 
						|
      ierr=infoerror(1)
 | 
						|
 | 
						|
      do
 | 
						|
 | 
						|
!  Branch depending on type of message.
 | 
						|
!
 | 
						|
        IF (WInfoDialog(ExitButton) .EQ. IDOK) THEN
 | 
						|
          NN=1
 | 
						|
          CALL WDialogGetReal(IDF_REAL1,A1)
 | 
						|
          CALL WDialogGetReal(IDF_REAL2,B1)
 | 
						|
          CALL WDialogGetReal(IDF_REAL5,A2)
 | 
						|
          CALL WDialogGetReal(IDF_REAL6,B2)
 | 
						|
          CALL WDialogGetReal(IDF_REAL3,C1)
 | 
						|
          CALL WDialogGetReal(IDF_REAL4,D1)
 | 
						|
          CALL WDialogGetReal(IDF_REAL7,C2)
 | 
						|
          CALL WDialogGetReal(IDF_REAL8,D2)
 | 
						|
          RETURN
 | 
						|
        ELSEIF(WInfoDialog(ExitButton) .EQ. IDCANCEL) THEN
 | 
						|
          NN=0
 | 
						|
          RETURN
 | 
						|
        ENDIF
 | 
						|
!ipk sep02
 | 
						|
        NN=0
 | 
						|
        RETURN
 | 
						|
      ENDDO
 | 
						|
      RETURN
 | 
						|
      END
 | 
						|
 | 
						|
!     Select points
 | 
						|
 | 
						|
      SUBROUTINE SLPOINT(A1,B1,A2,B2,C1,D1,C2,D2,NN)
 | 
						|
!
 | 
						|
!   This subroutine gets points
 | 
						|
!
 | 
						|
      USE WINTERACTER
 | 
						|
 | 
						|
      IMPLICIT NONE
 | 
						|
!
 | 
						|
!
 | 
						|
! Define some parameters to match those in the resource file
 | 
						|
!
 | 
						|
   include 'd.inc'
 | 
						|
 | 
						|
      INTEGER :: NP,NE,NHTP,NMESS,NBRR,IPSW,IRMAIN,ISCRN,icolon,IQSW,IRDISP,ntempin,IGFGSW,IGFGSWB,ICRIN,IPW1,WIDEL,WIDSCL,itrianout
 | 
						|
      COMMON /HEDS/ NP,NE,NHTP,NMESS,NBRR,IPSW(15),IRMAIN,ISCRN,icolon(12),IQSW(2),IRDISP,ntempin,igfgsw,igfgswb,ICRIN,IPW1,WIDEL,WIDSCL,itrianout
 | 
						|
 | 
						|
 | 
						|
      INCLUDE 'TXFRM.COM'
 | 
						|
!IPK MAY02       COMMON  /TXFRM/  XS, YS, TXSCAL 
 | 
						|
!
 | 
						|
 | 
						|
!
 | 
						|
! Declare window-type and message variables
 | 
						|
!
 | 
						|
      TYPE(WIN_STYLE)    :: WINDOW
 | 
						|
 | 
						|
      TYPE(WIN_MESSAGE) :: MESSAGE
 | 
						|
      
 | 
						|
      INTEGER            :: N,IBOX,NN
 | 
						|
      INTEGER           :: IERR
 | 
						|
!IPK MAY02
 | 
						|
      REAL              :: A1,B1,A2,B2,C1,D1,C2,D2,XX,YY
 | 
						|
      CHARACTER*1       :: IFLAG
 | 
						|
 | 
						|
 | 
						|
      call wdialogload(IDD_SLRGNO)
 | 
						|
      ierr=infoerror(1)
 | 
						|
 | 
						|
      CALL WDialogSelect(IDD_SLRGNO)
 | 
						|
      ierr=infoerror(1)
 | 
						|
      
 | 
						|
      CALL WDialogPutINTEGER(IDF_INTEGER1,N)
 | 
						|
      
 | 
						|
      CALL WDialogShow(-1,-1,0,Modal)
 | 
						|
      ierr=infoerror(1)
 | 
						|
 | 
						|
      do
 | 
						|
 | 
						|
!  Branch depending on type of message.
 | 
						|
!
 | 
						|
        IF (WInfoDialog(ExitButton) .EQ. IDOK) THEN
 | 
						|
 | 
						|
           CALL WDialogGetINTEGER(IDF_INTEGER1,N)
 | 
						|
           GO TO 150
 | 
						|
        ENDIF
 | 
						|
!ipk sep02
 | 
						|
        RETURN
 | 
						|
      ENDDO
 | 
						|
  150 CONTINUE                 
 | 
						|
  
 | 
						|
      NHTP=0
 | 
						|
      NBRR=3
 | 
						|
      NMESS=43
 | 
						|
      CALL HEDR
 | 
						|
      WRITE(90,*) 'BACK FROM HEDR'
 | 
						|
      IF(N .EQ. 1) THEN
 | 
						|
        CALL XYLOC(XX,YY,iflag,ibox)
 | 
						|
         C1 = XX*TXSCAL - XS 
 | 
						|
         D1 = YY*TXSCAL - YS 
 | 
						|
      WRITE(90,*) 'BACK FROM XYLOC-1',C1,D1,IBOX,IFLAG
 | 
						|
      ELSE
 | 
						|
        CALL XYLOC(XX,YY,iflag,ibox)
 | 
						|
         C2 = XX*TXSCAL - XS 
 | 
						|
         D2 = YY*TXSCAL - YS 
 | 
						|
      WRITE(90,*) 'BACK FROM XYLOC-2',C2,D2,IBOX,IFLAG
 | 
						|
      ENDIF
 | 
						|
      IF(IFLAG .EQ. 'q'  .OR.  (IFLAG .EQ. 'c'  .AND. IBOX .EQ. 10))THEN 
 | 
						|
        CALL WRTOUT(0) 
 | 
						|
        RETURN 
 | 
						|
      ENDIF
 | 
						|
   
 | 
						|
      call wdialogload(IDD_REGST)
 | 
						|
      ierr=infoerror(1)
 | 
						|
 | 
						|
      CALL WDialogSelect(IDD_REGST)
 | 
						|
      ierr=infoerror(1)
 | 
						|
 | 
						|
      CALL WDialogPutReal(IDF_REAL1,A1,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL2,B1,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL3,A2,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL4,B2,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL5,C1,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL6,D1,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL7,C2,'(F8.0)')
 | 
						|
      CALL WDialogPutReal(IDF_REAL8,D2,'(F8.0)')
 | 
						|
 | 
						|
      CALL WDialogShow(-1,-1,0,Modal)
 | 
						|
      ierr=infoerror(1)
 | 
						|
 | 
						|
      do
 | 
						|
 | 
						|
!  Branch depending on type of message.
 | 
						|
!
 | 
						|
        IF (WInfoDialog(ExitButton) .EQ. IDADJUST) THEN
 | 
						|
 | 
						|
           CALL WDialogGetReal(IDF_REAL1,A1)
 | 
						|
           CALL WDialogGetReal(IDF_REAL2,B1)
 | 
						|
           CALL WDialogGetReal(IDF_REAL3,A2)
 | 
						|
           CALL WDialogGetReal(IDF_REAL4,B2)
 | 
						|
           CALL WDialogGetReal(IDF_REAL5,C1)
 | 
						|
           CALL WDialogGetReal(IDF_REAL6,D1)
 | 
						|
           CALL WDialogGetReal(IDF_REAL7,C2)
 | 
						|
           CALL WDialogGetReal(IDF_REAL8,D2)
 | 
						|
           NN=1
 | 
						|
           RETURN
 | 
						|
        ELSEIF (WInfoDialog(ExitButton) .EQ. IDFSWITCH) THEN
 | 
						|
 | 
						|
           CALL WDialogGetReal(IDF_REAL1,A1)
 | 
						|
           CALL WDialogGetReal(IDF_REAL2,B1)
 | 
						|
           CALL WDialogGetReal(IDF_REAL3,A2)
 | 
						|
           CALL WDialogGetReal(IDF_REAL4,B2)
 | 
						|
           CALL WDialogGetReal(IDF_REAL5,C1)
 | 
						|
           CALL WDialogGetReal(IDF_REAL6,D1)
 | 
						|
           CALL WDialogGetReal(IDF_REAL7,C2)
 | 
						|
           CALL WDialogGetReal(IDF_REAL8,D2)
 | 
						|
           IF(N .EQ. 1) THEN
 | 
						|
             N=2
 | 
						|
           ELSE
 | 
						|
             N=1
 | 
						|
           ENDIF
 | 
						|
           GO TO 150
 | 
						|
        ELSEIF (WInfoDialog(ExitButton) .EQ. IDCANCEL) THEN
 | 
						|
          NN=0
 | 
						|
          RETURN
 | 
						|
        ENDIF
 | 
						|
!IPK SEP02
 | 
						|
        NN=0
 | 
						|
        RETURN
 | 
						|
      ENDDO  
 | 
						|
      RETURN
 | 
						|
      END           
 | 
						|
 | 
						|
 | 
						|
      SUBROUTINE SAVORG(NN,III)
 | 
						|
 | 
						|
!   This subroutine askf to check first then saves ORG file data
 | 
						|
!
 | 
						|
      USE WINTERACTER
 | 
						|
 | 
						|
      IMPLICIT NONE
 | 
						|
!
 | 
						|
! Define some parameters to match those in the resource file
 | 
						|
!
 | 
						|
   include 'd.inc'
 | 
						|
!
 | 
						|
!
 | 
						|
! Declare window-type and message variables
 | 
						|
!
 | 
						|
      TYPE(WIN_STYLE)    :: WINDOW
 | 
						|
 | 
						|
      TYPE(WIN_MESSAGE) :: MESSAGE
 | 
						|
      
 | 
						|
      INCLUDE 'BFILES.I90'
 | 
						|
      CHARACTER(LEN=256)  :: FILTER
 | 
						|
 | 
						|
      INTEGER            :: NN,I,III
 | 
						|
      CHARACTER(LEN=255)  :: FNAME
 | 
						|
      CHARACTER(LEN=3)    :: SUB
 | 
						|
      INTEGER             :: INFO(3)
 | 
						|
      REAL                :: XSIZ,YSIZ
 | 
						|
      IF(III .EQ. 1) THEN
 | 
						|
        CALL WMessageBox(YesNo,QuestionIcon,CommonOK, 'Do you wish to '// &
 | 
						|
                           'save locations as ORG or JPGW file?', 'SAVE ORG/JPGW FILE')
 | 
						|
!
 | 
						|
!   If answer 'NO', return
 | 
						|
!
 | 
						|
        IF (WInfoDialog(4) .EQ. 2) RETURN
 | 
						|
      ENDIF
 | 
						|
      
 | 
						|
!   Otherwise process
 | 
						|
      call IGrFileInfo(BFNAME(NN),INFO,3)
 | 
						|
 | 
						|
      FILTER ="Registration Files|*.org;*.jpgw|ORG file -- *.org|*.org|JPGW file  -- *.jpgw|*.jpgw|"
 | 
						|
      
 | 
						|
      CALL WSelectFile(FILTER,SaveDialog+PromptOn+AppendExt,FNAME,'Save ORG/JPGW File')
 | 
						|
 | 
						|
      IF (WInfoDialog(ExitButtonCommon).EQ.CommonOpen) THEN
 | 
						|
 | 
						|
!        SUB='org'
 | 
						|
        OPEN(104,FILE=FNAME,STATUS ='UNKNOWN', FORM ='FORMATTED')
 | 
						|
        CALL IlowerCase(FNAME)
 | 
						|
        CALL GETSUB(FNAME,SUB)
 | 
						|
        if(sub .eq. 'jpg') then
 | 
						|
          XSIZ=(BFMINMAX(NN,3)-BFMINMAX(NN,1))/FLOAT(INFO(2))
 | 
						|
          YSIZ=(BFMINMAX(NN,2)-BFMINMAX(NN,4))/FLOAT(INFO(3))
 | 
						|
          WRITE(104,*) XSIZ
 | 
						|
          WRITE(104,*) ' 0.0'
 | 
						|
          WRITE(104,*) ' 0.0'
 | 
						|
          WRITE(104,*) YSIZ
 | 
						|
          WRITE(104,*) BFMINMAX(NN,1)
 | 
						|
          WRITE(104,*) BFMINMAX(NN,4)
 | 
						|
          CLOSE(104)
 | 
						|
        else    
 | 
						|
!        CALL ADDSUB(FNAME,SUB)
 | 
						|
!          OPEN(104,FILE=FNAME,STATUS ='UNKNOWN', FORM ='FORMATTED')
 | 
						|
          WRITE(104,'(4G16.8)') (BFMINMAX(NN,I),I=1,4)
 | 
						|
          CLOSE(104)
 | 
						|
        endif
 | 
						|
      ENDIF
 | 
						|
 | 
						|
      RETURN
 | 
						|
      END |