Graphics.UI.GLUT.State

GLUT-2.5.1.1: A binding for the OpenGL Utility Toolkit

Copyright | (c) Sven Panne 2002-2013
License | BSD3
Maintainer | Sven Panne <svenpanne@gmail.com>
Stability | stable
Portability | portable
Safe Haskell | None
Language | Haskell98

Graphics.UI.GLUT.State

Contents

- State of all windows
- State of the current window
  - Framebuffer state
  - Full screen state
  - Object rendering state
  - Vertex attribute state
  - Layer state
- Timing
- Device information
- GLUT information

Description

GLUT maintains a considerable amount of programmer visible state. Some (but not all) of this state may be directly retrieved.

Synopsis

- windowBorderWidth :: GettableStateVar Int
- windowHeaderHeight :: GettableStateVar Int
- skipStaleMotionEvents :: StateVar Bool
- rgba :: GettableStateVar Bool
- type BufferDepth = Int
- rgbaBufferDepths :: GettableStateVar (BufferDepth, BufferDepth, BufferDepth, BufferDepth)
- colorBufferDepth :: GettableStateVar BufferDepth
- doubleBuffered :: GettableStateVar Bool
- stereo :: GettableStateVar Bool
- accumBufferDepths :: GettableStateVar (BufferDepth, BufferDepth, BufferDepth, BufferDepth)
- depthBufferDepth :: GettableStateVar BufferDepth
- stencilBufferDepth :: GettableStateVar BufferDepth
- type SampleCount = Int
- sampleCount :: GettableStateVar SampleCount
- formatID :: GettableStateVar Int
- fullScreenMode :: StateVar Bool
- geometryVisualizeNormals :: StateVar Bool
- vertexAttribCoord3 :: SettableStateVar (Maybe AttribLocation)
- vertexAttribNormal :: SettableStateVar (Maybe AttribLocation)
- vertexAttribTexCoord2 :: SettableStateVar (Maybe AttribLocation)
- damaged :: Layer -> GettableStateVar Bool
- elapsedTime :: GettableStateVar Int
- screenSize :: GettableStateVar Size
- screenSizeMM :: GettableStateVar Size
- hasKeyboard :: GettableStateVar Bool
- type ButtonCount = Int
- numMouseButtons :: GettableStateVar (Maybe ButtonCount)
- numSpaceballButtons :: GettableStateVar (Maybe ButtonCount)
- type DialCount = Int
- numDialsAndButtons :: GettableStateVar (Maybe (DialCount, ButtonCount))
- numTabletButtons :: GettableStateVar (Maybe ButtonCount)
- type AxisCount = Int
- type PollRate = Int
- joystickInfo :: GettableStateVar (Maybe (ButtonCount, PollRate, AxisCount))
- supportedNumAuxBuffers :: GettableStateVar [Int]
- supportedSamplesPerPixel :: GettableStateVar [SampleCount]
- glutVersion :: GettableStateVar String
- initState :: GettableStateVar Bool

# State of all windows

windowBorderWidth :: GettableStateVar Int

(freeglut only) Contains the thickness of the sizing border around the perimeter of a window that can be resized, in pixels.

windowHeaderHeight :: GettableStateVar Int

(freeglut only) Contains the height of the header/caption area of a window in pixels.

skipStaleMotionEvents :: StateVar Bool

(freeglut on X11 only) Controls if all but the last motion event should be discarded.

# State of the current window

## Framebuffer state

rgba :: GettableStateVar Bool

Contains `True` when the current layer of the current window is in RGBA mode, `False` means color index mode.

type BufferDepth = Int

Bit depth of a buffer

rgbaBufferDepths :: GettableStateVar (BufferDepth, BufferDepth, BufferDepth, BufferDepth)

Contains the number of red, green, blue, and alpha bits in the color buffer of the current window's current layer (0 in color index mode).

colorBufferDepth :: GettableStateVar BufferDepth

Contains the total number of bits in the color buffer of the /current window's/ current layer. For an RGBA layer, this is the sum of the red, green, blue, and alpha bits. For an color index layer, this is the number of bits of the color indexes.

doubleBuffered :: GettableStateVar Bool

Contains `True` when the current layer of the current window is double buffered, `False` otherwise.

stereo :: GettableStateVar Bool

Contains `True` when the current layer of the current window is stereo, `False` otherwise.

accumBufferDepths :: GettableStateVar (BufferDepth, BufferDepth, BufferDepth, BufferDepth)

Contains the number of red, green, blue, and alpha bits in the accumulation buffer of the current window's current layer (0 in color index mode).

