GLFW-0.5.1.0: A Haskell binding for GLFW

Safe HaskellNone

Graphics.UI.GLFW

Contents

Description

Haskell Interface to GLFW (http://www.glfw.org). Supports GLFW API version 2.7.5.

GLFW thread functions are not supported by this module; use Haskell thread instead.

Synopsis

Data types

type Version = (Int, Int, Int)Source

Version is represented by (major, minor, revision), used in gettable variable version.

data DisplayBits Source

Bit depth of GL display buffers, used in openWindow.

data WindowMode Source

Window or Fullscreen mode, used in openWindow.

Constructors

Window 
FullScreen 

data VideoMode Source

Video modes used in gettable variables videoModes and desktopMode.

data KeyButtonState Source

Key or button state.

Constructors

Release 
Press 

data Key Source

Key is represented by either a character key or a special key.

Instances

data SpecialKey Source

Special key is a key not represented in the 32 - 127 printable ASCII range.

data MouseButton Source

Mouse button is represented by left, right, middle or a number from 0 to 7. Differs from the C API.

newtype Joystick Source

Joystick is represent a number from 0 to 15. Differs from the C API.

Constructors

Joystick Int 

data JoystickParam Source

Joystick parameters

Constructors

Present

Indicates whether the joystick is present.

Axes

Number of axes supported by the joystick.

Buttons

Number of buttons supported by the joystick.

data SpecialFeature Source

Special features used in enableSpecial and disableSpecial.

Constructors

MouseCursor

When enabled, the mouse cursor is visible and mouse coordinates are relative to the upper left corner of the client area of the GLFW window. The coordinates are limited to the client area of the window.

StickyKey

When enabled, keys which are pressed will not be released until they are physically released and checked with getKey.

StickyMouseButton

When enabled, mouse buttons which are pressed will not be released until they are physically released and checked with getMouseButton.

SystemKey

When enabled, pressing standard system key combinations, such as ALT+TAB under Windows, will give the normal behavior.

KeyRepeat

When enabled, the key and character callback functions are called repeatedly when a key is held down long enough (according to the system key repeat configuration).

AutoPollEvent

When enabled, pollEvents is automatically called each time swapBuffers is called, immediately after the buffer swap itself. Enabled by default.

data TextureFlag Source

Texture flag used in loadTexture2D and loadMemoryTexture2D.

Constructors

NoRescale

Do not rescale to the closest 2^m x 2^n resolution.

OriginUL

Specifies that the origin of the loaded image should be in the upper left corner (default is the lower left corner).

BuildMipMaps

Automatically build and upload all mipmap levels.

AlphaMap

Treat single component images as alpha maps rather than luminance maps.

data BitmapFont Source

Built-in bitmap font used in renderString.

Constructors

Fixed8x16

8x16 fixed width font.

type WindowCloseCallback = IO BoolSource

Callback type for windowCloseCallback. The callback should return True to close the window, and False otherwise.

type WindowSizeCallback = Size -> IO ()Source

Callback type for windowSizeCallback.

type KeyCallback = Key -> KeyButtonState -> IO ()Source

Callback type for keyCallback.

type CharCallback = Char -> KeyButtonState -> IO ()Source

Callback type for charCallback.

type MousePosCallback = Position -> IO ()Source

Callback type for mousePosCallback.

type MouseWheelCallback = Int -> IO ()Source

Callback type for mouseWheelCallback.

Initialization and Termination

initialize :: IO BoolSource

Initialize GLFW library. Returns True if successful, False otherwise. Must be called before any other GLFW functions.

terminate :: IO ()Source

Terminate GLFW library after use. Before a program terminates, GLFW has to be terminated in order to free up resources, etc.

version :: GettableStateVar VersionSource

Returns the GLFW C library version numbers.

Window Handling

openWindow :: Size -> [DisplayBits] -> WindowMode -> IO BoolSource

Open a window. Returns True if successful, False otherwise. GLFW applications can only open one window.

If width is zero and height is not, width will be calculated as width = 4/3 height.

If height is zero and width is not, height will be calculated as height = 3/4 width.

If both width and height are zero, width is set to 640 and height to 480.

Display bits default to 0 if no value is specified, meaning that particular buffer is not created.

In fullscreen mode a resolution that best matches the given window dimensions will be chosen.

In fullscreen mode the mouse cursor is hidden by default. To change the visibility of the mouse cursor, see, enableSpecial and disableSpecial.

closeWindow :: IO ()Source

Close the open window and destroy the associated OpenGL context.

windowTitle :: SettableStateVar StringSource

Set the title of the opened window.

windowSize :: StateVar SizeSource

Get or set the size of the opened window.

The dimensions denote the size of the client area of the window (i.e. excluding any window borders and decorations).

If the window is in fullscreen mode when setting new dimensions, the video mode will be changed to a resolution that closest matches the given dimensions.

The setter has no effect if the window is iconified.

The OpenGL context is guaranteed to be preserved when the window is resized.

windowPos :: SettableStateVar PositionSource

Set the position of the opened window.

The setter has no effect in fullscreen mode or if the window is iconified.

On multi-monitor systems, the behavior of the setter is ill-defined.

iconifyWindow :: IO ()Source

Iconify the window.

restoreWindow :: IO ()Source

Restore the window after iconification.

swapBuffers :: IO ()Source

Swap the back and front color buffers of the window. If AutoPollEvent is enabled by enableSpecial (which is the default), it also polls for new events before the swapping.

swapInterval :: SettableStateVar IntSource

Set the minimum number of monitor retraces between each each buffer swap performed by swapBuffers. If set to zero, buffer swaps will not be synchronized to the vertical refresh of the monitor.

Video Modes

videoModes :: GettableStateVar [VideoMode]Source

Get a list of detected VideoModes, the max number of which is limited to 256 for now.

desktopMode :: GettableStateVar VideoModeSource

Get the VideoMode of current desktop.

Input Handling

pollEvents :: IO ()Source

Poll events, such as user input and window events. Upon calling this function, all window states, keyboard states and mouse states are updated. If any related callback functions are registered, these are called during the call of pollEvents.

pollEvents is called implicitly from swapBuffers if AutoPollEvent is enabled (as it is by default).

waitEvents :: IO ()Source

Wait for events, such as user input and window events. The calling thread will be put to sleep until any event appears in the event queue. When events are ready, the events will be processed just as they are processed by pollEvents.

getKey :: Enum a => a -> IO KeyButtonStateSource

Return a KeyButtonState, either Release or Press, of the indicated key.

A window must be opened for the function to have any effect, and pollEvents, waitEvents or swapBuffers (with AutoPollEvent enabled) must be called before any keyboard events are recorded and reported by getKey.

getMouseButton :: MouseButton -> IO KeyButtonStateSource

Return a KeyButtonState, either Release or Press, of the indicated mouse button.

A window must be opened for the function to have any effect, and pollEvents, waitEvents or swapBuffers (with AutoPollEvent enabled) must be called before any mouse events are recorded and reported by getMouseButton.

mousePos :: StateVar PositionSource

Set or get the mouse position.

A window must be opened for the getter to have any effect, and pollEvents, waitEvents or swapBuffers (with AutoPollEvent enabled) must be called before any mouse movements are recorded and reported by mousePos.

When setting the mouse position, if the cursor is visible (not disabled), the cursor will be moved to the specified position, relative to the upper left corner of the window client area and with the Y-axis down. If the cursor is hidden (disabled), only the mouse position that is reported by the getter is changed.

mouseWheel :: StateVar IntSource

Set or get the mouse wheel position.

A window must be opened for the getter to have any effect, and pollEvents, waitEvents or swapBuffers (with AutoPollEvent enabled) must be called before any wheel movements are recorded and reported by mouseWheel.

joystickParam :: Joystick -> JoystickParam -> GettableStateVar CIntSource

Get joystick parameters.

The joystick information is updated every time the getter is queried.

No window has to be opened for joystick information to be available.

joystickPos :: Joystick -> Int -> GettableStateVar [Float]Source

Get a certain number of axis positions for the given joystick. If the number of positions requested is is greater than the number available, the unavailable positions will be 0.

The joystick state is updated every time the getter is queried.

No window has to be opened for joystick input to be available.

joystickPos' :: Joystick -> GettableStateVar [Float]Source

Get joystick positions. The returned list contains the positions for all available axes for the given joystick.

The joystick state is updated every time the getter is queried.

No window has to be opened for joystick input to be available.

joystickButtons :: Joystick -> GettableStateVar [KeyButtonState]Source

Get joystick button states. The returned list contains the states for all available buttons for the given joystick.

The joystick state is updated every time the getter is queried.

No window has to be opened for joystick input to be available.

Callbacks

Window callbacks

windowSizeCallback :: SettableStateVar WindowSizeCallbackSource

Set the function that will be called every time the window size changes.

windowCloseCallback :: SettableStateVar WindowCloseCallbackSource

Set the function that will be called when the window is closed.

windowRefreshCallback :: SettableStateVar WindowRefreshCallbackSource

Set the function that will be called when the window client area needs to be refreshed, which occurs when any part of the window client area is damaged and needs to be repainted (for instance, if a part of the window that was previously occluded by another window has become visible).

Input callbacks

keyCallback :: SettableStateVar KeyCallbackSource

Set the function that will be called when there is a key event, i.e., every time the state of a single key is changed. The reported keys are unaffected by any modifiers (such as SHIFT or ALT).

charCallback :: SettableStateVar CharCallbackSource

Set the function that will be called when there is a character event, i.e., every time a key that results in a printable Unicode character is pressed or released. Characters are affected by modifiers (such as SHIFT or ALT).

mouseButtonCallback :: SettableStateVar MouseButtonCallbackSource

Set the function that will be called when there is a mouse button event, i.e., every time a mouse button is pressed or released.

mousePosCallback :: SettableStateVar MousePosCallbackSource

Set the function that will be called when there is a mouse motion event, i.e., every time they mouse is moved.

mouseWheelCallback :: SettableStateVar MouseWheelCallbackSource

Set the function that will be called when there is a mouse wheel event, i.e., every time the mouse wheel is turned.

Timing

time :: StateVar DoubleSource

Get or set the value of the high precision timer. The time is measured in seconds as a double precision floating point number.

Unless the timer has been set by the programmer, the time is measured as the number of seconds that have passed since initialize was called.

The resolution of the timer depends on which system the program is running on.

sleep :: Double -> IO ()Source

Put the calling thread to sleep for the requested period of time in seconds.

The minimum amount of time it is possible to sleep is generally in the range 1ms to 20ms.

OpenGL Extension Support

extensionSupported :: String -> IO BoolSource

Return True if the extension is supported, False otherwise.

glVersion :: GettableStateVar VersionSource

Returns the version numbers for the currently used OpenGL implementation.

Texture loading

loadTexture2D :: String -> [TextureFlag] -> IO BoolSource

Read an image from a file specified by the given string and upload the image to OpenGL texture memory.

If BuildMipMaps flag is given, all mipmap levels for the loaded texture are generated and uploaded to texture memory.

Unless the OriginUL flag is given, the origin of the texture is the lower left corner of the loaded image. If OriginUL is given, however, the first pixel is the upper left corner.

For single component images (i.e. gray scale), the texture is uploaded as an alpha mask if the flag AlphaMap is set, otherwise it's uploaded as a luminance texture.

It only supports the Truevision Targa verson 1 file (.tga). Supported pixel formats are: 8-bit gray scale, 8-bit paletted (24/32-bit color), 24-bit true color and 32-bit true color + alpha.

Paletted images are translated into true color or true color + alpha pixel formats.

The read texture is always rescaled to the nearest larger 2^m x 2^n resolution using bilinear interpolation if necessary.

loadMemoryTexture2D :: String -> [TextureFlag] -> IO BoolSource

Read an image from the memory buffer (the given byte string) and upload the image to OpenGL texture memory. The rest is similar to loadTexture2D.

Text rendering

renderString :: BitmapFont -> String -> IO ()Source

Render a text string using the given BitmapFont. Text is rendered through texture, and is only possible with alpha enabled.

Miscellaneous

Window parameters and hints

type family ParamVal a Source

We use type families to organize Window params that can be retrieved using getParam of the Param class. The value of a param a is of type ParamVal a, where ParamVal is a type family defined as follows:

 ParamVal Opened      = Bool
 ParamVal Active      = Bool
 ParamVal Iconified   = Bool
 ParamVal Accelerated = Bool
 ParamVal RedBits     = Int
 ParamVal GreenBits   = Int
 ParamVal BlueBits    = Int
 ParamVal AlphaBits   = Int
 ParamVal DepthBits   = Int
 ParamVal StencilBits = Int

The following are both params and hints that can be set using openWindowHint of the Hint class.

 ParamVal RefreshRate         = Int
 ParamVal AccumRedBits        = Int
 ParamVal AccumGreenBits      = Int
 ParamVal AccumBlueBits       = Int
 ParamVal AccumAlphaBits      = Int
 ParamVal AuxBuffers          = Int
 ParamVal Stereo              = Bool
 ParamVal NoResize            = Bool
 ParamVal FSAASamples         = Int
 ParamVal OpenGLVersionMajor  = Int
 ParamVal OpenGLVersionMinor  = Int
 ParamVal OpenGLForwardCompat = Bool
 ParamVal OpenGLDebugContext  = Bool
 ParamVal OpenGLProfile       = Profile

class Param a whereSource

Methods

getParam :: a -> IO (ParamVal a)Source

Instances

Param OpenGLProfile

Query the OpenGL Profile implemented by the current context.

Param OpenGLDebugContext

Query whether the current OpenGL context is a debug context.

Param OpenGLForwardCompat

Query whether the current OpenGL context is forward-compatible.

Param OpenGLVersionMinor

Query the OpenGL minor version.

Param OpenGLVersionMajor

Query the OpenGL major version.

Param FSAASamples

Query the number used for the multisampling buffer.

Param NoResize

Query whether the window can be resized by the user.

Param Stereo

Query whether the window supports stereo rendering.

Param AuxBuffers

Query the number of auxiliary buffers.

Param AccumAlphaBits

Query the number of bits for the alpha channel of the accumulation buffer.

Param AccumBlueBits

Query the number of bits for the blue channel of the accumulation buffer.

Param AccumGreenBits

Query the number of bits for the green channel of the accumulation buffer.

Param AccumRedBits

Query the number of bits for the red channel of the accumulation buffer.

Param RefreshRate

Query the vertical monitor refresh rate in Hz (only used for fullscreen windows).

Param StencilBits

Query the number of bits for the stencil buffer.

Param DepthBits

Query the number of bits for the depth buffer.

Param AlphaBits

Query the number of bits for the alpha buffer.

Param BlueBits

Query the number of bits for the blue color component.

Param GreenBits

Query the number of bits for the green color component.

Param RedBits

Query the number of bits for the red color component.

Param Accelerated

Query the window hardware accelerated status.

Param Iconified

Query the window iconified status.

Param Active

Query the window active status.

Param Opened

Query the window opened status.

class Param a => Hint a whereSource

Methods

openWindowHint :: a -> ParamVal a -> IO ()Source

Instances

Hint OpenGLProfile

Specify the OpenGL profile the context should implement. For available profiles see Profile.

Hint OpenGLDebugContext

Specify whether a debug context should be created.

Hint OpenGLForwardCompat

Specify whether the OpenGL context should be forward-compatible (i.e. disallow legacy functionality). This should only be used when requesting OpenGL version 3.0 or above.

Hint OpenGLVersionMinor

Specify the minor number of the desired minimum OpenGL version.

Hint OpenGLVersionMajor

Specify the major number of the desired minimum OpenGL version.

Hint FSAASamples

Specify the number of samples to use for the multisampling buffer.

Hint NoResize

Specify whether the window can be resized by the user.

Hint Stereo

Specify if stereo rendering should be supported. If Stereo is requested on a call to openWindowHint, but no stereo rendering pixel formats / framebuffer configs are available, openWindow will fail.

Hint AuxBuffers

Specify the number of auxiliary buffers.

Hint AccumAlphaBits

Specify the number of bits for the alpha channel of the accumulation buffer.

Hint AccumBlueBits

Specify the number of bits for the blue channel of the accumulation buffer.

Hint AccumGreenBits

Specify the number of bits for the green channel of the accumulation buffer.

Hint AccumRedBits

Specify the number of bits for the red channel of the accumulation buffer.

Hint RefreshRate

Vertical monitor refresh rate in Hz (only used for fullscreen windows). Zero means system default. Use with caution: specifying a refresh rate can override the system's settings, in which case the display may be suboptimal, fail or even damage the monitor.

data Opened Source

Constructors

Opened 

Instances

Param Opened

Query the window opened status.

data Active Source

Constructors

Active 

Instances

Param Active

Query the window active status.

data Iconified Source

Constructors

Iconified 

Instances

Param Iconified

Query the window iconified status.

data Accelerated Source

Constructors

Accelerated 

Instances

Param Accelerated

Query the window hardware accelerated status.

data RedBits Source

Constructors

RedBits 

Instances

Param RedBits

Query the number of bits for the red color component.

data GreenBits Source

Constructors

GreenBits 

Instances

Param GreenBits

Query the number of bits for the green color component.

data BlueBits Source

Constructors

BlueBits 

Instances

Param BlueBits

Query the number of bits for the blue color component.

data AlphaBits Source

Constructors

AlphaBits 

Instances

Param AlphaBits

Query the number of bits for the alpha buffer.

data DepthBits Source

Constructors

DepthBits 

Instances

Param DepthBits

Query the number of bits for the depth buffer.

data StencilBits Source

Constructors

StencilBits 

Instances

Param StencilBits

Query the number of bits for the stencil buffer.

data RefreshRate Source

Constructors

RefreshRate 

Instances

Hint RefreshRate

Vertical monitor refresh rate in Hz (only used for fullscreen windows). Zero means system default. Use with caution: specifying a refresh rate can override the system's settings, in which case the display may be suboptimal, fail or even damage the monitor.

Param RefreshRate

Query the vertical monitor refresh rate in Hz (only used for fullscreen windows).

data AccumRedBits Source

Constructors

AccumRedBits 

Instances

Hint AccumRedBits

Specify the number of bits for the red channel of the accumulation buffer.

Param AccumRedBits

Query the number of bits for the red channel of the accumulation buffer.

data AccumGreenBits Source

Constructors

AccumGreenBits 

Instances

Hint AccumGreenBits

Specify the number of bits for the green channel of the accumulation buffer.

Param AccumGreenBits

Query the number of bits for the green channel of the accumulation buffer.

data AccumBlueBits Source

Constructors

AccumBlueBits 

Instances

Hint AccumBlueBits

Specify the number of bits for the blue channel of the accumulation buffer.

Param AccumBlueBits

Query the number of bits for the blue channel of the accumulation buffer.

data AccumAlphaBits Source

Constructors

AccumAlphaBits 

Instances

Hint AccumAlphaBits

Specify the number of bits for the alpha channel of the accumulation buffer.

Param AccumAlphaBits

Query the number of bits for the alpha channel of the accumulation buffer.

data AuxBuffers Source

Constructors

AuxBuffers 

Instances

Hint AuxBuffers

Specify the number of auxiliary buffers.

Param AuxBuffers

Query the number of auxiliary buffers.

data Stereo Source

Constructors

Stereo 

Instances

Hint Stereo

Specify if stereo rendering should be supported. If Stereo is requested on a call to openWindowHint, but no stereo rendering pixel formats / framebuffer configs are available, openWindow will fail.

Param Stereo

Query whether the window supports stereo rendering.

data NoResize Source

Constructors

NoResize 

Instances

Hint NoResize

Specify whether the window can be resized by the user.

Param NoResize

Query whether the window can be resized by the user.

data FSAASamples Source

Constructors

FSAASamples 

Instances

Hint FSAASamples

Specify the number of samples to use for the multisampling buffer.

Param FSAASamples

Query the number used for the multisampling buffer.

data OpenGLVersionMajor Source

Constructors

OpenGLVersionMajor 

Instances

Hint OpenGLVersionMajor

Specify the major number of the desired minimum OpenGL version.

Param OpenGLVersionMajor

Query the OpenGL major version.

data OpenGLVersionMinor Source

Constructors

OpenGLVersionMinor 

Instances

Hint OpenGLVersionMinor

Specify the minor number of the desired minimum OpenGL version.

Param OpenGLVersionMinor

Query the OpenGL minor version.

data OpenGLForwardCompat Source

Constructors

OpenGLForwardCompat 

Instances

Hint OpenGLForwardCompat

Specify whether the OpenGL context should be forward-compatible (i.e. disallow legacy functionality). This should only be used when requesting OpenGL version 3.0 or above.

Param OpenGLForwardCompat

Query whether the current OpenGL context is forward-compatible.

data OpenGLDebugContext Source

Constructors

OpenGLDebugContext 

Instances

Hint OpenGLDebugContext

Specify whether a debug context should be created.

Param OpenGLDebugContext

Query whether the current OpenGL context is a debug context.

data OpenGLProfile Source

Constructors

OpenGLProfile 

Instances

Hint OpenGLProfile

Specify the OpenGL profile the context should implement. For available profiles see Profile.

Param OpenGLProfile

Query the OpenGL Profile implemented by the current context.