Graphics.UI.GLUT.Colormap

GLUT-2.7.0.3: 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 | Haskell2010

Graphics.UI.GLUT.Colormap

Description

OpenGL supports both RGBA and color index rendering. The RGBA mode is generally preferable to color index because more OpenGL rendering capabilities are available and color index mode requires the loading of colormap entries.

The GLUT color index state variables are used to read and write entries in a window's color index colormap. Every GLUT color index window has its own logical color index colormap. The size of a window's colormap can be determined by reading `numColorMapEntries`.

GLUT color index windows within a program can attempt to share colormap resources by copying a single color index colormap to multiple windows using `copyColormap`. If possible GLUT will attempt to share the actual colormap. While copying colormaps using `copyColormap` can potentially allow sharing of physical colormap resources, logically each window has its own colormap. So changing a copied colormap of a window will force the duplication of the colormap. For this reason, color index programs should generally load a single color index colormap, copy it to all color index windows within the program, and then not modify any colormap cells.

Use of multiple colormaps is likely to result in colormap installation problems where some windows are displayed with an incorrect colormap due to limitations on colormap resources.

Synopsis

- colorMapEntry :: Index1 GLint -> StateVar (Color3 GLfloat)
- copyColormap :: MonadIO m => Window -> m ()
- numColorMapEntries :: GettableStateVar GLint
- transparentIndex :: GettableStateVar (Index1 GLint)

# Documentation

colorMapEntry :: Index1 GLint -> StateVar (Color3 GLfloat)

Controls the color index colormap entry of the current window's logical colormap for the layer in use. The layer in use of the current window should be a color index window. The color index should be zero or greater and less than the total number of colormap entries for the window (see `numColorMapEntries`) and different from an overlay's transparent index (see `transparentIndex`).

If the layer in use's colormap was copied by reference, setting a colormap entry will force the duplication of the colormap.

copyColormap :: MonadIO m => Window -> m ()

Copy (lazily if possible to promote sharing) the logical colormap from a specified window to the current window's layer in use. The copy will be from the normal plane to the normal plane; or from the overlay to the overlay (never across different layers). Once a colormap has been copied, avoid setting cells in the colormap via `colorMapEntry` since that will force an actual copy of the colormap if it was previously copied by reference. `copyColormap` should only be called when both the current window and the specified window are color index windows.

numColorMapEntries :: GettableStateVar GLint

Contains the number of entries in the colormap of the current window's current layer (0 in RGBA mode).

transparentIndex :: GettableStateVar (Index1 GLint)

Contains the transparent color index of the overlay of the current window or -1 if no overlay is in use.