depthBufferDepth :: GettableStateVar BufferDepth

Contains the number of bits in the depth buffer of the current window's current layer.

stencilBufferDepth :: GettableStateVar BufferDepth

Contains the number of bits in the stencil buffer of the /current window's/ current layer.

type SampleCount = Int

Number of samples for multisampling

sampleCount :: GettableStateVar SampleCount

Contains the number of samples for multisampling for the current window.

formatID :: GettableStateVar Int

Contains the window system dependent format ID for the current layer of the current window. On X11 GLUT implementations, this is the X visual ID. On Win32 GLUT implementations, this is the Win32 Pixel Format Descriptor number. This value is returned for debugging, benchmarking, and testing ease.

## Full screen state

fullScreenMode :: StateVar Bool

(freeglut only) Contains `True` if the current window is in full screen mode, `False` otherwise.

## Object rendering state

geometryVisualizeNormals :: StateVar Bool

(freeglut only) Controls if vectors representing the normals should be drawn, too, when objects are drawn.

## Vertex attribute state

vertexAttribCoord3 :: SettableStateVar (Maybe AttribLocation)

(freeglut only) If `vertexAttribCoord3` and `vertexAttribNormal` both contain `Nothing`, the fixed function pipeline is used to draw objects. Otherwise VBOs are used and the coordinates are passed via `Just` this attribute location (for a vec3).

vertexAttribNormal :: SettableStateVar (Maybe AttribLocation)

(freeglut only) If `vertexAttribCoord3` and `vertexAttribNormal` both contain `Nothing`, the fixed function pipeline is used to draw objects. Otherwise VBOs are used and the normals are passed via `Just` this attribute location (for a vec3).

vertexAttribTexCoord2 :: SettableStateVar (Maybe AttribLocation)

(freeglut only) If VBOs are used to draw objects (controlled via `vertexAttribCoord3` and `vertexAttribNormal`), the texture coordinates are passed via `Just` this attribute location (for a vec2).

## Layer state

damaged :: Layer -> GettableStateVar Bool

Contains `True` if the given plane of the current window has been damaged (by window system activity) since the last display callback was triggered. Calling `postRedisplay` or `postOverlayRedisplay` will not set this `True`.

# Timing

elapsedTime :: GettableStateVar Int

Contains the number of milliseconds since `initialize` was called.

# Device information

If a device is not available, the following state variables contain `Nothing`, otherwise they return `Just` the specific device information. Only a screen is always assumed.

screenSize :: GettableStateVar Size

The size of the screen in pixels.

screenSizeMM :: GettableStateVar Size

The size of the screen in millimeters.

hasKeyboard :: GettableStateVar Bool

Contains `True` if a keyboard is present, `False` otherwise.

type ButtonCount = Int

Number of buttons of an input device

numMouseButtons :: GettableStateVar (Maybe ButtonCount)

Contains `Just` the number of buttons of an attached mouse or `Nothing` if there is none.

numSpaceballButtons :: GettableStateVar (Maybe ButtonCount)

Contains `Just` the number of buttons of the attached Spaceball or `Nothing` if there is none.

type DialCount = Int

Number of dials of a dial and button box

numDialsAndButtons :: GettableStateVar (Maybe (DialCount, ButtonCount))

Contains `Just` the number of dials and buttons of an attached dial & button box or `Nothing` if there is none.

numTabletButtons :: GettableStateVar (Maybe ButtonCount)

Contains `Just` the number of buttons of an attached tablet or `Nothing` if there is none.

type AxisCount = Int

Number of axes of a joystick

type PollRate = Int

The a rate at which a joystick is polled (in milliseconds)

joystickInfo :: GettableStateVar (Maybe (ButtonCount, PollRate, AxisCount))

Contains `Just` the number of buttons of an attached joystick, the number of joystick axes, and the rate at which the joystick is polled. Contains `Nothing` if there is no joystick attached.

supportedNumAuxBuffers :: GettableStateVar [Int]

(freeglut only) Contains a list of the number of auxiliary buffers supported, in increasing order.

supportedSamplesPerPixel :: GettableStateVar [SampleCount]

(freeglut only) Contains a list of the number of samples per pixel supported for multisampling, in increasing order.

# GLUT information

glutVersion :: GettableStateVar String

Contains version of GLUT in the form of `flavour major.minor.patchlevel`, where `flavour` is one of `GLUT`, `freeglut` or `OpenGLUT`.

initState :: GettableStateVar Bool

(freeglut only) Contains `True` if GLUT has been initialized with `initialize` or `getArgsAndInitialize` has and not yet been de-initialized with `exit`. Contains `False` otherwise.