home *** CD-ROM | disk | FTP | other *** search
/ gondwana.ecr.mu.oz.au/pub/ / Graphics.tar / Graphics / VOGLE.ZIP / EXAMPLES / FLOC.FOR < prev    next >
Text File  |  2000-02-11  |  2KB  |  80 lines

  1. c
  2. c a routine to demonstrate using locator.
  3. c
  4.     program flocator
  5.  
  6.     character dev*20
  7.     integer bt, BLACK, GREEN, BLUE
  8.     real x, y, sx, sy
  9.     logical act, curpnt
  10.     parameter (BLACK = 0, GREEN = 2, BLUE = 4)
  11. c
  12. c Note the declaration of the function locator below
  13. c
  14.     integer locator
  15.  
  16.     print*,'Enter device name:'
  17.     read(*,'(a)') dev
  18.  
  19.     call vinit(dev)
  20.  
  21.     call color(BLACK)
  22.     call clear
  23.  
  24.     call color(BLUE)
  25.  
  26. c
  27. c    draw some axes
  28. c
  29.     call move2(0.0, 1.0)
  30.     call draw2(0.0, -1.0)
  31.  
  32.     call move2(1.0, 0.0)
  33.     call draw2(-1.0, 0.0)
  34.  
  35.     call color(GREEN)
  36.  
  37.     act = .false.
  38.     curpnt = .false.
  39. c
  40. c    locator returns whether a mouse button has been
  41. c    pressed or not. In a device such as the tektronix
  42. c    where you have to wait for a keypress to get the
  43. c    position of the crosshairs locator returns 0
  44. c    automatically on every second call. A return value
  45. c    of 2 indicates the second mouse button has been pressed.
  46. c    A return value of 1 indicates the first mouse button has
  47. c    been pressed. We wait for the locator to return zero so
  48. c    that we know the mouse button has been released.
  49. c
  50.  
  51. 1    continue
  52.         bt = locator(x, y)
  53.         if (bt .eq. -1) then
  54.             call vexit
  55.             print*,'No locator device found'
  56.             stop
  57.         else if (bt .eq. 2) then
  58.             call vexit
  59.             stop
  60.         else if (bt .eq. 0) then
  61.             act = .true.
  62.         else if (act) then 
  63.             act = .false.
  64.             if (bt .eq. 1) then
  65.                 if (curpnt) then
  66.                     call move2(sx, sy)
  67.                     call draw2(x, y)
  68.                     curpnt = .false.
  69.                 else
  70.                     curpnt = .true.
  71.                 end if
  72.  
  73.                 sx = x
  74.                 sy = y
  75.             end if
  76.         end if
  77.     goto 1
  78.  
  79.     end
  80.