Main Page   Class Hierarchy   Data Structures   File List   Data Fields   Globals  

get_input.f

Go to the documentation of this file.
00001 
00002 c
00003 c       Copyright (c) 1986,1987,1988,1989,1990,1991,1992,1993,
00004 c       by Steve McMillan, Drexel University, Philadelphia, PA.
00005 c
00006 c       All rights reserved.
00007 c
00008 c       Redistribution and use in source and binary forms are permitted
00009 c       provided that the above copyright notice and this paragraph are
00010 c       duplicated in all such forms and that any documentation,
00011 c       advertising materials, and other materials related to such
00012 c       distribution and use acknowledge that the software was developed
00013 c       by the author named above.
00014 c
00015 c       THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
00016 c       IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
00017 c       WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00018 c
00019 
00020         subroutine getinput
00021         save
00022 c
00023 c       General means of getting input from stdin, the graphics cursor,
00024 c       or the repeat stack, depending on mode.  This is fairly wasteful
00025 c       of space, but...
00026 c
00027         common /replay/ ireplay
00028         common /prompt/ iprompt
00029         common /x input/ interact
00030         logical gfxin,first_xuse
00031 c
00032         character*80 device
00033         common /plot device/ device,aspect,idev
00034 c
00035         common/draw params/roff,soff,aspect1,xlen,ylen,hs,hn,hp,
00036      &                     idevset,jbox,iorig
00037         parameter (NSAVEMAX = 500)
00038 c
00039         common /instack1/ nsave,isave,rsave(NSAVEMAX),ssave(NSAVEMAX)
00040         character*200 strsave(NSAVEMAX)
00041         common /instack2/ strsave
00042 c
00043         save /instack1/,/instack2/
00044 c
00045         character*(*) input,string
00046         data first_xuse/.true./
00047 c
00048         entry getnsave(i)
00049         i = nsave
00050         return
00051 c
00052         entry setisave(i)
00053         isave = i
00054         return
00055 c
00056         entry getgfx(r,s)
00057 c
00058 c       Graphics input.
00059 c
00060         xl = xlen
00061         if (xl.le.0.) xl = 1.
00062         yl = ylen
00063         if (yl.le.0.) yl = 1.
00064 c
00065         if (ireplay.eq.0) then
00066             if (gfxin()) then
00067 c
00068                 if (idev.eq.17.and.first_xuse.and.iprompt.eq.1)
00069      &          write(6,'(a)')
00070      &             'Use right-hand mouse button to indicate position.'
00071 c
00072                 call graphin(r,s)
00073 c
00074                 if (idev.eq.17) first_xuse = .false.
00075             else
00076                 if (iprompt.eq.0) return
00077                 call devoff
00078                 write(6,'(''No graphics input.  Enter r, s: ''$)')
00079                 read(5,*,end=99,err=99)r,s
00080             end if
00081 c
00082             if (nsave.lt.NSAVEMAX) then
00083                 nsave = nsave + 1
00084                 rsave(nsave) = r/xl
00085                 ssave(nsave) = s/yl
00086             end if
00087         else
00088             if (isave.lt.nsave) then
00089                 isave = isave + 1
00090                 r = xl*rsave(isave)
00091                 s = yl*ssave(isave)
00092             end if
00093         end if
00094 c
00095 99      return
00096 c
00097         entry getstring(input,istart,nin,string)
00098 c
00099 c       General keyboard input, with optional prompt.
00100 c
00101         if (ireplay.eq.0) then
00102 c
00103             call devoff
00104             if (istart.le.nin) then
00105                 write(6,'(a,'' '',$)')input(istart:nin)
00106             else
00107                 write(6,'(''Input string: ''$)')
00108             end if
00109             string = ' '
00110             if (interact.eq.1.and.num_win(17).gt.0) then
00111 c
00112 c               Get input via X, keeping screen up to date.
00113 c
00114                 call myflush(6)
00115                 string = '\0'
00116 c
00117                 call win_read_line(string)
00118 c
00119             else
00120                 read(5,'(a)',err=999,end=999)string
00121             end if
00122 c
00123             if (nsave.lt.NSAVEMAX) then
00124                 nsave = nsave + 1
00125                 strsave(nsave) = string(1:min(200,len(string)))
00126             end if
00127         else
00128             if (isave.lt.nsave) then
00129                 isave = isave + 1
00130                 string = strsave(isave)
00131             end if
00132         end if
00133 c
00134 999     return
00135 c
00136         end

Generated at Sun Feb 24 09:57:01 2002 for STARLAB by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001