GLFW-0.5.2.5: A Haskell binding for GLFW

Safe HaskellNone
LanguageHaskell98

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 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 Key Source

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

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 Bool Source

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 Bool Source

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 Version Source

Returns the GLFW C library version numbers.

Window Handling

openWindow :: Size -> [DisplayBits] -> WindowMode -> IO Bool Source

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 String Source

Set the title of the opened window.

windowSize :: StateVar Size Source

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 Position Source

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 Int Source

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 VideoMode Source

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 KeyButtonState Source

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 KeyButtonState Source

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 Position Source

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 Int Source

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 CInt Source

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 WindowSizeCallback Source

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

windowCloseCallback :: SettableStateVar WindowCloseCallback Source

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

windowRefreshCallback :: SettableStateVar WindowRefreshCallback Source

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 KeyCallback Source

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 CharCallback Source

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 MouseButtonCallback Source

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 MousePosCallback Source

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

mouseWheelCallback :: SettableStateVar MouseWheelCallback Source

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 Double Source

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 Bool Source

Return True if the extension is supported, False otherwise.

glVersion :: GettableStateVar Version Source

Returns the version numbers for the currently used OpenGL implementation.

Texture loading

loadTexture2D :: String -> [TextureFlag] -> IO Bool Source

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 Bool Source

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 where Source

Methods

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

Instances

Param OpenGLProfile Source

Query the OpenGL Profile implemented by the current context.

Param OpenGLDebugContext Source

Query whether the current OpenGL context is a debug context.

Param OpenGLForwardCompat Source

Query whether the current OpenGL context is forward-compatible.

Param OpenGLVersionMinor Source

Query the OpenGL minor version.

Param OpenGLVersionMajor Source

Query the OpenGL major version.

Param FSAASamples Source

Query the number used for the multisampling buffer.

Param NoResize Source

Query whether the window can be resized by the user.

Param Stereo Source

Query whether the window supports stereo rendering.

Param AuxBuffers Source

Query the number of auxiliary buffers.

Param AccumAlphaBits Source

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

Param AccumBlueBits Source

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

Param AccumGreenBits Source

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

Param AccumRedBits Source

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

Param RefreshRate Source

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

Param StencilBits Source

Query the number of bits for the stencil buffer.

Param DepthBits Source

Query the number of bits for the depth buffer.

Param AlphaBits Source

Query the number of bits for the alpha buffer.

Param BlueBits Source

Query the number of bits for the blue color component.

Param GreenBits Source

Query the number of bits for the green color component.

Param RedBits Source

Query the number of bits for the red color component.

Param Accelerated Source

Query the window hardware accelerated status.

Param Iconified Source

Query the window iconified status.

Param Active Source

Query the window active status.

Param Opened Source

Query the window opened status.

class Param a => Hint a where Source

Methods

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

Instances

Hint OpenGLProfile Source

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

Hint OpenGLDebugContext Source

Specify whether a debug context should be created.

Hint OpenGLForwardCompat Source

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 Source

Specify the minor number of the desired minimum OpenGL version.

Hint OpenGLVersionMajor Source

Specify the major number of the desired minimum OpenGL version.

Hint FSAASamples Source

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

Hint NoResize Source

Specify whether the window can be resized by the user.

Hint Stereo Source

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 Source

Specify the number of auxiliary buffers.

Hint AccumAlphaBits Source

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

Hint AccumBlueBits Source

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

Hint AccumGreenBits Source

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

Hint AccumRedBits Source

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

Hint RefreshRate Source

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 Source

Query the window opened status.

type ParamVal Opened = Bool Source 

data Active Source

Constructors

Active 

Instances

Param Active Source

Query the window active status.

type ParamVal Active = Bool Source 

data Iconified Source

Constructors

Iconified 

Instances

Param Iconified Source

Query the window iconified status.

type ParamVal Iconified = Bool Source 

data Accelerated Source

Constructors

Accelerated 

Instances

Param Accelerated Source

Query the window hardware accelerated status.

type ParamVal Accelerated = Bool Source 

data RedBits Source

Constructors

RedBits 

Instances

Param RedBits Source

Query the number of bits for the red color component.

type ParamVal RedBits = Int Source 

data GreenBits Source

