home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 22 gnu / 22-gnu.zip / openglso.zip / a1.gr next >
Text File  |  2000-02-16  |  5KB  |  158 lines

  1. #!/bin/csh
  2. #\
  3. exec ./grsh -f $0 $*
  4.  
  5. # note: OS/2 PM programs don't have stderr, so the puts commands are
  6. # commented out.
  7.  
  8. # ========================================================================= #
  9. #                                 CS 488/688                                #
  10. #                          Introduction to Graphics                         #
  11. #                                                                           #
  12. #                           Assignment 1: OpenGL                            #
  13. #                                                                           #
  14. # ========================================================================= #
  15.  
  16. # Give application a title
  17. wm title . "Assignment 1"
  18.  
  19. # Set desired bounds on overall dimensions
  20. wm minsize . 200 200
  21. wm maxsize . 1000 1000
  22.  
  23. # Desired initial width and height of the OpenGL raster
  24. set width 850
  25. set height 700
  26.  
  27. # -----------------------------------------------------------------------
  28. # The menu bar 
  29. # -----------------------------------------------------------------------
  30. set menuBar .mbar
  31. frame .mbar -relief raised -bd 4
  32. pack .mbar -side top -anchor w -fill x
  33.  
  34. # -----------------------------------------------------------------------
  35. # File menu 
  36. # -----------------------------------------------------------------------
  37. menubutton .mbar.fileMenu -text File -menu .mbar.fileMenu.menu
  38. menu .mbar.fileMenu.menu
  39.  
  40. # `Quit' entry 
  41. .mbar.fileMenu.menu add command -label "Quit" -command exit 
  42.  
  43. pack .mbar.fileMenu -side left
  44.  
  45. # -----------------------------------------------------------------------
  46. # Make OpenGL display area using Togl
  47. # -----------------------------------------------------------------------
  48. frame .frame -bd 2m -relief sunken
  49. pack .frame -expand yes -padx 2m -pady 2m
  50.  
  51. # Use a variable to keep track of this widget
  52. set raster .frame.raster
  53.  
  54. # Set up the OpenGL rendering area with all the options we'll need
  55. togl $raster \
  56.     -rgba true \
  57.     -redsize 2 \
  58.     -greensize 2 \
  59.     -bluesize 2 \
  60.     -depth true \
  61.     -depthsize 12 \
  62.     -double true \
  63.     -width $width \
  64.     -height $height
  65. pack $raster -padx 2m -pady 2m -fill both -expand yes 
  66.  
  67. # -----------------------------------------------------------------------
  68. # Event Bindings 
  69. # -----------------------------------------------------------------------
  70.  
  71. # Mouse button 1 depressed
  72. bind $raster <Button-1> {
  73. #    puts stderr "Testing: <Button-1> event"
  74.     set b1 1
  75. }
  76.  
  77. # Mouse button 1 released
  78. bind $raster <ButtonRelease-1> {
  79. #    puts stderr "Testing: <ButtonRelease-1> event"
  80.     set b1 0
  81. }
  82.  
  83. # Mouse button 2 depressed
  84. bind $raster <Button-2> {
  85. #    puts stderr "Testing: <Button-2> event"
  86.     set b2 1
  87. }
  88.  
  89. # Mouse button 2 released
  90. bind $raster <ButtonRelease-2> {
  91. #    puts stderr "Testing: <ButtonRelease-2> event"
  92.     set b2 0
  93. }
  94.  
  95. # Mouse button 3 depressed
  96. bind $raster <Button-3> {
  97. #    puts stderr "Testing: <Button-3> event"
  98.     set b3     1
  99. }
  100.  
  101. # Mouse button 3 released
  102. bind $raster <ButtonRelease-3> {
  103. #    puts stderr "Testing: <ButtonRelease-3> event"
  104.     set b3 0
  105. }
  106.  
  107. # Mouse moved
  108. bind $raster <Motion> {
  109. #    puts stderr "Testing: <Motion> event: %x,%y"
  110.  
  111.     # change Gr state as apropriate here
  112.  
  113.     # post redisplay
  114.     $raster render
  115. }
  116.  
  117. # -----------------------------------------------------------------------
  118. # Initial user interface state
  119. # -----------------------------------------------------------------------
  120.  
  121. # Initially the mouse buttons assumed to all be up
  122. set b1 0
  123. set b2 0
  124. set b3 0
  125.  
  126. # -----------------------------------------------------------------------
  127. # Reset state to default
  128. # -----------------------------------------------------------------------
  129. proc ResetAll {} {
  130.     global mode raster 
  131.  
  132.     # reset user interface state
  133.     set mode orient
  134.  
  135.     # reset Gr state
  136.     gr_reset
  137.  
  138.     # post redisplay request
  139.     $raster render
  140. }
  141.  
  142. # -----------------------------------------------------------------------
  143. # Test glue code and stubs, print out command usages
  144. # -----------------------------------------------------------------------
  145.  
  146. #puts stderr [gr_mode ?]
  147. #puts stderr [gr_buffer ?]
  148. #puts stderr [gr_lighting ?]
  149. #puts stderr [gr_save ?]
  150. #puts stderr [gr_rotate ?]
  151. #puts stderr [gr_scale ?]
  152. #puts stderr [gr_reset ?]
  153.  
  154. # -----------------------------------------------------------------------
  155. # Reset state and enter main Tk event-processing loop
  156. # -----------------------------------------------------------------------
  157. ResetAll
  158.