I have added mode 4 to SET_GRAPHICS_SELECTION@ but unfortunately the change will not be in time for the next release.
The following sample program previously used [box_selection] and mode 1. Now we will have [free_selection] and mode 4 as an alternative. In the first case (which you can demonstrate at the moment) you get a rubber banded box. In the new mode, no line or box will be displayed.
!FTN95$WINAPP
!------------------------------------------------------------------
module gr7data
character*32 cstat
integer mstat
end module gr7data
!---------------------------------------------------------------
program gr7
use clrwin
use gr7data
integer i
integer,external::gr_func
cstat=' '
mstat=0
i=winio@('%ww[no_border]&')
i=winio@('%ca[Box Selection]&')
i=winio@('%mn[E&xit]&','EXIT')
i=winio@('%ob&')
i=winio@('%^gr[black,free_selection,full_mouse_input]&',300,300,gr_func)
i=winio@('%cb&')
i=winio@('%ob[status]%20st%cb',cstat)
end
!-----------------------------------------------------------
integer function gr_func()
use clrwin
use gr7data
integer x1,y1,x2,y2,nstat,a,b
integer::MK_LBUTTON=1
integer::MK_SHIFT=4
integer::MK_CONTROL=8
call get_mouse_info@(x1,y1,nstat)
write(cstat(1:30),'(3I7)') x1,y1,nstat
call window_update@(cstat)
if(iand(nstat,MK_LBUTTON)==0.and.iand(mstat,MK_LBUTTON)/=0)then
call get_graphics_selected_area@(x1,y1,x2,y2)
call set_graphics_selection@(0)
if(iand(nstat,MK_SHIFT)==MK_SHIFT) then
call draw_rectangle@(x1,y1,x2,y2,12)
else if(iand(nstat,MK_CONTROL)==MK_CONTROL) then
a=0.5*(x2-x1)
b=0.5*(y2-y1)
call draw_ellipse@(x1+a,y1+b,a,b,12)
else
call draw_line_between@(x1,y1,x2,y2,12)
endif
call set_graphics_selection@(4)
endif
mstat=nstat
gr_func=1
end