|
Graphics.UI.GLUT.Callbacks.Window | Portability | portable | Stability | stable | Maintainer | sven.panne@aedion.de |
|
|
|
|
|
Description |
|
|
Synopsis |
|
|
|
|
Redisplay callbacks
|
|
|
A display callback
|
|
|
Controls the display callback for the current window. When GLUT determines
that the normal plane for the window needs to be redisplayed, the display
callback for the window is called. Before the callback, the current window
is set to the window needing to be redisplayed and (if no overlay display
callback is registered) the layer in use is set to the normal plane. The
entire normal plane region should be redisplayed in response to the callback
(this includes ancillary buffers if your program depends on their state).
GLUT determines when the display callback should be triggered based on the
window's redisplay state. The redisplay state for a window can be either set
explicitly by calling Graphics.UI.GLUT.Window.postRedisplay or implicitly
as the result of window damage reported by the window system. Multiple posted
redisplays for a window are coalesced by GLUT to minimize the number of
display callbacks called.
When an overlay is established for a window, but there is no overlay display
callback registered, the display callback is used for redisplaying both the
overlay and normal plane (that is, it will be called if either the redisplay
state or overlay redisplay state is set). In this case, the layer in use is
not implicitly changed on entry to the display callback.
See overlayDisplayCallback to understand how distinct callbacks for the
overlay and normal plane of a window may be established.
When a window is created, no display callback exists for the window. It is
the responsibility of the programmer to install a display callback for the
window before the window is shown. A display callback must be registered for
any window that is shown. If a window becomes displayed without a display
callback being registered, a fatal error occurs. There is no way to
"deregister" a display callback (though another callback routine can always
be registered).
Upon return from the display callback, the normal damaged state of the window
(see Graphics.UI.GLUT.State.damaged) is cleared. If there is no overlay
display callback registered the overlay damaged state of the window (see
Graphics.UI.GLUT.State.damaged) is also cleared.
|
|
|
Controls the overlay display callback for the current window. The overlay
display callback is functionally the same as the window's display callback
except that the overlay display callback is used to redisplay the window's
overlay.
When GLUT determines that the overlay plane for the window needs to be
redisplayed, the overlay display callback for the window is called. Before
the callback, the current window is set to the window needing to be
redisplayed and the layer in use is set to the overlay. The entire overlay
region should be redisplayed in response to the callback (this includes
ancillary buffers if your program depends on their state).
GLUT determines when the overlay display callback should be triggered based
on the window's overlay redisplay state. The overlay redisplay state for a
window can be either set explicitly by calling
Graphics.UI.GLUT.Overlay.postOverlayRedisplay or implicitly as the result
of window damage reported by the window system. Multiple posted overlay
redisplays for a window are coalesced by GLUT to minimize the number of
overlay display callbacks called.
Upon return from the overlay display callback, the overlay damaged state of
the window (see Graphics.UI.GLUT.State.damaged) is cleared.
Initially there is no overlay display callback registered when an overlay is
established. See displayCallback to understand how the display callback
alone is used if an overlay display callback is not registered.
|
|
Reshape callback
|
|
|
A reshape callback
|
|
|
Controls the reshape callback for the current window. The reshape callback
is triggered when a window is reshaped. A reshape callback is also triggered
immediately before a window's first display callback after a window is
created or whenever an overlay for the window is established. The parameter
of the callback specifies the new window size in pixels. Before the callback,
the current window is set to the window that has been reshaped.
If a reshape callback is not registered for a window or reshapeCallback is
set to Nothing (to deregister a previously registered callback), the
default reshape callback is used. This default callback will simply call
Graphics.Rendering.OpenGL.GL.CoordTrans.viewport (Position 0 0) (Size width height)
on the normal plane (and on the overlay if one exists).
If an overlay is established for the window, a single reshape callback is
generated. It is the callback's responsibility to update both the normal
plane and overlay for the window (changing the layer in use as necessary).
When a top-level window is reshaped, subwindows are not reshaped. It is up to
the GLUT program to manage the size and positions of subwindows within a
top-level window. Still, reshape callbacks will be triggered for subwindows
when their size is changed using Graphics.UI.GLUT.Window.windowSize.
|
|
Callback for visibility changes
|
|
|
The visibility state of the current window
| Constructors | NotVisible | No part of the current window is visible, i.e., until the
window's visibility changes, all further rendering to the
window is discarded.
| Visible | The current window is totally or partially visible. GLUT
considers a window visible if any pixel of the window is
visible or any pixel of any descendant window is visible on
the screen.
|
| Instances | |
|
|
|
A visibilty callback
|
|
|
Controls the visibility callback for the current window. The visibility
callback for a window is called when the visibility of a window changes.
If the visibility callback for a window is disabled and later re-enabled, the
visibility status of the window is undefined; any change in window visibility
will be reported, that is if you disable a visibility callback and re-enable
the callback, you are guaranteed the next visibility change will be reported.
|
|
Window close callback
|
|
|
|
|
|
Keyboard and mouse input callback
|
|
|
A generalized view of keys
| Constructors | | Instances | |
|
|
|
Special keys
| Constructors | KeyF1 | | KeyF2 | | KeyF3 | | KeyF4 | | KeyF5 | | KeyF6 | | KeyF7 | | KeyF8 | | KeyF9 | | KeyF10 | | KeyF11 | | KeyF12 | | KeyLeft | | KeyUp | | KeyRight | | KeyDown | | KeyPageUp | | KeyPageDown | | KeyHome | | KeyEnd | | KeyInsert | |
| Instances | |
|
|
|
Mouse buttons, including a wheel
| Constructors | LeftButton | | MiddleButton | | RightButton | | WheelUp | | WheelDown | |
| Instances | |
|
|
|
The current state of a key or button
| Constructors | | Instances | |
|
|
|
The state of the keyboard modifiers
| Constructors | | Instances | |
|
|
|
A keyboard/mouse callback
|
|
|
Controls the keyboard/mouse callback for the current window. The
keyboard/mouse callback for a window is called when the state of a key or
mouse button changes. The callback parameters indicate the new state of the
key/button, the state of the keyboard modifiers, and the mouse location in
window relative coordinates.
|
|
Mouse movement callbacks
|
|
|
A motion callback
|
|
|
Controls the motion callback for the current window. The motion callback
for a window is called when the mouse moves within the window while one or
more mouse buttons are pressed. The callback parameter indicates the mouse
location in window relative coordinates.
|
|
|
Controls the passive motion callback for the current window. The passive
motion callback for a window is called when the mouse moves within the window
while no mouse buttons are pressed. The callback parameter indicates the
mouse location in window relative coordinates.
|
|
|
The relation between the mouse pointer and the current window has
changed.
| Constructors | WindowLeft | The mouse pointer has left the current window.
| WindowEntered | The mouse pointer has entered the current window.
|
| Instances | |
|
|
|
An enter/leave callback
|
|
|
Controls the mouse enter/leave callback for the current window. Note
that some window systems may not generate accurate enter/leave callbacks.
X Implementation Notes: An X implementation of GLUT should generate
accurate enter/leave callbacks.
|
|
Spaceball callback
|
|
|
Translation of the Spaceball along one axis, normalized to be in the range
of -1000 to +1000 inclusive
|
|
|
Rotation of the Spaceball along one axis, normalized to be in the range
of -1800 .. +1800 inclusive
|
|
|
The index of a specific buttons of an input device.
|
|
|
The state of the Spaceball has changed.
| Constructors | | Instances | |
|
|
|
A SpaceballButton callback
|
|
|
Controls the Spaceball callback for the current window. The Spaceball
callback for a window is called when the window has Spaceball input focus
(normally, when the mouse is in the window) and the user generates Spaceball
translations, rotations, or button presses. The number of available Spaceball
buttons can be determined with Graphics.UI.GLUT.State.numSpaceballButtons.
Registering a Spaceball callback when a Spaceball device is not available has
no effect and is not an error. In this case, no Spaceball callbacks will be
generated.
|
|
Dial & button box callback
|
|
data DialAndButtonBoxInput | Source |
|
The dial & button box state has changed.
| Constructors | | Instances | |
|
|
|
The index of a specific dial of a dial and button box.
|
|
|
A dial & button box callback
|
|
|
Controls the dial & button box callback for the current window. The dial
& button box button callback for a window is called when the window has dial
& button box input focus (normally, when the mouse is in the window) and the
user generates dial & button box button presses or dial changes. The number
of available dial & button box buttons and dials can be determined with
Graphics.UI.GLUT.State.numDialsAndButtons.
Registering a dial & button box callback when a dial & button box device is
not available is ineffectual and not an error. In this case, no dial & button
box button will be generated.
|
|
Tablet callback
|
|
|
Absolute tablet position, with coordinates normalized to be in the range of
0 to 2000 inclusive
| Constructors | | Instances | |
|
|
|
The table state has changed.
| Constructors | | Instances | |
|
|
|
A tablet callback
|
|
|
Controls the tablet callback for the current window. The tablet callback
for a window is called when the window has tablet input focus (normally, when
the mouse is in the window) and the user generates tablet motion or button
presses. The number of available tablet buttons can be determined with
Graphics.UI.GLUT.State.numTabletButtons.
Registering a tablet callback when a tablet device is not available is
ineffectual and not an error. In this case, no tablet callbacks will be
generated.
|
|
Joystick callback
|
|
|
The state of the joystick buttons
| Constructors | | Instances | |
|
|
|
Absolute joystick position, with coordinates normalized to be in the range
of -1000 to 1000 inclusive. The signs of the three axes mean the following:
- negative = left, positive = right
- negative = towards player, positive = away
- if available (e.g. rudder): negative = down, positive = up
| Constructors | | Instances | |
|
|
|
A joystick callback
|
|
|
Controls the joystick callback for the current window. The joystick
callback is called either due to polling of the joystick at the uniform timer
interval specified (if > 0) or in response to an explicit call of
Graphics.UI.GLUT.DeviceControl.forceJoystickCallback.
X Implementation Notes: Currently GLUT has no joystick support for X11.
|
|
Produced by Haddock version 2.4.2 |