3 // A program to test
OpenGL events
7 Screen
appendProto(OpenGL)
19 action
:= "move mouse to start"
21 reshape
:= method(w
, h
,
25 glMatrixMode(GL_PROJECTION
)
27 gluOrtho2D(0, w
, 0, h
)
28 glMatrixMode(GL_MODELVIEW
)
30 glClearColor(1, 1, 1, 1)
35 glClear(GL_COLOR_BUFFER_BIT
)
38 if (xDown
, drawSelection
)
47 drawCrossHairs
:= method(
49 glColor4d(.7, .7, .7, 1)
52 glVertex3d(x
, height
, 0)
54 glVertex3d(width
, y
, 0)
59 drawSelection
:= method(
60 glColor4d(.7, .7, .7, .1)
62 glVertex3d(xDown
, yDown
, 0)
63 glVertex3d(xDown
, y
, 0)
65 glVertex3d(x
, yDown
, 0)
70 glVertex3d(xDown
, yDown
, 0)
71 glVertex3d(xDown
, y
, 0)
73 glVertex3d(x
, yDown
, 0)
78 glRectd(x
- b
, y
- b
, x
+ b
, y
+ b
)
81 drawActionMessage
:= method(
82 glColor4d(.5, .5, .5, 1)
85 glTranslated(10, 10, 0)
90 drawString
:= method(string
,
92 nil
//font
drawString(string
)
96 glutStrokeString(0, string
)
101 drawTimerMessage
:= method(
102 glColor4d(.5, .5, .5, 1)
105 glTranslated(10, 30, 0)
106 drawString("timer ".. timerCount
)
109 glTranslated(10, 50, 0)
110 drawString("joystick ".. jb
.. " " .. jv
)
115 keyboard
:= method(key
, mx
, my
,
116 action
= "keyboard(" .. key asCharacter
..", " .. mx floor
.. ", ".. my floor
.. ")"
117 x
= mx
; y
= height
- my
121 special
:= method(key
, mx
, my
,
122 action
= "special(" .. key
..", " .. mx floor
.. ", ".. my floor
.. ")"
123 x
= mx
; y
= height
- my
127 motion
:= method(mx
, my
,
128 action
= "motion(" .. mx floor
.. ", ".. my floor
.. ")"
129 x
= mx
; y
= height
- my
133 passiveMotion
:= method(mx
, my
,
134 action
= "passiveMotion(" .. mx floor
.. ", " .. my floor
.. ")"
135 x
= mx
; y
= height
- my
139 mouse
:= method(button
, state
, mx
, my
,
140 action
= "mouse(" .. button floor
..", " .. state floor
.. ", " .. mx floor
.. ", " .. my floor
.. ")"
141 x
= mx
; y
= height
- my
151 action
= action
.. " modifiers: " .. glutGetModifiers
157 timerCount
= timerCount
+ 1
158 glutTimerFunc(100, 0)
162 joystick
:= method(b
, v
,
169 glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA
)
170 glutInitWindowSize(512, 512)
172 glutCreateWindow("Events Test")
173 glutEventTarget(self)
175 # register event functions
182 glutPassiveMotionFunc
184 //glutInitJoystick("/dev/input/js0")
185 glutJoystickFunc(100)
186 glutTimerFunc(100, 0)
187 glutReshapeWindow(1000,1000)
189 glEnable(GL_LINE_SMOOTH
)
191 glBlendFunc(GL_SRC_ALPHA
, GL_ONE_MINUS_SRC_ALPHA
)
192 //glBlendFunc(GL_SRC_ALPHA
, GL_ONE
)
193 glHint(GL_LINE_SMOOTH_HINT
, GL_NICEST
)