home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 22 gnu
/
22-gnu.zip
/
openglso.zip
/
a1.gr
next >
Wrap
Text File
|
2000-02-16
|
5KB
|
158 lines
#!/bin/csh
#\
exec ./grsh -f $0 $*
# note: OS/2 PM programs don't have stderr, so the puts commands are
# commented out.
# ========================================================================= #
# CS 488/688 #
# Introduction to Graphics #
# #
# Assignment 1: OpenGL #
# #
# ========================================================================= #
# Give application a title
wm title . "Assignment 1"
# Set desired bounds on overall dimensions
wm minsize . 200 200
wm maxsize . 1000 1000
# Desired initial width and height of the OpenGL raster
set width 850
set height 700
# -----------------------------------------------------------------------
# The menu bar
# -----------------------------------------------------------------------
set menuBar .mbar
frame .mbar -relief raised -bd 4
pack .mbar -side top -anchor w -fill x
# -----------------------------------------------------------------------
# File menu
# -----------------------------------------------------------------------
menubutton .mbar.fileMenu -text File -menu .mbar.fileMenu.menu
menu .mbar.fileMenu.menu
# `Quit' entry
.mbar.fileMenu.menu add command -label "Quit" -command exit
pack .mbar.fileMenu -side left
# -----------------------------------------------------------------------
# Make OpenGL display area using Togl
# -----------------------------------------------------------------------
frame .frame -bd 2m -relief sunken
pack .frame -expand yes -padx 2m -pady 2m
# Use a variable to keep track of this widget
set raster .frame.raster
# Set up the OpenGL rendering area with all the options we'll need
togl $raster \
-rgba true \
-redsize 2 \
-greensize 2 \
-bluesize 2 \
-depth true \
-depthsize 12 \
-double true \
-width $width \
-height $height
pack $raster -padx 2m -pady 2m -fill both -expand yes
# -----------------------------------------------------------------------
# Event Bindings
# -----------------------------------------------------------------------
# Mouse button 1 depressed
bind $raster <Button-1> {
# puts stderr "Testing: <Button-1> event"
set b1 1
}
# Mouse button 1 released
bind $raster <ButtonRelease-1> {
# puts stderr "Testing: <ButtonRelease-1> event"
set b1 0
}
# Mouse button 2 depressed
bind $raster <Button-2> {
# puts stderr "Testing: <Button-2> event"
set b2 1
}
# Mouse button 2 released
bind $raster <ButtonRelease-2> {
# puts stderr "Testing: <ButtonRelease-2> event"
set b2 0
}
# Mouse button 3 depressed
bind $raster <Button-3> {
# puts stderr "Testing: <Button-3> event"
set b3 1
}
# Mouse button 3 released
bind $raster <ButtonRelease-3> {
# puts stderr "Testing: <ButtonRelease-3> event"
set b3 0
}
# Mouse moved
bind $raster <Motion> {
# puts stderr "Testing: <Motion> event: %x,%y"
# change Gr state as apropriate here
# post redisplay
$raster render
}
# -----------------------------------------------------------------------
# Initial user interface state
# -----------------------------------------------------------------------
# Initially the mouse buttons assumed to all be up
set b1 0
set b2 0
set b3 0
# -----------------------------------------------------------------------
# Reset state to default
# -----------------------------------------------------------------------
proc ResetAll {} {
global mode raster
# reset user interface state
set mode orient
# reset Gr state
gr_reset
# post redisplay request
$raster render
}
# -----------------------------------------------------------------------
# Test glue code and stubs, print out command usages
# -----------------------------------------------------------------------
#puts stderr [gr_mode ?]
#puts stderr [gr_buffer ?]
#puts stderr [gr_lighting ?]
#puts stderr [gr_save ?]
#puts stderr [gr_rotate ?]
#puts stderr [gr_scale ?]
#puts stderr [gr_reset ?]
# -----------------------------------------------------------------------
# Reset state and enter main Tk event-processing loop
# -----------------------------------------------------------------------
ResetAll