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.
105 lines
3.7 KiB
Fortran
105 lines
3.7 KiB
Fortran
5 years ago
|
!***********************************************************
|
||
|
subroutine zoomnew(xscrn,yscrn,xscrn1,yscrn1,iflag)
|
||
|
!
|
||
|
USE BLK1MOD
|
||
|
! INCLUDE 'BLK1.COM'
|
||
|
character*1 iflag
|
||
|
!
|
||
|
!
|
||
|
!ipk jun96 add zoomj
|
||
|
character*43 zoomh,zoomj
|
||
|
character*23 zoomi
|
||
|
!ipk jan98
|
||
|
CHARACTER*80 lind
|
||
|
data zoomh/' Zooming, click and drag to form rectangle'/
|
||
|
data zoomi/' Click right if size OK'/
|
||
|
!ipk jun96 add zoomj
|
||
|
data zoomj/' Double click, click second point '/
|
||
|
!
|
||
|
!
|
||
|
80 CALL CLRBOX
|
||
|
CALL SYMBL(0.,7.70,0.20,zoomh,0.,43)
|
||
|
|
||
|
!jan09 xcc = 5.00
|
||
|
!jan09 xp = 5.00
|
||
|
xcc = 5.00*hsize/10.
|
||
|
xp = 5.00*hsize/10.
|
||
|
ycc = 3.5
|
||
|
yp = 3.5
|
||
|
!
|
||
|
! Got cursor location
|
||
|
!
|
||
|
if(iflag .eq. 'r') then
|
||
|
! This option is scaling a window
|
||
|
!
|
||
|
!
|
||
|
! Look for a screen size
|
||
|
!
|
||
|
xsiz=abs(xscrn1-xscrn)
|
||
|
ysiz=abs(yscrn1-yscrn)
|
||
|
!ipk jun96 test for zero sizes
|
||
|
if(xsiz .lt. 0.001 .or. ysiz .lt. 0.001) then
|
||
|
CALL CLRBOX
|
||
|
CALL SYMBL(0.,7.70,0.20,zoomj,0.,43)
|
||
|
return
|
||
|
endif
|
||
|
if(xscrn1 .lt. xscrn) xscrn=xscrn1
|
||
|
if(yscrn1 .lt. yscrn) yscrn=yscrn1
|
||
|
fact=HSIZE/xsiz
|
||
|
if(7.5/ysiz .lt. fact) fact=7.5/ysiz
|
||
|
!jan09 if(8./ysiz .lt. fact) fact=8./ysiz
|
||
|
!jan09 xscrn=xscrn+5./fact
|
||
|
xscrn=xscrn+xcc/fact
|
||
|
yscrn=yscrn+3.5/fact
|
||
|
xp=xscrn
|
||
|
yp=yscrn
|
||
|
CALL CLRBOX
|
||
|
! CALL SYMBL(0.,7.70,0.20,zoomi,0.,22)
|
||
|
go to 250
|
||
|
elseif(iflag .eq. 'w') then
|
||
|
call rescal
|
||
|
return
|
||
|
elseif(iflag .eq. 'y')then
|
||
|
fact=0.5
|
||
|
elseif(iflag .eq. 'x') then
|
||
|
fact=0.25
|
||
|
elseif(iflag .eq. 'v')then
|
||
|
fact=1.0
|
||
|
xp=xp-5.
|
||
|
elseif(iflag .eq. 'u') then
|
||
|
fact=1.0
|
||
|
xp=xp+5.
|
||
|
elseif(iflag .eq. 't')then
|
||
|
fact=1.0
|
||
|
yp=yp+3.5
|
||
|
elseif(iflag .eq. 's') then
|
||
|
fact=1.0
|
||
|
yp=yp-3.5
|
||
|
elseif(iflag .eq. 'd') then
|
||
|
fact=1.0
|
||
|
xp=xp-xscrn
|
||
|
yp=yp-yscrn
|
||
|
endif
|
||
|
do i=1,np
|
||
|
if(cord(i,1) .gt. void) then
|
||
|
inskp(i)=0
|
||
|
endif
|
||
|
enddo
|
||
|
do i=1,ne
|
||
|
if(imat(i) .gt. 0) then
|
||
|
ieskp(i)=0
|
||
|
endif
|
||
|
enddo
|
||
|
250 continue
|
||
|
pscale = pscale/fact
|
||
|
xmino=xmin
|
||
|
ymino=ymin
|
||
|
!
|
||
|
xmin = xp - (xcc*pscale)
|
||
|
ymin = yp - (ycc*pscale)
|
||
|
!
|
||
|
CALL PLOTOT(0)
|
||
|
if(nmess .eq. 11) call pltpt
|
||
|
return
|
||
|
END
|