Constructors

GreenBits 

Instances

Param GreenBits Source

Query the number of bits for the green color component.

type ParamVal GreenBits = Int Source 

data BlueBits Source

Constructors

BlueBits 

Instances

Param BlueBits Source

Query the number of bits for the blue color component.

type ParamVal BlueBits = Int Source 

data AlphaBits Source

Constructors

AlphaBits 

Instances

Param AlphaBits Source

Query the number of bits for the alpha buffer.

type ParamVal AlphaBits = Int Source 

data DepthBits Source

Constructors

DepthBits 

Instances

Param DepthBits Source

Query the number of bits for the depth buffer.

type ParamVal DepthBits = Int Source 

data StencilBits Source

Constructors

StencilBits 

Instances

Param StencilBits Source

Query the number of bits for the stencil buffer.

type ParamVal StencilBits = Int Source 

data RefreshRate Source

Constructors

RefreshRate 

Instances

Hint RefreshRate Source

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 Source

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

type ParamVal RefreshRate = Int Source 

data AccumRedBits Source

Constructors

AccumRedBits 

Instances

Hint AccumRedBits Source

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

Param AccumRedBits Source

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

type ParamVal AccumRedBits = Int Source 

data AccumGreenBits Source

Constructors

AccumGreenBits 

Instances

Hint AccumGreenBits Source

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

Param AccumGreenBits Source

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

type ParamVal AccumGreenBits = Int Source 

data AccumBlueBits Source

Constructors

AccumBlueBits 

Instances

Hint AccumBlueBits Source

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

Param AccumBlueBits Source

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

type ParamVal AccumBlueBits = Int Source 

data AccumAlphaBits Source

Constructors

AccumAlphaBits 

Instances

Hint AccumAlphaBits Source

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

Param AccumAlphaBits Source

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

type ParamVal AccumAlphaBits = Int Source 

data AuxBuffers Source

Constructors

AuxBuffers 

Instances

Hint AuxBuffers Source

Specify the number of auxiliary buffers.

Param AuxBuffers Source

Query the number of auxiliary buffers.

type ParamVal AuxBuffers = Int Source 

data Stereo Source

Constructors

Stereo 

Instances

Hint Stereo Source

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 Source

Query whether the window supports stereo rendering.

type ParamVal Stereo = Bool Source 

data NoResize Source

Constructors

NoResize 

Instances

Hint NoResize Source

Specify whether the window can be resized by the user.

Param NoResize Source

Query whether the window can be resized by the user.

type ParamVal NoResize = Bool Source 

data FSAASamples Source

Constructors

FSAASamples 

Instances

Hint FSAASamples Source

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

Param FSAASamples Source

Query the number used for the multisampling buffer.

type ParamVal FSAASamples = Int Source 

data OpenGLVersionMajor Source

Constructors

OpenGLVersionMajor 

Instances

Hint OpenGLVersionMajor Source

Specify the major number of the desired minimum OpenGL version.

Param OpenGLVersionMajor Source

Query the OpenGL major version.

type ParamVal OpenGLVersionMajor = Int Source 

data OpenGLVersionMinor Source

Constructors

OpenGLVersionMinor 

Instances

Hint OpenGLVersionMinor Source

Specify the minor number of the desired minimum OpenGL version.

Param OpenGLVersionMinor Source

Query the OpenGL minor version.

type ParamVal OpenGLVersionMinor = Int Source 

data OpenGLForwardCompat Source

Constructors

OpenGLForwardCompat 

Instances

Hint OpenGLForwardCompat Source

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 Source

Query whether the current OpenGL context is forward-compatible.

type ParamVal OpenGLForwardCompat = Bool Source 

data OpenGLDebugContext Source

Constructors

OpenGLDebugContext 

Instances

Hint OpenGLDebugContext Source

Specify whether a debug context should be created.

Param OpenGLDebugContext Source

Query whether the current OpenGL context is a debug context.

type ParamVal OpenGLDebugContext = Bool Source 

data OpenGLProfile Source

Constructors

OpenGLProfile 

Instances

Hint OpenGLProfile Source

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

Param OpenGLProfile Source

Query the OpenGL Profile implemented by the current context.

type ParamVal OpenGLProfile = Profile Source