packages feed

GLMatrix 0.1.0.0 → 0.1.0.1

raw patch · 23 files changed

+1307/−298 lines, 23 filesbinary-added

Files

GLMatrix.cabal view
@@ -1,57 +1,44 @@--- Initial GLMatrix.cabal generated by cabal init.  For further --- documentation, see http://haskell.org/cabal/users-guide/---- The name of the package.-name:                GLMatrix---- The package version.  See the Haskell package versioning policy (PVP) --- for standards guiding when and how versions should be incremented.--- http://www.haskell.org/haskellwiki/Package_versioning_policy+Name:                GLMatrix -- PVP summary:      +-+------- breaking API changes --                   | | +----- non-breaking API additions --                   | | | +--- code changes with no API change-version:             0.1.0.0---- A short (one-line) description of the package.-synopsis:            Utilities for working with OpenGL matrices---- A longer description of the package.--- description:         ---- URL for the project homepage or repository.-homepage:            https://github.com/fiendfan1/GLMatrix+Version:             0.1.0.1 --- The license under which the package is released.-license:             GPL-3+Synopsis:            Utilities for working with OpenGL matrices+description:         Some utilities for working with OpenGL matrices,+                     most of the source is from+                     https://github.com/kig/tomtegebra/blob/master/Tomtegebra/Matrix.hs,+                     by kig (Ilmari Heikkinen). --- The file containing the license text.-license-file:        LICENSE+Homepage:            https://github.com/fiendfan1/GLMatrix+License:             GPL-3+License-file:        LICENSE  -- The package author(s).-author:              kig, fiendfan1+Author:              kig (Ilmari Heikkinen), fiendfan1  -- An email address to which users can send suggestions, bug reports, and  -- patches.-maintainer:          fiendfan1@yahoo.com+Maintainer:          fiendfan1@yahoo.com  -- A copyright notice. -- copyright:            -category:            Graphics+Category:            Graphics -build-type:          Simple+Build-type:          Simple  -- Extra files to be distributed with the package, such as examples or a  -- README.-extra-source-files:  README.md+Extra-Source-Files:  README.md  -- Constraint on the version of Cabal needed to build this package.-cabal-version:       >=1.10+Cabal-version:       >=1.10  -library+Library   -- Modules exported by the library.-  exposed-modules:     GLMatrix+  Exposed-modules:     Graphics.GLMatrix      -- Modules included in this library but not exported.   -- other-modules:       @@ -67,4 +54,5 @@      -- Base language which the package is written in.   default-language:    Haskell2010+  HS-Source-Dirs:      src   
− GLMatrix.hs
@@ -1,267 +0,0 @@--- | Modified from / based on:---   https://github.com/kig/tomtegebra/blob/master/Tomtegebra/Matrix.hs-{-# LANGUAGE TypeSynonymInstances #-}-{-# LANGUAGE FlexibleInstances #-}-{-# OPTIONS_GHC -fno-warn-orphans #-}-module GLMatrix (-    translationMatrix, frustumMatrix,-    identityMatrix, toGLFormat, withMatrix,-    matrixMulVec, matrix4x4To3x3, matrix3x3To4x4,-    invertMatrix4x4ON, scalingMatrix,-    rotationMatrix, lookAtMatrixG, orthoMatrix,-    perspectiveMatrix, addVec,-    setMatrix4x4Uniform,-    Matrix4x4, Matrix3x3, Vector4, Vector3-) where--import Data.List (transpose)-import Foreign (Ptr)-import Foreign.C (withCString)-import Foreign.Marshal.Array (withArray)-import Graphics.Rendering.OpenGL.Raw-    (GLfloat, GLuint, glGetUniformLocation,-     glUniformMatrix4fv, gl_FALSE)---- | 4x4 Matrix in the OpenGL orientation:---   translation column is the last 4 elements.-type Matrix4x4 = [[GLfloat]]--- | 3x3 Matrix in the OpenGL orientation.-type Matrix3x3 = [[GLfloat]]--- | Four element GLfloat vector.-type Vector4 = [GLfloat]--- | Three element GLfloat vector.-type Vector3 = [GLfloat]--instance Num Matrix4x4 where-    a * b =-        map (\row -> map (dotVec row) at) b-        where at = transpose a-    a + b = applyToIndices2 a b (+)-    abs = map (map abs)-    fromInteger i =-        [-        [fromInteger i, 0, 0, 0],-        [0, fromInteger i, 0, 0],-        [0, 0, fromInteger i, 0],-        [0, 0, 0, fromInteger i]-        ]-    signum = map (map signum)--setMatrix4x4Uniform :: GLuint -> Matrix4x4 -> String -> IO ()-setMatrix4x4Uniform shader matrix var = do-    loc <- withCString var $ glGetUniformLocation shader-    withMatrix matrix (glUniformMatrix4fv loc 1 (fromIntegral gl_FALSE))--withMatrix :: Matrix4x4 -> (Ptr GLfloat -> IO a) -> IO a-withMatrix = withArray . toGLFormat--applyToIndices2 :: [[a]] -> [[b]] -> (a -> b -> c) -> [[c]]-applyToIndices2 (a:as) (b:bs) f =-    applyToIndices a b f : applyToIndices2 as bs f-applyToIndices2 _ _ _ = []--applyToIndices :: [a] -> [b] -> (a -> b -> c) -> [c]-applyToIndices (a:as) (b:bs) f =-    f a b : applyToIndices as bs f-applyToIndices _ _ _ = []--toGLFormat :: Matrix4x4 -> [GLfloat]-toGLFormat = concat-{-# INLINE toGLFormat #-}---- | The 'Matrix4x4' identity matrix.-identityMatrix :: Matrix4x4-identityMatrix =-    [-        [1,0,0,0],-        [0,1,0,0],-        [0,0,1,0],-        [0,0,0,1]-    ]-{-# INLINE identityMatrix #-}---- | Multiplies a vector by a matrix.-matrixMulVec :: Matrix4x4 -> Vector4 -> Vector4-matrixMulVec m v = map (dotVec v) (transpose m)-{-# INLINE matrixMulVec #-}---- | Returns the upper-left 3x3 matrix of a 4x4 matrix.-matrix4x4To3x3 :: Matrix4x4 -> Matrix3x3-matrix4x4To3x3 m = take 3 $ map vec4To3 m---- | Pads the 3x3 matrix to a 4x4 matrix with a 1 in ---   bottom right corner and 0 elsewhere.-matrix3x3To4x4 :: Matrix3x3 -> Matrix4x4-matrix3x3To4x4 [x,y,z] = [x ++ [0], y ++ [0], z ++ [0], [0,0,0,1]]-matrix3x3To4x4 m = m-{-# INLINE matrix3x3To4x4 #-}---- | Inverts a 4x4 orthonormal matrix with the special case trick.-invertMatrix4x4ON :: Matrix4x4 -> Matrix4x4-invertMatrix4x4ON m = -- orthonormal matrix inverse-    let [a,b,c] = transpose $ matrix4x4To3x3 m-        [_,_,_,t4] = m-        t = vec4To3 t4-    in [-        vec3To4 a 0, vec3To4 b 0, vec3To4 c 0,-        [dotVec a t, dotVec b t, dotVec c t, t4 !! 3]-       ]---- | Creates the translation matrix that translates points by the given vector.-translationMatrix :: Vector3 -> Matrix4x4-translationMatrix [x,y,z] =-    [[1,0,0,0],-     [0,1,0,0],-     [0,0,1,0],-     [x,y,z,1]]-translationMatrix _ = identityMatrix-{-# INLINE translationMatrix #-}---- | Creates the scaling matrix that scales points by the factors given by the---   vector components.-scalingMatrix :: Vector3 -> Matrix4x4-scalingMatrix [x,y,z] =-   [[x,0,0,0],-    [0,y,0,0],-    [0,0,z,0],-    [0,0,0,1]]-scalingMatrix _ = identityMatrix-{-# INLINE scalingMatrix #-}--rotationMatrix :: GLfloat -> Vector3 -> Matrix4x4-rotationMatrix angle axis =-    let [x,y,z] = normalizeVec axis-        c = cos angle-        s = sin angle-        c1 = 1-c-    in [-      [x*x*c1+c, y*x*c1+z*s, z*x*c1-y*s, 0],-      [x*y*c1-z*s, y*y*c1+c, y*z*c1+x*s, 0],-      [x*z*c1+y*s, y*z*c1-x*s, z*z*c1+c, 0],-      [0,0,0,1]-       ]-{-# INLINE rotationMatrix #-}---- | Creates a lookAt matrix from three vectors: the eye position, the point the---   eye is looking at and the up vector of the eye.-lookAtMatrixG :: Vector3 -> Vector3 -> Vector3 -> Matrix4x4-lookAtMatrixG eye center up =-    let z = directionVec eye center-        x = normalizeVec $ crossVec3 up z-        y = normalizeVec $ crossVec3 z x-    in matrix3x3To4x4 (transpose [x,y,z]) *-        translationMatrix (negateVec eye)-{-# INLINE lookAtMatrixG #-}---- | Creates a frustumMatrix from the given---   left, right, bottom, top, znear and zfar---   values for the view frustum.-frustumMatrix ::-    GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> Matrix4x4-frustumMatrix left right bottom top znear zfar =-    let x = 2*znear/(right-left)-        y = 2*znear/(top-bottom)-        a = (right+left)/(right-left)-        b = (top+bottom)/(top-bottom)-        c = -(zfar+znear)/(zfar-znear)-        d = -2*zfar*znear/(zfar-znear)-    in-       [[x, 0, 0, 0],-        [0, y, 0, 0],-        [a, b, c, -1],-        [0, 0, d, 0]]-{-# INLINE frustumMatrix #-}--orthoMatrix ::-    GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> Matrix4x4-orthoMatrix l r b t n f =-    let ai = 2/(r-l)-        bi = 2/(t-b)-        ci = -2/(f-n)-        di = -(r+l)/(r-l)-        ei = -(t+b)/(t-b)-        fi = -(f+n)/(f-n)-    in-    [[ai, 0, 0, 0],-     [0, bi, 0, 0],-     [0, 0, ci, 0],-     [di, ei, fi, 1]]-{-# INLINE orthoMatrix #-}---- | Creates a perspective projection matrix for the given field-of-view,---   screen aspect ratio, znear and zfar.-perspectiveMatrix :: GLfloat -> GLfloat -> GLfloat -> GLfloat -> Matrix4x4-perspectiveMatrix fovy aspect znear zfar =-    let ymax = znear * tan (fovy * pi / 360.0)-        ymin = -ymax-        xmin = ymin * aspect-        xmax = ymax * aspect-    in frustumMatrix xmin xmax ymin ymax znear zfar-{-# INLINE perspectiveMatrix #-}---- | Normalizes a vector to a unit vector.-normalizeVec :: [GLfloat] -> [GLfloat]-normalizeVec v = scaleVec (recip $ lengthVec v) v-{-# INLINE normalizeVec #-}---- | Scales a vector by a scalar.-scaleVec :: GLfloat -> [GLfloat] -> [GLfloat]-scaleVec s = map (s*)-{-# INLINE scaleVec #-}---- | Computes the length of a vector.-lengthVec :: [GLfloat] -> GLfloat-lengthVec v = sqrt.sum $ map square v-{-# INLINE lengthVec #-}---- | Inner product of two vectors.-innerVec :: [GLfloat] -> [GLfloat] -> [GLfloat]-innerVec = zipWith (*)-{-# INLINE innerVec #-}---- | Adds two vectors together.-addVec :: [GLfloat] -> [GLfloat] -> [GLfloat]-addVec = zipWith (+)-{-# INLINE addVec #-}---- | Subtracts a vector from another.-subVec :: [GLfloat] -> [GLfloat] -> [GLfloat]-subVec = zipWith (-)-{-# INLINE subVec #-}---- | Negates a vector.-negateVec :: [GLfloat] -> [GLfloat]-negateVec = map negate-{-# INLINE negateVec #-}----- | Computes the direction unit vector between two vectors.-directionVec :: [GLfloat] -> [GLfloat] -> [GLfloat]-directionVec u v = normalizeVec (subVec u v)-{-# INLINE directionVec #-}---- | Vector dot product.-dotVec :: [GLfloat] -> [GLfloat] -> GLfloat-dotVec a b = sum $ innerVec a b-{-# INLINE dotVec #-}---- | Cross product of two 3-vectors.-crossVec3 :: [GLfloat] -> [GLfloat] -> [GLfloat]-crossVec3 [u0,u1,u2] [v0,v1,v2] = [u1*v2-u2*v1, u2*v0-u0*v2, u0*v1-u1*v0]-crossVec3 _ _ = [0,0,1]-{-# INLINE crossVec3 #-}---- | Converts a 4-vector into a 3-vector by dropping the fourth element.-vec4To3 :: Vector4 -> Vector3-vec4To3 = take 3-{-# INLINE vec4To3 #-}---- | Converts a 3-vector into a 4-vector by appending the given value to it.-vec3To4 :: Vector3 -> GLfloat -> Vector4-vec3To4 v i = v ++ [i]-{-# INLINE vec3To4 #-}---- | Multiplies a GLfloat by itself.-square :: GLfloat -> GLfloat-square x = x * x-{-# INLINE square #-}
+ dist/build/Graphics/GLMatrix.hi view

binary file changed (absent → 26172 bytes)

+ dist/build/Graphics/GLMatrix.o view

binary file changed (absent → 106160 bytes)

+ dist/build/autogen/Paths_GLMatrix.hs view
@@ -0,0 +1,36 @@+module Paths_GLMatrix (+    version,+    getBinDir, getLibDir, getDataDir, getLibexecDir,+    getDataFileName, getSysconfDir+  ) where++import qualified Control.Exception as Exception+import Data.Version (Version(..))+import System.Environment (getEnv)+import Prelude++catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a+catchIO = Exception.catch+++version :: Version+version = Version {versionBranch = [0,1,0,0], versionTags = []}+bindir, libdir, datadir, libexecdir, sysconfdir :: FilePath++bindir     = "/home/fiendfan1/.cabal/bin"+libdir     = "/home/fiendfan1/.cabal/lib/x86_64-linux-ghc-7.6.3/GLMatrix-0.1.0.0"+datadir    = "/home/fiendfan1/.cabal/share/x86_64-linux-ghc-7.6.3/GLMatrix-0.1.0.0"+libexecdir = "/home/fiendfan1/.cabal/libexec"+sysconfdir = "/home/fiendfan1/.cabal/etc"++getBinDir, getLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath+getBinDir = catchIO (getEnv "GLMatrix_bindir") (\_ -> return bindir)+getLibDir = catchIO (getEnv "GLMatrix_libdir") (\_ -> return libdir)+getDataDir = catchIO (getEnv "GLMatrix_datadir") (\_ -> return datadir)+getLibexecDir = catchIO (getEnv "GLMatrix_libexecdir") (\_ -> return libexecdir)+getSysconfDir = catchIO (getEnv "GLMatrix_sysconfdir") (\_ -> return sysconfdir)++getDataFileName :: FilePath -> IO FilePath+getDataFileName name = do+  dir <- getDataDir+  return (dir ++ "/" ++ name)
+ dist/build/autogen/cabal_macros.h view
@@ -0,0 +1,16 @@+/* DO NOT EDIT: This file is automatically generated by Cabal */++/* package OpenGLRaw-1.4.0.0 */+#define VERSION_OpenGLRaw "1.4.0.0"+#define MIN_VERSION_OpenGLRaw(major1,major2,minor) (\+  (major1) <  1 || \+  (major1) == 1 && (major2) <  4 || \+  (major1) == 1 && (major2) == 4 && (minor) <= 0)++/* package base-4.6.0.1 */+#define VERSION_base "4.6.0.1"+#define MIN_VERSION_base(major1,major2,minor) (\+  (major1) <  4 || \+  (major1) == 4 && (major2) <  6 || \+  (major1) == 4 && (major2) == 6 && (minor) <= 0)+
+ dist/build/libHSGLMatrix-0.1.0.0.a view

binary file changed (absent → 111402 bytes)

+ dist/doc/html/GLMatrix/GLMatrix.haddock view

binary file changed (absent → 7985 bytes)

+ dist/doc/html/GLMatrix/GLMatrix.html view
@@ -0,0 +1,28 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>GLMatrix</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[+window.onload = function () {pageLoad();setSynopsis("mini_GLMatrix.html");};+//]]>+</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">GLMatrix-0.1.0.0: Utilities for working with OpenGL matrices</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">GLMatrix</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Modified from / based on:+   https:<em></em>github.com<em>kig</em>tomtegebra<em>blob</em>master<em>Tomtegebra</em>Matrix.hs+</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:translationMatrix">translationMatrix</a> :: <a href="GLMatrix.html#t:Vector3">Vector3</a> -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></li><li class="src short"><a href="#v:frustumMatrix">frustumMatrix</a> :: GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></li><li class="src short"><a href="#v:identityMatrix">identityMatrix</a> :: <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></li><li class="src short"><a href="#v:toGLFormat">toGLFormat</a> :: <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a> -&gt; [GLfloat]</li><li class="src short"><a href="#v:withMatrix">withMatrix</a> ::  <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a> -&gt; (<a href="file:///usr/share/doc/ghc/html/libraries/base-4.6.0.1/Foreign-Ptr.html#t:Ptr">Ptr</a> GLfloat -&gt; <a href="file:///usr/share/doc/ghc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a) -&gt; <a href="file:///usr/share/doc/ghc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:matrixMulVec">matrixMulVec</a> :: <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a> -&gt; <a href="GLMatrix.html#t:Vector4">Vector4</a> -&gt; <a href="GLMatrix.html#t:Vector4">Vector4</a></li><li class="src short"><a href="#v:matrix4x4To3x3">matrix4x4To3x3</a> :: <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a> -&gt; <a href="GLMatrix.html#t:Matrix3x3">Matrix3x3</a></li><li class="src short"><a href="#v:matrix3x3To4x4">matrix3x3To4x4</a> :: <a href="GLMatrix.html#t:Matrix3x3">Matrix3x3</a> -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></li><li class="src short"><a href="#v:invertMatrix4x4ON">invertMatrix4x4ON</a> :: <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a> -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></li><li class="src short"><a href="#v:scalingMatrix">scalingMatrix</a> :: <a href="GLMatrix.html#t:Vector3">Vector3</a> -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></li><li class="src short"><a href="#v:rotationMatrix">rotationMatrix</a> :: GLfloat -&gt; <a href="GLMatrix.html#t:Vector3">Vector3</a> -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></li><li class="src short"><a href="#v:lookAtMatrixG">lookAtMatrixG</a> :: <a href="GLMatrix.html#t:Vector3">Vector3</a> -&gt; <a href="GLMatrix.html#t:Vector3">Vector3</a> -&gt; <a href="GLMatrix.html#t:Vector3">Vector3</a> -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></li><li class="src short"><a href="#v:orthoMatrix">orthoMatrix</a> :: GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></li><li class="src short"><a href="#v:perspectiveMatrix">perspectiveMatrix</a> :: GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></li><li class="src short"><a href="#v:addVec">addVec</a> :: [GLfloat] -&gt; [GLfloat] -&gt; [GLfloat]</li><li class="src short"><a href="#v:setMatrix4x4Uniform">setMatrix4x4Uniform</a> :: GLuint -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a> -&gt; <a href="file:///usr/share/doc/ghc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><span class="keyword">type</span> <a href="#t:Matrix4x4">Matrix4x4</a> = [[GLfloat]]</li><li class="src short"><span class="keyword">type</span> <a href="#t:Matrix3x3">Matrix3x3</a> = [[GLfloat]]</li><li class="src short"><span class="keyword">type</span> <a href="#t:Vector4">Vector4</a> = [GLfloat]</li><li class="src short"><span class="keyword">type</span> <a href="#t:Vector3">Vector3</a> = [GLfloat]</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:translationMatrix" class="def">translationMatrix</a> :: <a href="GLMatrix.html#t:Vector3">Vector3</a> -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></p><div class="doc"><p>Creates the translation matrix that translates points by the given vector.+</p></div></div><div class="top"><p class="src"><a name="v:frustumMatrix" class="def">frustumMatrix</a> :: GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></p><div class="doc"><p>Creates a frustumMatrix from the given+   left, right, bottom, top, znear and zfar+   values for the view frustum.+</p></div></div><div class="top"><p class="src"><a name="v:identityMatrix" class="def">identityMatrix</a> :: <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></p><div class="doc"><p>The <code><a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></code> identity matrix.+</p></div></div><div class="top"><p class="src"><a name="v:toGLFormat" class="def">toGLFormat</a> :: <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a> -&gt; [GLfloat]</p></div><div class="top"><p class="src"><a name="v:withMatrix" class="def">withMatrix</a> ::  <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a> -&gt; (<a href="file:///usr/share/doc/ghc/html/libraries/base-4.6.0.1/Foreign-Ptr.html#t:Ptr">Ptr</a> GLfloat -&gt; <a href="file:///usr/share/doc/ghc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a) -&gt; <a href="file:///usr/share/doc/ghc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> a</p></div><div class="top"><p class="src"><a name="v:matrixMulVec" class="def">matrixMulVec</a> :: <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a> -&gt; <a href="GLMatrix.html#t:Vector4">Vector4</a> -&gt; <a href="GLMatrix.html#t:Vector4">Vector4</a></p><div class="doc"><p>Multiplies a vector by a matrix.+</p></div></div><div class="top"><p class="src"><a name="v:matrix4x4To3x3" class="def">matrix4x4To3x3</a> :: <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a> -&gt; <a href="GLMatrix.html#t:Matrix3x3">Matrix3x3</a></p><div class="doc"><p>Returns the upper-left 3x3 matrix of a 4x4 matrix.+</p></div></div><div class="top"><p class="src"><a name="v:matrix3x3To4x4" class="def">matrix3x3To4x4</a> :: <a href="GLMatrix.html#t:Matrix3x3">Matrix3x3</a> -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></p><div class="doc"><p>Pads the 3x3 matrix to a 4x4 matrix with a 1 in +   bottom right corner and 0 elsewhere.+</p></div></div><div class="top"><p class="src"><a name="v:invertMatrix4x4ON" class="def">invertMatrix4x4ON</a> :: <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a> -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></p><div class="doc"><p>Inverts a 4x4 orthonormal matrix with the special case trick.+</p></div></div><div class="top"><p class="src"><a name="v:scalingMatrix" class="def">scalingMatrix</a> :: <a href="GLMatrix.html#t:Vector3">Vector3</a> -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></p><div class="doc"><p>Creates the scaling matrix that scales points by the factors given by the+   vector components.+</p></div></div><div class="top"><p class="src"><a name="v:rotationMatrix" class="def">rotationMatrix</a> :: GLfloat -&gt; <a href="GLMatrix.html#t:Vector3">Vector3</a> -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></p></div><div class="top"><p class="src"><a name="v:lookAtMatrixG" class="def">lookAtMatrixG</a> :: <a href="GLMatrix.html#t:Vector3">Vector3</a> -&gt; <a href="GLMatrix.html#t:Vector3">Vector3</a> -&gt; <a href="GLMatrix.html#t:Vector3">Vector3</a> -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></p><div class="doc"><p>Creates a lookAt matrix from three vectors: the eye position, the point the+   eye is looking at and the up vector of the eye.+</p></div></div><div class="top"><p class="src"><a name="v:orthoMatrix" class="def">orthoMatrix</a> :: GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></p></div><div class="top"><p class="src"><a name="v:perspectiveMatrix" class="def">perspectiveMatrix</a> :: GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; GLfloat -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a></p><div class="doc"><p>Creates a perspective projection matrix for the given field-of-view,+   screen aspect ratio, znear and zfar.+</p></div></div><div class="top"><p class="src"><a name="v:addVec" class="def">addVec</a> :: [GLfloat] -&gt; [GLfloat] -&gt; [GLfloat]</p><div class="doc"><p>Adds two vectors together.+</p></div></div><div class="top"><p class="src"><a name="v:setMatrix4x4Uniform" class="def">setMatrix4x4Uniform</a> :: GLuint -&gt; <a href="GLMatrix.html#t:Matrix4x4">Matrix4x4</a> -&gt; <a href="file:///usr/share/doc/ghc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -&gt; <a href="file:///usr/share/doc/ghc/html/libraries/base-4.6.0.1/System-IO.html#t:IO">IO</a> ()</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Matrix4x4" class="def">Matrix4x4</a> = [[GLfloat]]</p><div class="doc"><p>4x4 Matrix in the OpenGL orientation:+   translation column is the last 4 elements.+</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Matrix3x3" class="def">Matrix3x3</a> = [[GLfloat]]</p><div class="doc"><p>3x3 Matrix in the OpenGL orientation.+</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Vector4" class="def">Vector4</a> = [GLfloat]</p><div class="doc"><p>Four element GLfloat vector.+</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Vector3" class="def">Vector3</a> = [GLfloat]</p><div class="doc"><p>Three element GLfloat vector.+</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
+ dist/doc/html/GLMatrix/doc-index.html view
@@ -0,0 +1,4 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>GLMatrix-0.1.0.0: Utilities for working with OpenGL matrices (Index)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[+window.onload = function () {pageLoad();};+//]]>+</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">GLMatrix-0.1.0.0: Utilities for working with OpenGL matrices</p></div><div id="content"><div id="index"><p class="caption">Index</p><table><tr><td class="src">addVec</td><td class="module"><a href="GLMatrix.html#v:addVec">GLMatrix</a></td></tr><tr><td class="src">frustumMatrix</td><td class="module"><a href="GLMatrix.html#v:frustumMatrix">GLMatrix</a></td></tr><tr><td class="src">identityMatrix</td><td class="module"><a href="GLMatrix.html#v:identityMatrix">GLMatrix</a></td></tr><tr><td class="src">invertMatrix4x4ON</td><td class="module"><a href="GLMatrix.html#v:invertMatrix4x4ON">GLMatrix</a></td></tr><tr><td class="src">lookAtMatrixG</td><td class="module"><a href="GLMatrix.html#v:lookAtMatrixG">GLMatrix</a></td></tr><tr><td class="src">Matrix3x3</td><td class="module"><a href="GLMatrix.html#t:Matrix3x3">GLMatrix</a></td></tr><tr><td class="src">matrix3x3To4x4</td><td class="module"><a href="GLMatrix.html#v:matrix3x3To4x4">GLMatrix</a></td></tr><tr><td class="src">Matrix4x4</td><td class="module"><a href="GLMatrix.html#t:Matrix4x4">GLMatrix</a></td></tr><tr><td class="src">matrix4x4To3x3</td><td class="module"><a href="GLMatrix.html#v:matrix4x4To3x3">GLMatrix</a></td></tr><tr><td class="src">matrixMulVec</td><td class="module"><a href="GLMatrix.html#v:matrixMulVec">GLMatrix</a></td></tr><tr><td class="src">orthoMatrix</td><td class="module"><a href="GLMatrix.html#v:orthoMatrix">GLMatrix</a></td></tr><tr><td class="src">perspectiveMatrix</td><td class="module"><a href="GLMatrix.html#v:perspectiveMatrix">GLMatrix</a></td></tr><tr><td class="src">rotationMatrix</td><td class="module"><a href="GLMatrix.html#v:rotationMatrix">GLMatrix</a></td></tr><tr><td class="src">scalingMatrix</td><td class="module"><a href="GLMatrix.html#v:scalingMatrix">GLMatrix</a></td></tr><tr><td class="src">setMatrix4x4Uniform</td><td class="module"><a href="GLMatrix.html#v:setMatrix4x4Uniform">GLMatrix</a></td></tr><tr><td class="src">toGLFormat</td><td class="module"><a href="GLMatrix.html#v:toGLFormat">GLMatrix</a></td></tr><tr><td class="src">translationMatrix</td><td class="module"><a href="GLMatrix.html#v:translationMatrix">GLMatrix</a></td></tr><tr><td class="src">Vector3</td><td class="module"><a href="GLMatrix.html#t:Vector3">GLMatrix</a></td></tr><tr><td class="src">Vector4</td><td class="module"><a href="GLMatrix.html#t:Vector4">GLMatrix</a></td></tr><tr><td class="src">withMatrix</td><td class="module"><a href="GLMatrix.html#v:withMatrix">GLMatrix</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
+ dist/doc/html/GLMatrix/frames.html view
@@ -0,0 +1,30 @@+<!DOCTYPE html +     PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">+<head>+<title></title>+<script src="haddock-util.js" type="text/javascript"></script>+<script type="text/javascript"><!--+/*++  The synopsis frame needs to be updated using javascript, so we hide+  it by default and only show it if javascript is enabled.++  TODO: provide some means to disable it.+*/+function load() {+  var d = document.getElementById("inner-fs");+  d.rows = "50%,50%";+  postReframe();+}+--></script>+</head>+<frameset id="outer-fs" cols="25%,75%" onload="load()">+  <frameset id="inner-fs" rows="100%,0%">+    <frame src="index-frames.html" name="modules" />+    <frame src="" name="synopsis" />+  </frameset>+  <frame src="index.html" name="main" />+</frameset>+</html>
+ dist/doc/html/GLMatrix/haddock-util.js view
@@ -0,0 +1,344 @@+// Haddock JavaScript utilities++var rspace = /\s\s+/g,+	  rtrim = /^\s+|\s+$/g;++function spaced(s) { return (" " + s + " ").replace(rspace, " "); }+function trim(s)   { return s.replace(rtrim, ""); }++function hasClass(elem, value) {+  var className = spaced(elem.className || "");+  return className.indexOf( " " + value + " " ) >= 0;+}++function addClass(elem, value) {+  var className = spaced(elem.className || "");+  if ( className.indexOf( " " + value + " " ) < 0 ) {+    elem.className = trim(className + " " + value);+  }+}++function removeClass(elem, value) {+  var className = spaced(elem.className || "");+  className = className.replace(" " + value + " ", " ");+  elem.className = trim(className);+}++function toggleClass(elem, valueOn, valueOff, bool) {+  if (bool == null) { bool = ! hasClass(elem, valueOn); }+  if (bool) {+    removeClass(elem, valueOff);+    addClass(elem, valueOn);+  }+  else {+    removeClass(elem, valueOn);+    addClass(elem, valueOff);+  }+  return bool;+}+++function makeClassToggle(valueOn, valueOff)+{+  return function(elem, bool) {+    return toggleClass(elem, valueOn, valueOff, bool);+  }+}++toggleShow = makeClassToggle("show", "hide");+toggleCollapser = makeClassToggle("collapser", "expander");++function toggleSection(id)+{+  var b = toggleShow(document.getElementById("section." + id));+  toggleCollapser(document.getElementById("control." + id), b);+  rememberCollapsed(id, b);+  return b;+}++var collapsed = {};+function rememberCollapsed(id, b)+{+  if(b)+    delete collapsed[id]+  else+    collapsed[id] = null;++  var sections = [];+  for(var i in collapsed)+  {+    if(collapsed.hasOwnProperty(i))+      sections.push(i);+  }+  // cookie specific to this page; don't use setCookie which sets path=/+  document.cookie = "collapsed=" + escape(sections.join('+'));+}++function restoreCollapsed()+{+  var cookie = getCookie("collapsed");+  if(!cookie)+    return;++  var ids = cookie.split('+');+  for(var i in ids)+  {+    if(document.getElementById("section." + ids[i]))+      toggleSection(ids[i]);+  }+}++function setCookie(name, value) {+  document.cookie = name + "=" + escape(value) + ";path=/;";+}++function clearCookie(name) {+  document.cookie = name + "=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;";+}++function getCookie(name) {+  var nameEQ = name + "=";+  var ca = document.cookie.split(';');+  for(var i=0;i < ca.length;i++) {+    var c = ca[i];+    while (c.charAt(0)==' ') c = c.substring(1,c.length);+    if (c.indexOf(nameEQ) == 0) {+      return unescape(c.substring(nameEQ.length,c.length));+    }+  }+  return null;+}++++var max_results = 75; // 50 is not enough to search for map in the base libraries+var shown_range = null;+var last_search = null;++function quick_search()+{+    perform_search(false);+}++function full_search()+{+    perform_search(true);+}+++function perform_search(full)+{+    var text = document.getElementById("searchbox").value.toLowerCase();+    if (text == last_search && !full) return;+    last_search = text;+    +    var table = document.getElementById("indexlist");+    var status = document.getElementById("searchmsg");+    var children = table.firstChild.childNodes;+    +    // first figure out the first node with the prefix+    var first = bisect(-1);+    var last = (first == -1 ? -1 : bisect(1));++    if (first == -1)+    {+        table.className = "";+        status.innerHTML = "No results found, displaying all";+    }+    else if (first == 0 && last == children.length - 1)+    {+        table.className = "";+        status.innerHTML = "";+    }+    else if (last - first >= max_results && !full)+    {+        table.className = "";+        status.innerHTML = "More than " + max_results + ", press Search to display";+    }+    else+    {+        // decide what you need to clear/show+        if (shown_range)+            setclass(shown_range[0], shown_range[1], "indexrow");+        setclass(first, last, "indexshow");+        shown_range = [first, last];+        table.className = "indexsearch";+        status.innerHTML = "";+    }++    +    function setclass(first, last, status)+    {+        for (var i = first; i <= last; i++)+        {+            children[i].className = status;+        }+    }+    +    +    // do a binary search, treating 0 as ...+    // return either -1 (no 0's found) or location of most far match+    function bisect(dir)+    {+        var first = 0, finish = children.length - 1;+        var mid, success = false;++        while (finish - first > 3)+        {+            mid = Math.floor((finish + first) / 2);++            var i = checkitem(mid);+            if (i == 0) i = dir;+            if (i == -1)+                finish = mid;+            else+                first = mid;+        }+        var a = (dir == 1 ? first : finish);+        var b = (dir == 1 ? finish : first);+        for (var i = b; i != a - dir; i -= dir)+        {+            if (checkitem(i) == 0) return i;+        }+        return -1;+    }    +    +    +    // from an index, decide what the result is+    // 0 = match, -1 is lower, 1 is higher+    function checkitem(i)+    {+        var s = getitem(i).toLowerCase().substr(0, text.length);+        if (s == text) return 0;+        else return (s > text ? -1 : 1);+    }+    +    +    // from an index, get its string+    // this abstracts over alternates+    function getitem(i)+    {+        for ( ; i >= 0; i--)+        {+            var s = children[i].firstChild.firstChild.data;+            if (s.indexOf(' ') == -1)+                return s;+        }+        return ""; // should never be reached+    }+}++function setSynopsis(filename) {+    if (parent.window.synopsis) {+        if (parent.window.synopsis.location.replace) {+            // In Firefox this avoids adding the change to the history.+            parent.window.synopsis.location.replace(filename);+        } else {+            parent.window.synopsis.location = filename;+        }+    }+}++function addMenuItem(html) {+  var menu = document.getElementById("page-menu");+  if (menu) {+    var btn = menu.firstChild.cloneNode(false);+    btn.innerHTML = html;+    menu.appendChild(btn);+  }+}++function adjustForFrames() {+  var bodyCls;+  +  if (parent.location.href == window.location.href) {+    // not in frames, so add Frames button+    addMenuItem("<a href='#' onclick='reframe();return true;'>Frames</a>");+    bodyCls = "no-frame";+  }+  else {+    bodyCls = "in-frame";+  }+  addClass(document.body, bodyCls);+}++function reframe() {+  setCookie("haddock-reframe", document.URL);+  window.location = "frames.html";+}++function postReframe() {+  var s = getCookie("haddock-reframe");+  if (s) {+    parent.window.main.location = s;+    clearCookie("haddock-reframe");+  }+}++function styles() {+  var i, a, es = document.getElementsByTagName("link"), rs = [];+  for (i = 0; a = es[i]; i++) {+    if(a.rel.indexOf("style") != -1 && a.title) {+      rs.push(a);+    }+  }+  return rs;+}++function addStyleMenu() {+  var as = styles();+  var i, a, btns = "";+  for(i=0; a = as[i]; i++) {+    btns += "<li><a href='#' onclick=\"setActiveStyleSheet('"+      + a.title + "'); return false;\">"+      + a.title + "</a></li>"+  }+  if (as.length > 1) {+    var h = "<div id='style-menu-holder'>"+      + "<a href='#' onclick='styleMenu(); return false;'>Style &#9662;</a>"+      + "<ul id='style-menu' class='hide'>" + btns + "</ul>"+      + "</div>";+    addMenuItem(h);+  }+}++function setActiveStyleSheet(title) {+  var as = styles();+  var i, a, found;+  for(i=0; a = as[i]; i++) {+    a.disabled = true;+          // need to do this always, some browsers are edge triggered+    if(a.title == title) {+      found = a;+    }+  }+  if (found) {+    found.disabled = false;+    setCookie("haddock-style", title);+  }+  else {+    as[0].disabled = false;+    clearCookie("haddock-style");+  }+  styleMenu(false);+}++function resetStyle() {+  var s = getCookie("haddock-style");+  if (s) setActiveStyleSheet(s);+}+++function styleMenu(show) {+  var m = document.getElementById('style-menu');+  if (m) toggleShow(m, show);+}+++function pageLoad() {+  addStyleMenu();+  adjustForFrames();+  resetStyle();+  restoreCollapsed();+}+
+ dist/doc/html/GLMatrix/hslogo-16.png view

binary file changed (absent → 1684 bytes)

+ dist/doc/html/GLMatrix/index-frames.html view
@@ -0,0 +1,4 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>GLMatrix-0.1.0.0: Utilities for working with OpenGL matrices</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[+window.onload = function () {pageLoad();};+//]]>+</script></head><body id="mini"><div id="module-list"><p class="caption">Modules</p><ul><li class="module"><a href="GLMatrix.html" target="main">GLMatrix</a></li></ul></div></body></html>
+ dist/doc/html/GLMatrix/index.html view
@@ -0,0 +1,5 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>GLMatrix-0.1.0.0: Utilities for working with OpenGL matrices</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[+window.onload = function () {pageLoad();};+//]]>+</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">GLMatrix-0.1.0.0: Utilities for working with OpenGL matrices</p></div><div id="content"><div id="description"><h1>GLMatrix-0.1.0.0: Utilities for working with OpenGL matrices</h1><div class="doc"><p>Utilities for working with OpenGL matrices+</p></div></div><div id="module-list"><p class="caption">Modules</p><ul><li><span class="module"><a href="GLMatrix.html">GLMatrix</a></span></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
+ dist/doc/html/GLMatrix/mini_GLMatrix.html view
@@ -0,0 +1,4 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>GLMatrix</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[+window.onload = function () {pageLoad();};+//]]>+</script></head><body id="mini"><div id="module-header"><p class="caption">GLMatrix</p></div><div id="interface"><div class="top"><p class="src"><a href="GLMatrix.html#v:translationMatrix" target="main">translationMatrix</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:frustumMatrix" target="main">frustumMatrix</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:identityMatrix" target="main">identityMatrix</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:toGLFormat" target="main">toGLFormat</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:withMatrix" target="main">withMatrix</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:matrixMulVec" target="main">matrixMulVec</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:matrix4x4To3x3" target="main">matrix4x4To3x3</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:matrix3x3To4x4" target="main">matrix3x3To4x4</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:invertMatrix4x4ON" target="main">invertMatrix4x4ON</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:scalingMatrix" target="main">scalingMatrix</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:rotationMatrix" target="main">rotationMatrix</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:lookAtMatrixG" target="main">lookAtMatrixG</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:orthoMatrix" target="main">orthoMatrix</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:perspectiveMatrix" target="main">perspectiveMatrix</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:addVec" target="main">addVec</a></p></div><div class="top"><p class="src"><a href="GLMatrix.html#v:setMatrix4x4Uniform" target="main">setMatrix4x4Uniform</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a href="GLMatrix.html#t:Matrix4x4" target="main">Matrix4x4</a> </p></div><div class="top"><p class="src"><span class="keyword">type</span> <a href="GLMatrix.html#t:Matrix3x3" target="main">Matrix3x3</a> </p></div><div class="top"><p class="src"><span class="keyword">type</span> <a href="GLMatrix.html#t:Vector4" target="main">Vector4</a> </p></div><div class="top"><p class="src"><span class="keyword">type</span> <a href="GLMatrix.html#t:Vector3" target="main">Vector3</a> </p></div></div></body></html>
+ dist/doc/html/GLMatrix/minus.gif view

binary file changed (absent → 56 bytes)

+ dist/doc/html/GLMatrix/ocean.css view
@@ -0,0 +1,546 @@+/* @group Fundamentals */++* { margin: 0; padding: 0 }++/* Is this portable? */+html {+  background-color: white;+  width: 100%;+  height: 100%;+}++body {+  background: white;+  color: black;+  text-align: left;+  min-height: 100%;+  position: relative;+}++p {+  margin: 0.8em 0;+}++ul, ol {+  margin: 0.8em 0 0.8em 2em;+}++dl {+  margin: 0.8em 0;+}++dt {+  font-weight: bold;+}+dd {+  margin-left: 2em;+}++a { text-decoration: none; }+a[href]:link { color: rgb(196,69,29); }+a[href]:visited { color: rgb(171,105,84); }+a[href]:hover { text-decoration:underline; }++/* @end */++/* @group Fonts & Sizes */++/* Basic technique & IE workarounds from YUI 3+   For reasons, see:+      http://yui.yahooapis.com/3.1.1/build/cssfonts/fonts.css+ */+ +body {+	font:13px/1.4 sans-serif;+	*font-size:small; /* for IE */+	*font:x-small; /* for IE in quirks mode */+}++h1 { font-size: 146.5%; /* 19pt */ } +h2 { font-size: 131%;   /* 17pt */ }+h3 { font-size: 116%;   /* 15pt */ }+h4 { font-size: 100%;   /* 13pt */ }+h5 { font-size: 100%;   /* 13pt */ }++select, input, button, textarea {+	font:99% sans-serif;+}++table {+	font-size:inherit;+	font:100%;+}++pre, code, kbd, samp, tt, .src {+	font-family:monospace;+	*font-size:108%;+	line-height: 124%;+}++.links, .link {+  font-size: 85%; /* 11pt */+}++#module-header .caption {+  font-size: 182%; /* 24pt */+}++.info  {+  font-size: 85%; /* 11pt */+}++#table-of-contents, #synopsis  {+  /* font-size: 85%; /* 11pt */+}+++/* @end */++/* @group Common */++.caption, h1, h2, h3, h4, h5, h6 { +  font-weight: bold;+  color: rgb(78,98,114);+  margin: 0.8em 0 0.4em;+}++* + h1, * + h2, * + h3, * + h4, * + h5, * + h6 {+  margin-top: 2em;+}++h1 + h2, h2 + h3, h3 + h4, h4 + h5, h5 + h6 {+  margin-top: inherit;+}++ul.links {+  list-style: none;+  text-align: left;+  float: right;+  display: inline-table;+  margin: 0 0 0 1em;+}++ul.links li {+  display: inline;+  border-left: 1px solid #d5d5d5; +  white-space: nowrap;+  padding: 0;+}++ul.links li a {+  padding: 0.2em 0.5em;+}++.hide { display: none; }+.show { display: inherit; }+.clear { clear: both; }++.collapser {+  background-image: url(minus.gif);+  background-repeat: no-repeat;+}+.expander {+  background-image: url(plus.gif);+  background-repeat: no-repeat;+}+p.caption.collapser,+p.caption.expander {+  background-position: 0 0.4em;+}+.collapser, .expander {+  padding-left: 14px;+  margin-left: -14px;+  cursor: pointer;+}++pre {+  padding: 0.25em;+  margin: 0.8em 0;+  background: rgb(229,237,244);+  overflow: auto;+  border-bottom: 0.25em solid white;+  /* white border adds some space below the box to compensate+     for visual extra space that paragraphs have between baseline+     and the bounding box */+}++.src {+  background: #f0f0f0;+  padding: 0.2em 0.5em;+}++.keyword { font-weight: normal; }+.def { font-weight: bold; }+++/* @end */++/* @group Page Structure */++#content {+  margin: 0 auto;+  padding: 0 2em 6em;+}++#package-header {+  background: rgb(41,56,69);+  border-top: 5px solid rgb(78,98,114);+  color: #ddd;+  padding: 0.2em;+  position: relative;+  text-align: left;+}++#package-header .caption {+  background: url(hslogo-16.png) no-repeat 0em;+  color: white;+  margin: 0 2em;+  font-weight: normal;+  font-style: normal;+  padding-left: 2em;+}++#package-header a:link, #package-header a:visited { color: white; }+#package-header a:hover { background: rgb(78,98,114); }++#module-header .caption {+  color: rgb(78,98,114);+  font-weight: bold;+  border-bottom: 1px solid #ddd;+}++table.info {+  float: right;+  padding: 0.5em 1em;+  border: 1px solid #ddd;+  color: rgb(78,98,114);+  background-color: #fff;+  max-width: 40%;+  border-spacing: 0;+  position: relative;+  top: -0.5em;+  margin: 0 0 0 2em;+}++.info th {+	padding: 0 1em 0 0;+}++div#style-menu-holder {+  position: relative;+  z-index: 2;+  display: inline;+}++#style-menu {+  position: absolute;+  z-index: 1;+  overflow: visible;+  background: #374c5e;+  margin: 0;+  text-align: center;+  right: 0;+  padding: 0;+  top: 1.25em;+}++#style-menu li {+	display: list-item;+	border-style: none;+	margin: 0;+	padding: 0;+	color: #000;+	list-style-type: none;+}++#style-menu li + li {+	border-top: 1px solid #919191;+}++#style-menu a {+  width: 6em;+  padding: 3px;+  display: block;+}++#footer {+  background: #ddd;+  border-top: 1px solid #aaa;+  padding: 0.5em 0;+  color: #666;+  text-align: center;+  position: absolute;+  bottom: 0;+  width: 100%;+  height: 3em;+}++/* @end */++/* @group Front Matter */++#table-of-contents {+  float: right;+  clear: right;+  background: #faf9dc;+  border: 1px solid #d8d7ad;+  padding: 0.5em 1em;+  max-width: 20em;+  margin: 0.5em 0 1em 1em;+}++#table-of-contents .caption {+  text-align: center;+  margin: 0;+}++#table-of-contents ul {+  list-style: none;+  margin: 0;+}++#table-of-contents ul ul {+  margin-left: 2em;+}++#description .caption {+  display: none;+}++#synopsis {+  display: none;+}++.no-frame #synopsis {+  display: block;+  position: fixed;+  right: 0;+  height: 80%;+  top: 10%;+  padding: 0;+}++#synopsis .caption {+  float: left;+  width: 29px;+  color: rgba(255,255,255,0);+  height: 110px;+  margin: 0;+  font-size: 1px;+  padding: 0;+}++#synopsis p.caption.collapser {+  background: url(synopsis.png) no-repeat -64px -8px;+}++#synopsis p.caption.expander {+  background: url(synopsis.png) no-repeat 0px -8px;+}++#synopsis ul {+  height: 100%;+  overflow: auto;+  padding: 0.5em;+  margin: 0;+}++#synopsis ul ul {+  overflow: hidden;+}++#synopsis ul,+#synopsis ul li.src {+  background-color: #faf9dc;+  white-space: nowrap;+  list-style: none;+  margin-left: 0;+}++/* @end */++/* @group Main Content */++#interface div.top { margin: 2em 0; }+#interface h1 + div.top,+#interface h2 + div.top,+#interface h3 + div.top,+#interface h4 + div.top,+#interface h5 + div.top {+ 	margin-top: 1em;+}+#interface p.src .link {+  float: right;+  color: #919191;+  border-left: 1px solid #919191;+  background: #f0f0f0;+  padding: 0 0.5em 0.2em;+  margin: 0 -0.5em 0 0.5em;+}++#interface table { border-spacing: 2px; }+#interface td {+  vertical-align: top;+  padding-left: 0.5em;+}+#interface td.src {+  white-space: nowrap;+}+#interface td.doc p {+  margin: 0;+}+#interface td.doc p + p {+  margin-top: 0.8em;+}++.subs dl {+  margin: 0;+}++.subs dt {+  float: left;+  clear: left;+  display: block;+  margin: 1px 0;+}++.subs dd {+  float: right;+  width: 90%;+  display: block;+  padding-left: 0.5em;+  margin-bottom: 0.5em;+}++.subs dd.empty {+  display: none;+}++.subs dd p {+  margin: 0;+}++.top p.src {+  border-top: 1px solid #ccc;+}++.subs, .doc {+  /* use this selector for one level of indent */+  padding-left: 2em;+}++.warning {+  color: red;+}++.arguments {+  margin-top: -0.4em;+}+.arguments .caption {+  display: none;+}++.fields { padding-left: 1em; }++.fields .caption { display: none; }++.fields p { margin: 0 0; }++/* this seems bulky to me+.methods, .constructors {+  background: #f8f8f8;+  border: 1px solid #eee;+}+*/++/* @end */++/* @group Auxillary Pages */++#mini {+  margin: 0 auto;+  padding: 0 1em 1em;+}++#mini > * {+  font-size: 93%; /* 12pt */  +}++#mini #module-list .caption,+#mini #module-header .caption {+  font-size: 125%; /* 15pt */+}++#mini #interface h1,+#mini #interface h2,+#mini #interface h3,+#mini #interface h4 {+  font-size: 109%; /* 13pt */+  margin: 1em 0 0;+}++#mini #interface .top,+#mini #interface .src {+  margin: 0;+}++#mini #module-list ul {+  list-style: none;+  margin: 0;+}++#alphabet ul {+	list-style: none;+	padding: 0;+	margin: 0.5em 0 0;+	text-align: center;+}++#alphabet li {+	display: inline;+	margin: 0 0.25em;+}++#alphabet a {+	font-weight: bold;+}++#index .caption,+#module-list .caption { font-size: 131%; /* 17pt */ }++#index table {+  margin-left: 2em;+}++#index .src {+  font-weight: bold;+}+#index .alt {+  font-size: 77%; /* 10pt */+  font-style: italic;+  padding-left: 2em;+}++#index td + td {+  padding-left: 1em;+}++#module-list ul {+  list-style: none;+  margin: 0 0 0 2em;+}++#module-list li {+  clear: right;+}++#module-list span.collapser,+#module-list span.expander {+  background-position: 0 0.3em;+}++#module-list .package {+  float: right;+}++/* @end */
+ dist/doc/html/GLMatrix/plus.gif view

binary file changed (absent → 59 bytes)

+ dist/doc/html/GLMatrix/synopsis.png view

binary file changed (absent → 11327 bytes)

+ dist/package.conf.inplace view
@@ -0,0 +1,2 @@+[InstalledPackageInfo {installedPackageId = InstalledPackageId "GLMatrix-0.1.0.0-inplace", sourcePackageId = PackageIdentifier {pkgName = PackageName "GLMatrix", pkgVersion = Version {versionBranch = [0,1,0,0], versionTags = []}}, license = GPL (Just (Version {versionBranch = [3], versionTags = []})), copyright = "", maintainer = "fiendfan1@yahoo.com", author = "kig (Ilmari Heikkinen), fiendfan1", stability = "", homepage = "https://github.com/fiendfan1/GLMatrix", pkgUrl = "", synopsis = "Utilities for working with OpenGL matrices", description = "Some utilities for working with OpenGL matrices,\nmost of the source is from\nhttps://github.com/kig/tomtegebra/blob/master/Tomtegebra/Matrix.hs,\nby kig (Ilmari Heikkinen).", category = "Graphics", exposed = True, exposedModules = ["Graphics.GLMatrix"], hiddenModules = [], trusted = False, importDirs = ["/home/fiendfan1/workspace/Haskell/GLMatrix/New Folder/GLMatrix-0.1.0.0/dist/build"], libraryDirs = ["/home/fiendfan1/workspace/Haskell/GLMatrix/New Folder/GLMatrix-0.1.0.0/dist/build"], hsLibraries = ["HSGLMatrix-0.1.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "OpenGLRaw-1.4.0.0-2249389e7878d532ddba46962125e3bd",InstalledPackageId "base-4.6.0.1-8aa5d403c45ea59dcd2c39f123e27d57"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/home/fiendfan1/workspace/Haskell/GLMatrix/New Folder/GLMatrix-0.1.0.0/dist/doc/html/GLMatrix/GLMatrix.haddock"], haddockHTMLs = ["/home/fiendfan1/workspace/Haskell/GLMatrix/New Folder/GLMatrix-0.1.0.0/dist/doc/html/GLMatrix"]}+]
+ dist/setup-config view
@@ -0,0 +1,2 @@+Saved package config for GLMatrix-0.1.0.0 written by Cabal-1.18.1.3 using ghc-7.6+LocalBuildInfo {configFlags = ConfigFlags {configPrograms = [], configProgramPaths = [], configProgramArgs = [], configProgramPathExtra = [], configHcFlavor = Flag GHC, configHcPath = NoFlag, configHcPkg = NoFlag, configVanillaLib = Flag True, configProfLib = Flag False, configSharedLib = NoFlag, configDynExe = Flag False, configProfExe = Flag False, configConfigureArgs = [], configOptimization = Flag NormalOptimisation, configProgPrefix = Flag "", configProgSuffix = Flag "", configInstallDirs = InstallDirs {prefix = Flag "/home/fiendfan1/.cabal", bindir = Flag "/home/fiendfan1/.cabal/bin", libdir = Flag "/home/fiendfan1/.cabal/lib", libsubdir = Flag "x86_64-linux-ghc-7.6.3/GLMatrix-0.1.0.0", dynlibdir = NoFlag, libexecdir = Flag "/home/fiendfan1/.cabal/libexec", progdir = NoFlag, includedir = NoFlag, datadir = Flag "/home/fiendfan1/.cabal/share", datasubdir = Flag "x86_64-linux-ghc-7.6.3/GLMatrix-0.1.0.0", docdir = Flag "/home/fiendfan1/.cabal/share/doc/x86_64-linux-ghc-7.6.3/GLMatrix-0.1.0.0", mandir = NoFlag, htmldir = Flag "/home/fiendfan1/.cabal/share/doc/x86_64-linux-ghc-7.6.3/GLMatrix-0.1.0.0/html", haddockdir = Flag "/home/fiendfan1/.cabal/share/doc/x86_64-linux-ghc-7.6.3/GLMatrix-0.1.0.0/html", sysconfdir = Flag "/home/fiendfan1/.cabal/etc"}, configScratchDir = NoFlag, configExtraLibDirs = [], configExtraIncludeDirs = [], configDistPref = Flag "dist", configVerbosity = Flag Normal, configUserInstall = Flag True, configPackageDBs = [], configGHCiLib = Flag False, configSplitObjs = Flag False, configStripExes = Flag True, configConstraints = [Dependency (PackageName "base") (ThisVersion (Version {versionBranch = [4,6,0,1], versionTags = []})),Dependency (PackageName "OpenGLRaw") (ThisVersion (Version {versionBranch = [1,4,0,0], versionTags = []}))], configConfigurationsFlags = [], configTests = Flag False, configBenchmarks = Flag False, configLibCoverage = Flag False}, extraConfigArgs = [], installDirTemplates = InstallDirs {prefix = "/home/fiendfan1/.cabal", bindir = "/home/fiendfan1/.cabal/bin", libdir = "/home/fiendfan1/.cabal/lib", libsubdir = "x86_64-linux-ghc-7.6.3/GLMatrix-0.1.0.0", dynlibdir = "$libdir", libexecdir = "/home/fiendfan1/.cabal/libexec", progdir = "$libdir/hugs/programs", includedir = "$libdir/$libsubdir/include", datadir = "/home/fiendfan1/.cabal/share", datasubdir = "x86_64-linux-ghc-7.6.3/GLMatrix-0.1.0.0", docdir = "/home/fiendfan1/.cabal/share/doc/x86_64-linux-ghc-7.6.3/GLMatrix-0.1.0.0", mandir = "$datadir/man", htmldir = "/home/fiendfan1/.cabal/share/doc/x86_64-linux-ghc-7.6.3/GLMatrix-0.1.0.0/html", haddockdir = "/home/fiendfan1/.cabal/share/doc/x86_64-linux-ghc-7.6.3/GLMatrix-0.1.0.0/html", sysconfdir = "/home/fiendfan1/.cabal/etc"}, compiler = Compiler {compilerId = CompilerId GHC (Version {versionBranch = [7,6,3], versionTags = []}), compilerLanguages = [(Haskell98,"-XHaskell98"),(Haskell2010,"-XHaskell2010")], compilerExtensions = [(UnknownExtension "Haskell98","-XHaskell98"),(UnknownExtension "Haskell2010","-XHaskell2010"),(EnableExtension Unsafe,"-XUnsafe"),(EnableExtension Trustworthy,"-XTrustworthy"),(EnableExtension Safe,"-XSafe"),(EnableExtension CPP,"-XCPP"),(DisableExtension CPP,"-XNoCPP"),(EnableExtension PostfixOperators,"-XPostfixOperators"),(DisableExtension PostfixOperators,"-XNoPostfixOperators"),(EnableExtension TupleSections,"-XTupleSections"),(DisableExtension TupleSections,"-XNoTupleSections"),(EnableExtension PatternGuards,"-XPatternGuards"),(DisableExtension PatternGuards,"-XNoPatternGuards"),(EnableExtension UnicodeSyntax,"-XUnicodeSyntax"),(DisableExtension UnicodeSyntax,"-XNoUnicodeSyntax"),(EnableExtension MagicHash,"-XMagicHash"),(DisableExtension MagicHash,"-XNoMagicHash"),(EnableExtension PolymorphicComponents,"-XPolymorphicComponents"),(DisableExtension PolymorphicComponents,"-XNoPolymorphicComponents"),(EnableExtension ExistentialQuantification,"-XExistentialQuantification"),(DisableExtension ExistentialQuantification,"-XNoExistentialQuantification"),(EnableExtension KindSignatures,"-XKindSignatures"),(DisableExtension KindSignatures,"-XNoKindSignatures"),(EnableExtension EmptyDataDecls,"-XEmptyDataDecls"),(DisableExtension EmptyDataDecls,"-XNoEmptyDataDecls"),(EnableExtension ParallelListComp,"-XParallelListComp"),(DisableExtension ParallelListComp,"-XNoParallelListComp"),(EnableExtension TransformListComp,"-XTransformListComp"),(DisableExtension TransformListComp,"-XNoTransformListComp"),(EnableExtension MonadComprehensions,"-XMonadComprehensions"),(DisableExtension MonadComprehensions,"-XNoMonadComprehensions"),(EnableExtension ForeignFunctionInterface,"-XForeignFunctionInterface"),(DisableExtension ForeignFunctionInterface,"-XNoForeignFunctionInterface"),(EnableExtension UnliftedFFITypes,"-XUnliftedFFITypes"),(DisableExtension UnliftedFFITypes,"-XNoUnliftedFFITypes"),(EnableExtension InterruptibleFFI,"-XInterruptibleFFI"),(DisableExtension InterruptibleFFI,"-XNoInterruptibleFFI"),(EnableExtension CApiFFI,"-XCApiFFI"),(DisableExtension CApiFFI,"-XNoCApiFFI"),(EnableExtension GHCForeignImportPrim,"-XGHCForeignImportPrim"),(DisableExtension GHCForeignImportPrim,"-XNoGHCForeignImportPrim"),(EnableExtension LiberalTypeSynonyms,"-XLiberalTypeSynonyms"),(DisableExtension LiberalTypeSynonyms,"-XNoLiberalTypeSynonyms"),(EnableExtension Rank2Types,"-XRank2Types"),(DisableExtension Rank2Types,"-XNoRank2Types"),(EnableExtension RankNTypes,"-XRankNTypes"),(DisableExtension RankNTypes,"-XNoRankNTypes"),(EnableExtension ImpredicativeTypes,"-XImpredicativeTypes"),(DisableExtension ImpredicativeTypes,"-XNoImpredicativeTypes"),(EnableExtension TypeOperators,"-XTypeOperators"),(DisableExtension TypeOperators,"-XNoTypeOperators"),(EnableExtension ExplicitNamespaces,"-XExplicitNamespaces"),(DisableExtension ExplicitNamespaces,"-XNoExplicitNamespaces"),(EnableExtension RecursiveDo,"-XRecursiveDo"),(DisableExtension RecursiveDo,"-XNoRecursiveDo"),(EnableExtension DoRec,"-XDoRec"),(DisableExtension DoRec,"-XNoDoRec"),(EnableExtension Arrows,"-XArrows"),(DisableExtension Arrows,"-XNoArrows"),(EnableExtension ParallelArrays,"-XParallelArrays"),(DisableExtension ParallelArrays,"-XNoParallelArrays"),(EnableExtension TemplateHaskell,"-XTemplateHaskell"),(DisableExtension TemplateHaskell,"-XNoTemplateHaskell"),(EnableExtension QuasiQuotes,"-XQuasiQuotes"),(DisableExtension QuasiQuotes,"-XNoQuasiQuotes"),(EnableExtension ImplicitPrelude,"-XImplicitPrelude"),(DisableExtension ImplicitPrelude,"-XNoImplicitPrelude"),(EnableExtension RecordWildCards,"-XRecordWildCards"),(DisableExtension RecordWildCards,"-XNoRecordWildCards"),(EnableExtension NamedFieldPuns,"-XNamedFieldPuns"),(DisableExtension NamedFieldPuns,"-XNoNamedFieldPuns"),(EnableExtension RecordPuns,"-XRecordPuns"),(DisableExtension RecordPuns,"-XNoRecordPuns"),(EnableExtension DisambiguateRecordFields,"-XDisambiguateRecordFields"),(DisableExtension DisambiguateRecordFields,"-XNoDisambiguateRecordFields"),(EnableExtension OverloadedStrings,"-XOverloadedStrings"),(DisableExtension OverloadedStrings,"-XNoOverloadedStrings"),(EnableExtension GADTs,"-XGADTs"),(DisableExtension GADTs,"-XNoGADTs"),(EnableExtension GADTSyntax,"-XGADTSyntax"),(DisableExtension GADTSyntax,"-XNoGADTSyntax"),(EnableExtension ViewPatterns,"-XViewPatterns"),(DisableExtension ViewPatterns,"-XNoViewPatterns"),(EnableExtension TypeFamilies,"-XTypeFamilies"),(DisableExtension TypeFamilies,"-XNoTypeFamilies"),(EnableExtension BangPatterns,"-XBangPatterns"),(DisableExtension BangPatterns,"-XNoBangPatterns"),(EnableExtension MonomorphismRestriction,"-XMonomorphismRestriction"),(DisableExtension MonomorphismRestriction,"-XNoMonomorphismRestriction"),(EnableExtension NPlusKPatterns,"-XNPlusKPatterns"),(DisableExtension NPlusKPatterns,"-XNoNPlusKPatterns"),(EnableExtension DoAndIfThenElse,"-XDoAndIfThenElse"),(DisableExtension DoAndIfThenElse,"-XNoDoAndIfThenElse"),(EnableExtension RebindableSyntax,"-XRebindableSyntax"),(DisableExtension RebindableSyntax,"-XNoRebindableSyntax"),(EnableExtension ConstraintKinds,"-XConstraintKinds"),(DisableExtension ConstraintKinds,"-XNoConstraintKinds"),(EnableExtension PolyKinds,"-XPolyKinds"),(DisableExtension PolyKinds,"-XNoPolyKinds"),(EnableExtension DataKinds,"-XDataKinds"),(DisableExtension DataKinds,"-XNoDataKinds"),(EnableExtension InstanceSigs,"-XInstanceSigs"),(DisableExtension InstanceSigs,"-XNoInstanceSigs"),(EnableExtension MonoPatBinds,"-XMonoPatBinds"),(DisableExtension MonoPatBinds,"-XNoMonoPatBinds"),(EnableExtension ExplicitForAll,"-XExplicitForAll"),(DisableExtension ExplicitForAll,"-XNoExplicitForAll"),(UnknownExtension "AlternativeLayoutRule","-XAlternativeLayoutRule"),(UnknownExtension "NoAlternativeLayoutRule","-XNoAlternativeLayoutRule"),(UnknownExtension "AlternativeLayoutRuleTransitional","-XAlternativeLayoutRuleTransitional"),(UnknownExtension "NoAlternativeLayoutRuleTransitional","-XNoAlternativeLayoutRuleTransitional"),(EnableExtension DatatypeContexts,"-XDatatypeContexts"),(DisableExtension DatatypeContexts,"-XNoDatatypeContexts"),(EnableExtension NondecreasingIndentation,"-XNondecreasingIndentation"),(DisableExtension NondecreasingIndentation,"-XNoNondecreasingIndentation"),(UnknownExtension "RelaxedLayout","-XRelaxedLayout"),(UnknownExtension "NoRelaxedLayout","-XNoRelaxedLayout"),(EnableExtension TraditionalRecordSyntax,"-XTraditionalRecordSyntax"),(DisableExtension TraditionalRecordSyntax,"-XNoTraditionalRecordSyntax"),(EnableExtension LambdaCase,"-XLambdaCase"),(DisableExtension LambdaCase,"-XNoLambdaCase"),(EnableExtension MultiWayIf,"-XMultiWayIf"),(DisableExtension MultiWayIf,"-XNoMultiWayIf"),(EnableExtension MonoLocalBinds,"-XMonoLocalBinds"),(DisableExtension MonoLocalBinds,"-XNoMonoLocalBinds"),(EnableExtension RelaxedPolyRec,"-XRelaxedPolyRec"),(DisableExtension RelaxedPolyRec,"-XNoRelaxedPolyRec"),(EnableExtension ExtendedDefaultRules,"-XExtendedDefaultRules"),(DisableExtension ExtendedDefaultRules,"-XNoExtendedDefaultRules"),(EnableExtension ImplicitParams,"-XImplicitParams"),(DisableExtension ImplicitParams,"-XNoImplicitParams"),(EnableExtension ScopedTypeVariables,"-XScopedTypeVariables"),(DisableExtension ScopedTypeVariables,"-XNoScopedTypeVariables"),(EnableExtension PatternSignatures,"-XPatternSignatures"),(DisableExtension PatternSignatures,"-XNoPatternSignatures"),(EnableExtension UnboxedTuples,"-XUnboxedTuples"),(DisableExtension UnboxedTuples,"-XNoUnboxedTuples"),(EnableExtension StandaloneDeriving,"-XStandaloneDeriving"),(DisableExtension StandaloneDeriving,"-XNoStandaloneDeriving"),(EnableExtension DeriveDataTypeable,"-XDeriveDataTypeable"),(DisableExtension DeriveDataTypeable,"-XNoDeriveDataTypeable"),(EnableExtension DeriveFunctor,"-XDeriveFunctor"),(DisableExtension DeriveFunctor,"-XNoDeriveFunctor"),(EnableExtension DeriveTraversable,"-XDeriveTraversable"),(DisableExtension DeriveTraversable,"-XNoDeriveTraversable"),(EnableExtension DeriveFoldable,"-XDeriveFoldable"),(DisableExtension DeriveFoldable,"-XNoDeriveFoldable"),(EnableExtension DeriveGeneric,"-XDeriveGeneric"),(DisableExtension DeriveGeneric,"-XNoDeriveGeneric"),(EnableExtension DefaultSignatures,"-XDefaultSignatures"),(DisableExtension DefaultSignatures,"-XNoDefaultSignatures"),(EnableExtension TypeSynonymInstances,"-XTypeSynonymInstances"),(DisableExtension TypeSynonymInstances,"-XNoTypeSynonymInstances"),(EnableExtension FlexibleContexts,"-XFlexibleContexts"),(DisableExtension FlexibleContexts,"-XNoFlexibleContexts"),(EnableExtension FlexibleInstances,"-XFlexibleInstances"),(DisableExtension FlexibleInstances,"-XNoFlexibleInstances"),(EnableExtension ConstrainedClassMethods,"-XConstrainedClassMethods"),(DisableExtension ConstrainedClassMethods,"-XNoConstrainedClassMethods"),(EnableExtension MultiParamTypeClasses,"-XMultiParamTypeClasses"),(DisableExtension MultiParamTypeClasses,"-XNoMultiParamTypeClasses"),(EnableExtension FunctionalDependencies,"-XFunctionalDependencies"),(DisableExtension FunctionalDependencies,"-XNoFunctionalDependencies"),(EnableExtension GeneralizedNewtypeDeriving,"-XGeneralizedNewtypeDeriving"),(DisableExtension GeneralizedNewtypeDeriving,"-XNoGeneralizedNewtypeDeriving"),(EnableExtension OverlappingInstances,"-XOverlappingInstances"),(DisableExtension OverlappingInstances,"-XNoOverlappingInstances"),(EnableExtension UndecidableInstances,"-XUndecidableInstances"),(DisableExtension UndecidableInstances,"-XNoUndecidableInstances"),(EnableExtension IncoherentInstances,"-XIncoherentInstances"),(DisableExtension IncoherentInstances,"-XNoIncoherentInstances"),(EnableExtension PackageImports,"-XPackageImports"),(DisableExtension PackageImports,"-XNoPackageImports")]}, hostPlatform = Platform X86_64 Linux, buildDir = "dist/build", scratchDir = "dist/scratch", componentsConfigs = [(CLibName,LibComponentLocalBuildInfo {componentPackageDeps = [(InstalledPackageId "OpenGLRaw-1.4.0.0-2249389e7878d532ddba46962125e3bd",PackageIdentifier {pkgName = PackageName "OpenGLRaw", pkgVersion = Version {versionBranch = [1,4,0,0], versionTags = []}}),(InstalledPackageId "base-4.6.0.1-8aa5d403c45ea59dcd2c39f123e27d57",PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,6,0,1], versionTags = []}})], componentLibraries = [LibraryName "HSGLMatrix-0.1.0.0"]},[])], installedPkgs = PackageIndex (fromList [(InstalledPackageId "OpenGLRaw-1.4.0.0-2249389e7878d532ddba46962125e3bd",InstalledPackageInfo {installedPackageId = InstalledPackageId "OpenGLRaw-1.4.0.0-2249389e7878d532ddba46962125e3bd", sourcePackageId = PackageIdentifier {pkgName = PackageName "OpenGLRaw", pkgVersion = Version {versionBranch = [1,4,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Sven Panne <svenpanne@gmail.com>, Jason Dagit <dagitj@gmail.com>", author = "", stability = "", homepage = "http://www.haskell.org/haskellwiki/Opengl", pkgUrl = "", synopsis = "A raw binding for the OpenGL graphics system", description = "OpenGLRaw is a raw Haskell binding for the OpenGL 3.2 graphics system and\nlots of OpenGL extensions. It is basically a 1:1 mapping of OpenGL's C API,\nintended as a basis for a nicer interface. OpenGLRaw offers access to all\nnecessary functions, tokens and types plus a general facility for loading\nextension entries. The module hierarchy closely mirrors the naming structure\nof the OpenGL extensions, making it easy to find the right module to import.\nAll API entries are loaded dynamically, so no special C header files are\nneeded for building this package. If an API entry is not found at runtime, a\nuserError is thrown.\n\nOpenGL is the industry's most widely used and supported 2D and 3D graphics\napplication programming interface (API), incorporating a broad set of\nrendering, texture mapping, special effects, and other powerful visualization\nfunctions. For more information about OpenGL and its various extensions,\nplease see <http://www.opengl.org/>\nand <http://www.opengl.org/registry/>.", category = "Graphics", exposed = True, exposedModules = [ModuleName ["Graphics","Rendering","OpenGL","Raw"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ColorBufferFloat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Compatibility"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ComputeShader"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","CopyBuffer"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","CreateContextProfile"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DepthBufferFloat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DepthClamp"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DepthTexture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DrawBuffers"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DrawBuffersBlend"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DrawElementsBaseVertex"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DrawIndirect"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DrawInstanced"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ES2Compatibility"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ES3Compatibility"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","FragmentProgram"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","FragmentShader"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","FramebufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","FramebufferSRGB"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","GeometryShader4"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","GetProgramBinary"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","GpuShader5"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","HalfFloatPixel"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","HalfFloatVertex"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","InstancedArrays"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","MapBufferRange"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","MatrixPalette"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Multisample"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Multitexture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","OcclusionQuery"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","OcclusionQuery2"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","PixelBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","PointParameters"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","PointSprite"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ProvokingVertex"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","QueryBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","SampleShading"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","SeamlessCubeMap"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","SeparateShaderObjects"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ShaderAtomicCounters"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ShaderObjects"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ShaderStorageBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ShadingLanguage100"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Shadow"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ShadowAmbient"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Sync"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TessellationShader"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureBorderClamp"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureCompression"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureCompressionRGTC"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureCubeMap"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureCubeMapArray"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureEnvAdd"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureEnvCombine"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureEnvCrossbar"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureEnvDot3"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureFloat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureGather"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureMirroredRepeat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureMultisample"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureRG"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureRectangle"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TimerQuery"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TransformFeedback3"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TransposeMatrix"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","UniformBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","VertexArrayObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","VertexBlend"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","VertexBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","VertexProgram"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","VertexShader"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","WindowPos"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Core31"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Core31","Types"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Core32"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Abgr"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Bgra"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","BindableUniform"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","BlendColor"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","BlendEquationSeparate"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","BlendFuncSeparate"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","BlendMinmax"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","BlendSubtract"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","ClipVolumeHint"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Cmyka"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","ColorSubtable"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","CompiledVertexArray"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Convolution"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","CoordinateFrame"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","CopyTexture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","CullVertex"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","DepthBoundsTest"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","DirectStateAccess"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","DrawRangeElements"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","FogCoord"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","FourTwoTwoPixels"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","FragmentLighting"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","FramebufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","FramebufferNoAttachments"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","FramebufferSRGB"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","GeometryShader4"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","GpuProgramParameters"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Histogram"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","IndexArrayFormats"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","IndexFunc"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","IndexMaterial"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","LightTexture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","MultiDrawArrays"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Multisample"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","PackedFloat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","PackedPixels"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","PalettedTexture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","PixelTransform"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","PointParameters"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","PolygonOffset"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","ProvokingVertex"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","RescaleNormal"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","SceneMarker"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","SecondaryColor"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","SeparateSpecularColor"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","SharedTexturePalette"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","StencilClearTag"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","StencilTwoSide"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","StencilWrap"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Subtexture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Texture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Texture3D"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureCompressionDxt1"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureCompressionLatc"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureCompressionS3tc"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureEnvAdd"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureEnvCombine"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureEnvDot3"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureFilterAnisotropic"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureInteger"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureLodBias"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureMirrorClamp"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TexturePerturbNormal"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureSRGB"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureSwizzle"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TimerQuery"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","VertexArray"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","VertexShader"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","VertexWeighting"],ModuleName ["Graphics","Rendering","OpenGL","Raw","GetProcAddress"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","ConditionalRender"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","CopyDepthToColor"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","DepthBufferFloat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","DepthClamp"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","ExplicitMultisample"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","Fence"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","FloatBuffer"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","FogDistance"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","FramebufferMultisampleCoverage"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","FragmentProgram"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","FragmentProgram2"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","GeometryProgram4"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","GpuProgram4"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","HalfFloat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","LightMaxExponent"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","MultisampleFilterHint"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","OcclusionQuery"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","PackedDepthStencil"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","ParameterBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","PathRendering"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","PixelDataRange"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","PointSprite"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","PresentVideo"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","PrimitiveRestart"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","RegisterCombiners"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","RegisterCombiners2"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TexgenEmboss"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TexgenReflection"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureCompressionVtc"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureEnvCombine4"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureExpandNormal"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureRectangle"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureShader"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureShader2"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureShader3"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TransformFeedback"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TransformFeedback2"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","VertexArrayRange"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","VertexArrayRange2"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","VertexProgram"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","VertexProgram2Option"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","VertexProgram3"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","VertexProgram4"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Types"]], hiddenModules = [ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Compatibility","Functions"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Compatibility","Tokens"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Core31","Functions"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Core31","Tokens"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Extensions"]], trusted = False, importDirs = ["/home/fiendfan1/.cabal/lib/x86_64-linux-ghc-7.6.3/OpenGLRaw-1.4.0.0"], libraryDirs = ["/home/fiendfan1/.cabal/lib/x86_64-linux-ghc-7.6.3/OpenGLRaw-1.4.0.0"], hsLibraries = ["HSOpenGLRaw-1.4.0.0"], extraLibraries = ["GL"], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.6.0.1-8aa5d403c45ea59dcd2c39f123e27d57",InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/home/fiendfan1/.cabal/share/doc/x86_64-linux-ghc-7.6.3/OpenGLRaw-1.4.0.0/html/OpenGLRaw.haddock"], haddockHTMLs = ["/home/fiendfan1/.cabal/share/doc/x86_64-linux-ghc-7.6.3/OpenGLRaw-1.4.0.0/html"]}),(InstalledPackageId "base-4.6.0.1-8aa5d403c45ea59dcd2c39f123e27d57",InstalledPackageInfo {installedPackageId = InstalledPackageId "base-4.6.0.1-8aa5d403c45ea59dcd2c39f123e27d57", sourcePackageId = PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,6,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Basic libraries", description = "This package contains the Prelude and its support libraries,\nand a large collection of useful libraries ranging from data\nstructures to parsing combinators and debugging utilities.", category = "", exposed = True, exposedModules = [ModuleName ["Foreign","Concurrent"],ModuleName ["GHC","Arr"],ModuleName ["GHC","Base"],ModuleName ["GHC","Char"],ModuleName ["GHC","Conc"],ModuleName ["GHC","Conc","IO"],ModuleName ["GHC","Conc","Signal"],ModuleName ["GHC","Conc","Sync"],ModuleName ["GHC","ConsoleHandler"],ModuleName ["GHC","Constants"],ModuleName ["GHC","Desugar"],ModuleName ["GHC","Enum"],ModuleName ["GHC","Environment"],ModuleName ["GHC","Err"],ModuleName ["GHC","Exception"],ModuleName ["GHC","Exts"],ModuleName ["GHC","Fingerprint"],ModuleName ["GHC","Fingerprint","Type"],ModuleName ["GHC","Float"],ModuleName ["GHC","Float","ConversionUtils"],ModuleName ["GHC","Float","RealFracMethods"],ModuleName ["GHC","Foreign"],ModuleName ["GHC","ForeignPtr"],ModuleName ["GHC","Generics"],ModuleName ["GHC","GHCi"],ModuleName ["GHC","Handle"],ModuleName ["GHC","IO"],ModuleName ["GHC","IO","Buffer"],ModuleName ["GHC","IO","BufferedIO"],ModuleName ["GHC","IO","Device"],ModuleName ["GHC","IO","Encoding"],ModuleName ["GHC","IO","Encoding","CodePage"],ModuleName ["GHC","IO","Encoding","Failure"],ModuleName ["GHC","IO","Encoding","Iconv"],ModuleName ["GHC","IO","Encoding","Latin1"],ModuleName ["GHC","IO","Encoding","Types"],ModuleName ["GHC","IO","Encoding","UTF16"],ModuleName ["GHC","IO","Encoding","UTF32"],ModuleName ["GHC","IO","Encoding","UTF8"],ModuleName ["GHC","IO","Exception"],ModuleName ["GHC","IO","FD"],ModuleName ["GHC","IO","Handle"],ModuleName ["GHC","IO","Handle","FD"],ModuleName ["GHC","IO","Handle","Internals"],ModuleName ["GHC","IO","Handle","Text"],ModuleName ["GHC","IO","Handle","Types"],ModuleName ["GHC","IO","IOMode"],ModuleName ["GHC","IOArray"],ModuleName ["GHC","IOBase"],ModuleName ["GHC","IORef"],ModuleName ["GHC","IP"],ModuleName ["GHC","Int"],ModuleName ["GHC","List"],ModuleName ["GHC","MVar"],ModuleName ["GHC","Num"],ModuleName ["GHC","PArr"],ModuleName ["GHC","Pack"],ModuleName ["GHC","Ptr"],ModuleName ["GHC","Read"],ModuleName ["GHC","Real"],ModuleName ["GHC","ST"],ModuleName ["GHC","Stack"],ModuleName ["GHC","Stats"],ModuleName ["GHC","Show"],ModuleName ["GHC","Stable"],ModuleName ["GHC","Storable"],ModuleName ["GHC","STRef"],ModuleName ["GHC","TypeLits"],ModuleName ["GHC","TopHandler"],ModuleName ["GHC","Unicode"],ModuleName ["GHC","Weak"],ModuleName ["GHC","Word"],ModuleName ["System","Timeout"],ModuleName ["GHC","Event"],ModuleName ["Control","Applicative"],ModuleName ["Control","Arrow"],ModuleName ["Control","Category"],ModuleName ["Control","Concurrent"],ModuleName ["Control","Concurrent","Chan"],ModuleName ["Control","Concurrent","MVar"],ModuleName ["Control","Concurrent","QSem"],ModuleName ["Control","Concurrent","QSemN"],ModuleName ["Control","Concurrent","SampleVar"],ModuleName ["Control","Exception"],ModuleName ["Control","Exception","Base"],ModuleName ["Control","Monad"],ModuleName ["Control","Monad","Fix"],ModuleName ["Control","Monad","Instances"],ModuleName ["Control","Monad","ST"],ModuleName ["Control","Monad","ST","Safe"],ModuleName ["Control","Monad","ST","Unsafe"],ModuleName ["Control","Monad","ST","Lazy"],ModuleName ["Control","Monad","ST","Lazy","Safe"],ModuleName ["Control","Monad","ST","Lazy","Unsafe"],ModuleName ["Control","Monad","ST","Strict"],ModuleName ["Control","Monad","Zip"],ModuleName ["Data","Bits"],ModuleName ["Data","Bool"],ModuleName ["Data","Char"],ModuleName ["Data","Complex"],ModuleName ["Data","Dynamic"],ModuleName ["Data","Either"],ModuleName ["Data","Eq"],ModuleName ["Data","Data"],ModuleName ["Data","Fixed"],ModuleName ["Data","Foldable"],ModuleName ["Data","Function"],ModuleName ["Data","Functor"],ModuleName ["Data","HashTable"],ModuleName ["Data","IORef"],ModuleName ["Data","Int"],ModuleName ["Data","Ix"],ModuleName ["Data","List"],ModuleName ["Data","Maybe"],ModuleName ["Data","Monoid"],ModuleName ["Data","Ord"],ModuleName ["Data","Ratio"],ModuleName ["Data","STRef"],ModuleName ["Data","STRef","Lazy"],ModuleName ["Data","STRef","Strict"],ModuleName ["Data","String"],ModuleName ["Data","Traversable"],ModuleName ["Data","Tuple"],ModuleName ["Data","Typeable"],ModuleName ["Data","Typeable","Internal"],ModuleName ["Data","Unique"],ModuleName ["Data","Version"],ModuleName ["Data","Word"],ModuleName ["Debug","Trace"],ModuleName ["Foreign"],ModuleName ["Foreign","C"],ModuleName ["Foreign","C","Error"],ModuleName ["Foreign","C","String"],ModuleName ["Foreign","C","Types"],ModuleName ["Foreign","ForeignPtr"],ModuleName ["Foreign","ForeignPtr","Safe"],ModuleName ["Foreign","ForeignPtr","Unsafe"],ModuleName ["Foreign","Marshal"],ModuleName ["Foreign","Marshal","Alloc"],ModuleName ["Foreign","Marshal","Array"],ModuleName ["Foreign","Marshal","Error"],ModuleName ["Foreign","Marshal","Pool"],ModuleName ["Foreign","Marshal","Safe"],ModuleName ["Foreign","Marshal","Utils"],ModuleName ["Foreign","Marshal","Unsafe"],ModuleName ["Foreign","Ptr"],ModuleName ["Foreign","Safe"],ModuleName ["Foreign","StablePtr"],ModuleName ["Foreign","Storable"],ModuleName ["Numeric"],ModuleName ["Prelude"],ModuleName ["System","Console","GetOpt"],ModuleName ["System","CPUTime"],ModuleName ["System","Environment"],ModuleName ["System","Exit"],ModuleName ["System","IO"],ModuleName ["System","IO","Error"],ModuleName ["System","IO","Unsafe"],ModuleName ["System","Info"],ModuleName ["System","Mem"],ModuleName ["System","Mem","StableName"],ModuleName ["System","Mem","Weak"],ModuleName ["System","Posix","Internals"],ModuleName ["System","Posix","Types"],ModuleName ["Text","ParserCombinators","ReadP"],ModuleName ["Text","ParserCombinators","ReadPrec"],ModuleName ["Text","Printf"],ModuleName ["Text","Read"],ModuleName ["Text","Read","Lex"],ModuleName ["Text","Show"],ModuleName ["Text","Show","Functions"],ModuleName ["Unsafe","Coerce"]], hiddenModules = [ModuleName ["GHC","Event","Array"],ModuleName ["GHC","Event","Clock"],ModuleName ["GHC","Event","Control"],ModuleName ["GHC","Event","EPoll"],ModuleName ["GHC","Event","IntMap"],ModuleName ["GHC","Event","Internal"],ModuleName ["GHC","Event","KQueue"],ModuleName ["GHC","Event","Manager"],ModuleName ["GHC","Event","PSQ"],ModuleName ["GHC","Event","Poll"],ModuleName ["GHC","Event","Thread"],ModuleName ["GHC","Event","Unique"],ModuleName ["Control","Monad","ST","Imp"],ModuleName ["Control","Monad","ST","Lazy","Imp"],ModuleName ["Foreign","ForeignPtr","Imp"],ModuleName ["System","Environment","ExecutablePath"]], trusted = False, importDirs = ["/usr/lib/ghc-7.6.3/base-4.6.0.1"], libraryDirs = ["/usr/lib/ghc-7.6.3/base-4.6.0.1"], hsLibraries = ["HSbase-4.6.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.6.3/base-4.6.0.1/include"], includes = ["HsBase.h"], depends = [InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd",InstalledPackageId "integer-gmp-0.5.0.0-2f15426f5b53fe4c6490832f9b20d8d7",InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/base-4.6.0.1/base.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/base-4.6.0.1"]}),(InstalledPackageId "builtin_rts",InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_rts", sourcePackageId = PackageIdentifier {pkgName = PackageName "rts", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], trusted = False, importDirs = [], libraryDirs = ["/usr/lib/ghc-7.6.3"], hsLibraries = ["HSrts"], extraLibraries = ["m","rt","dl"], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.6.3/include"], includes = ["Stg.h"], depends = [], hugsOptions = [], ccOptions = [], ldOptions = ["-u","ghczmprim_GHCziTypes_Izh_static_info","-u","ghczmprim_GHCziTypes_Czh_static_info","-u","ghczmprim_GHCziTypes_Fzh_static_info","-u","ghczmprim_GHCziTypes_Dzh_static_info","-u","base_GHCziPtr_Ptr_static_info","-u","ghczmprim_GHCziTypes_Wzh_static_info","-u","base_GHCziInt_I8zh_static_info","-u","base_GHCziInt_I16zh_static_info","-u","base_GHCziInt_I32zh_static_info","-u","base_GHCziInt_I64zh_static_info","-u","base_GHCziWord_W8zh_static_info","-u","base_GHCziWord_W16zh_static_info","-u","base_GHCziWord_W32zh_static_info","-u","base_GHCziWord_W64zh_static_info","-u","base_GHCziStable_StablePtr_static_info","-u","ghczmprim_GHCziTypes_Izh_con_info","-u","ghczmprim_GHCziTypes_Czh_con_info","-u","ghczmprim_GHCziTypes_Fzh_con_info","-u","ghczmprim_GHCziTypes_Dzh_con_info","-u","base_GHCziPtr_Ptr_con_info","-u","base_GHCziPtr_FunPtr_con_info","-u","base_GHCziStable_StablePtr_con_info","-u","ghczmprim_GHCziTypes_False_closure","-u","ghczmprim_GHCziTypes_True_closure","-u","base_GHCziPack_unpackCString_closure","-u","base_GHCziIOziException_stackOverflow_closure","-u","base_GHCziIOziException_heapOverflow_closure","-u","base_ControlziExceptionziBase_nonTermination_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnMVar_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnSTM_closure","-u","base_ControlziExceptionziBase_nestedAtomically_closure","-u","base_GHCziWeak_runFinalizzerBatch_closure","-u","base_GHCziTopHandler_flushStdHandles_closure","-u","base_GHCziTopHandler_runIO_closure","-u","base_GHCziTopHandler_runNonIO_closure","-u","base_GHCziConcziIO_ensureIOManagerIsRunning_closure","-u","base_GHCziConcziSync_runSparks_closure","-u","base_GHCziConcziSignal_runHandlers_closure"], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}),(InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd",InstalledPackageInfo {installedPackageId = InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd", sourcePackageId = PackageIdentifier {pkgName = PackageName "ghc-prim", pkgVersion = Version {versionBranch = [0,3,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "GHC primitives", description = "GHC primitives.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Prim"],ModuleName ["GHC","Classes"],ModuleName ["GHC","CString"],ModuleName ["GHC","Debug"],ModuleName ["GHC","Magic"],ModuleName ["GHC","PrimopWrappers"],ModuleName ["GHC","IntWord64"],ModuleName ["GHC","Tuple"],ModuleName ["GHC","Types"]], hiddenModules = [], trusted = False, importDirs = ["/usr/lib/ghc-7.6.3/ghc-prim-0.3.0.0"], libraryDirs = ["/usr/lib/ghc-7.6.3/ghc-prim-0.3.0.0"], hsLibraries = ["HSghc-prim-0.3.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/ghc-prim-0.3.0.0/ghc-prim.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/ghc-prim-0.3.0.0"]}),(InstalledPackageId "integer-gmp-0.5.0.0-2f15426f5b53fe4c6490832f9b20d8d7",InstalledPackageInfo {installedPackageId = InstalledPackageId "integer-gmp-0.5.0.0-2f15426f5b53fe4c6490832f9b20d8d7", sourcePackageId = PackageIdentifier {pkgName = PackageName "integer-gmp", pkgVersion = Version {versionBranch = [0,5,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Integer library based on GMP", description = "This package contains an Integer library based on GMP.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Integer"],ModuleName ["GHC","Integer","GMP","Internals"],ModuleName ["GHC","Integer","GMP","Prim"],ModuleName ["GHC","Integer","Logarithms"],ModuleName ["GHC","Integer","Logarithms","Internals"]], hiddenModules = [ModuleName ["GHC","Integer","Type"]], trusted = False, importDirs = ["/usr/lib/ghc-7.6.3/integer-gmp-0.5.0.0"], libraryDirs = ["/usr/lib/ghc-7.6.3/integer-gmp-0.5.0.0"], hsLibraries = ["HSinteger-gmp-0.5.0.0"], extraLibraries = ["gmp"], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/integer-gmp-0.5.0.0/integer-gmp.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/integer-gmp-0.5.0.0"]})]) (fromList [(PackageName "OpenGLRaw",fromList [(Version {versionBranch = [1,4,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "OpenGLRaw-1.4.0.0-2249389e7878d532ddba46962125e3bd", sourcePackageId = PackageIdentifier {pkgName = PackageName "OpenGLRaw", pkgVersion = Version {versionBranch = [1,4,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Sven Panne <svenpanne@gmail.com>, Jason Dagit <dagitj@gmail.com>", author = "", stability = "", homepage = "http://www.haskell.org/haskellwiki/Opengl", pkgUrl = "", synopsis = "A raw binding for the OpenGL graphics system", description = "OpenGLRaw is a raw Haskell binding for the OpenGL 3.2 graphics system and\nlots of OpenGL extensions. It is basically a 1:1 mapping of OpenGL's C API,\nintended as a basis for a nicer interface. OpenGLRaw offers access to all\nnecessary functions, tokens and types plus a general facility for loading\nextension entries. The module hierarchy closely mirrors the naming structure\nof the OpenGL extensions, making it easy to find the right module to import.\nAll API entries are loaded dynamically, so no special C header files are\nneeded for building this package. If an API entry is not found at runtime, a\nuserError is thrown.\n\nOpenGL is the industry's most widely used and supported 2D and 3D graphics\napplication programming interface (API), incorporating a broad set of\nrendering, texture mapping, special effects, and other powerful visualization\nfunctions. For more information about OpenGL and its various extensions,\nplease see <http://www.opengl.org/>\nand <http://www.opengl.org/registry/>.", category = "Graphics", exposed = True, exposedModules = [ModuleName ["Graphics","Rendering","OpenGL","Raw"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ColorBufferFloat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Compatibility"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ComputeShader"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","CopyBuffer"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","CreateContextProfile"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DepthBufferFloat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DepthClamp"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DepthTexture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DrawBuffers"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DrawBuffersBlend"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DrawElementsBaseVertex"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DrawIndirect"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","DrawInstanced"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ES2Compatibility"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ES3Compatibility"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","FragmentProgram"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","FragmentShader"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","FramebufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","FramebufferSRGB"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","GeometryShader4"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","GetProgramBinary"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","GpuShader5"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","HalfFloatPixel"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","HalfFloatVertex"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","InstancedArrays"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","MapBufferRange"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","MatrixPalette"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Multisample"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Multitexture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","OcclusionQuery"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","OcclusionQuery2"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","PixelBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","PointParameters"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","PointSprite"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ProvokingVertex"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","QueryBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","SampleShading"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","SeamlessCubeMap"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","SeparateShaderObjects"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ShaderAtomicCounters"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ShaderObjects"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ShaderStorageBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ShadingLanguage100"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Shadow"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","ShadowAmbient"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Sync"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TessellationShader"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureBorderClamp"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureCompression"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureCompressionRGTC"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureCubeMap"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureCubeMapArray"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureEnvAdd"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureEnvCombine"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureEnvCrossbar"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureEnvDot3"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureFloat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureGather"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureMirroredRepeat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureMultisample"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureRG"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TextureRectangle"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TimerQuery"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TransformFeedback3"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","TransposeMatrix"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","UniformBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","VertexArrayObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","VertexBlend"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","VertexBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","VertexProgram"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","VertexShader"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","WindowPos"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Core31"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Core31","Types"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Core32"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Abgr"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Bgra"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","BindableUniform"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","BlendColor"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","BlendEquationSeparate"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","BlendFuncSeparate"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","BlendMinmax"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","BlendSubtract"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","ClipVolumeHint"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Cmyka"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","ColorSubtable"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","CompiledVertexArray"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Convolution"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","CoordinateFrame"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","CopyTexture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","CullVertex"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","DepthBoundsTest"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","DirectStateAccess"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","DrawRangeElements"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","FogCoord"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","FourTwoTwoPixels"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","FragmentLighting"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","FramebufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","FramebufferNoAttachments"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","FramebufferSRGB"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","GeometryShader4"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","GpuProgramParameters"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Histogram"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","IndexArrayFormats"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","IndexFunc"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","IndexMaterial"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","LightTexture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","MultiDrawArrays"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Multisample"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","PackedFloat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","PackedPixels"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","PalettedTexture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","PixelTransform"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","PointParameters"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","PolygonOffset"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","ProvokingVertex"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","RescaleNormal"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","SceneMarker"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","SecondaryColor"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","SeparateSpecularColor"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","SharedTexturePalette"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","StencilClearTag"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","StencilTwoSide"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","StencilWrap"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Subtexture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Texture"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","Texture3D"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureCompressionDxt1"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureCompressionLatc"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureCompressionS3tc"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureEnvAdd"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureEnvCombine"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureEnvDot3"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureFilterAnisotropic"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureInteger"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureLodBias"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureMirrorClamp"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TexturePerturbNormal"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureSRGB"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TextureSwizzle"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","TimerQuery"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","VertexArray"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","VertexShader"],ModuleName ["Graphics","Rendering","OpenGL","Raw","EXT","VertexWeighting"],ModuleName ["Graphics","Rendering","OpenGL","Raw","GetProcAddress"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","ConditionalRender"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","CopyDepthToColor"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","DepthBufferFloat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","DepthClamp"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","ExplicitMultisample"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","Fence"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","FloatBuffer"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","FogDistance"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","FramebufferMultisampleCoverage"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","FragmentProgram"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","FragmentProgram2"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","GeometryProgram4"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","GpuProgram4"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","HalfFloat"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","LightMaxExponent"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","MultisampleFilterHint"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","OcclusionQuery"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","PackedDepthStencil"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","ParameterBufferObject"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","PathRendering"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","PixelDataRange"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","PointSprite"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","PresentVideo"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","PrimitiveRestart"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","RegisterCombiners"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","RegisterCombiners2"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TexgenEmboss"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TexgenReflection"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureCompressionVtc"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureEnvCombine4"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureExpandNormal"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureRectangle"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureShader"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureShader2"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TextureShader3"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TransformFeedback"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","TransformFeedback2"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","VertexArrayRange"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","VertexArrayRange2"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","VertexProgram"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","VertexProgram2Option"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","VertexProgram3"],ModuleName ["Graphics","Rendering","OpenGL","Raw","NV","VertexProgram4"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Types"]], hiddenModules = [ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Compatibility","Functions"],ModuleName ["Graphics","Rendering","OpenGL","Raw","ARB","Compatibility","Tokens"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Core31","Functions"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Core31","Tokens"],ModuleName ["Graphics","Rendering","OpenGL","Raw","Extensions"]], trusted = False, importDirs = ["/home/fiendfan1/.cabal/lib/x86_64-linux-ghc-7.6.3/OpenGLRaw-1.4.0.0"], libraryDirs = ["/home/fiendfan1/.cabal/lib/x86_64-linux-ghc-7.6.3/OpenGLRaw-1.4.0.0"], hsLibraries = ["HSOpenGLRaw-1.4.0.0"], extraLibraries = ["GL"], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.6.0.1-8aa5d403c45ea59dcd2c39f123e27d57",InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/home/fiendfan1/.cabal/share/doc/x86_64-linux-ghc-7.6.3/OpenGLRaw-1.4.0.0/html/OpenGLRaw.haddock"], haddockHTMLs = ["/home/fiendfan1/.cabal/share/doc/x86_64-linux-ghc-7.6.3/OpenGLRaw-1.4.0.0/html"]}])]),(PackageName "base",fromList [(Version {versionBranch = [4,6,0,1], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "base-4.6.0.1-8aa5d403c45ea59dcd2c39f123e27d57", sourcePackageId = PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,6,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Basic libraries", description = "This package contains the Prelude and its support libraries,\nand a large collection of useful libraries ranging from data\nstructures to parsing combinators and debugging utilities.", category = "", exposed = True, exposedModules = [ModuleName ["Foreign","Concurrent"],ModuleName ["GHC","Arr"],ModuleName ["GHC","Base"],ModuleName ["GHC","Char"],ModuleName ["GHC","Conc"],ModuleName ["GHC","Conc","IO"],ModuleName ["GHC","Conc","Signal"],ModuleName ["GHC","Conc","Sync"],ModuleName ["GHC","ConsoleHandler"],ModuleName ["GHC","Constants"],ModuleName ["GHC","Desugar"],ModuleName ["GHC","Enum"],ModuleName ["GHC","Environment"],ModuleName ["GHC","Err"],ModuleName ["GHC","Exception"],ModuleName ["GHC","Exts"],ModuleName ["GHC","Fingerprint"],ModuleName ["GHC","Fingerprint","Type"],ModuleName ["GHC","Float"],ModuleName ["GHC","Float","ConversionUtils"],ModuleName ["GHC","Float","RealFracMethods"],ModuleName ["GHC","Foreign"],ModuleName ["GHC","ForeignPtr"],ModuleName ["GHC","Generics"],ModuleName ["GHC","GHCi"],ModuleName ["GHC","Handle"],ModuleName ["GHC","IO"],ModuleName ["GHC","IO","Buffer"],ModuleName ["GHC","IO","BufferedIO"],ModuleName ["GHC","IO","Device"],ModuleName ["GHC","IO","Encoding"],ModuleName ["GHC","IO","Encoding","CodePage"],ModuleName ["GHC","IO","Encoding","Failure"],ModuleName ["GHC","IO","Encoding","Iconv"],ModuleName ["GHC","IO","Encoding","Latin1"],ModuleName ["GHC","IO","Encoding","Types"],ModuleName ["GHC","IO","Encoding","UTF16"],ModuleName ["GHC","IO","Encoding","UTF32"],ModuleName ["GHC","IO","Encoding","UTF8"],ModuleName ["GHC","IO","Exception"],ModuleName ["GHC","IO","FD"],ModuleName ["GHC","IO","Handle"],ModuleName ["GHC","IO","Handle","FD"],ModuleName ["GHC","IO","Handle","Internals"],ModuleName ["GHC","IO","Handle","Text"],ModuleName ["GHC","IO","Handle","Types"],ModuleName ["GHC","IO","IOMode"],ModuleName ["GHC","IOArray"],ModuleName ["GHC","IOBase"],ModuleName ["GHC","IORef"],ModuleName ["GHC","IP"],ModuleName ["GHC","Int"],ModuleName ["GHC","List"],ModuleName ["GHC","MVar"],ModuleName ["GHC","Num"],ModuleName ["GHC","PArr"],ModuleName ["GHC","Pack"],ModuleName ["GHC","Ptr"],ModuleName ["GHC","Read"],ModuleName ["GHC","Real"],ModuleName ["GHC","ST"],ModuleName ["GHC","Stack"],ModuleName ["GHC","Stats"],ModuleName ["GHC","Show"],ModuleName ["GHC","Stable"],ModuleName ["GHC","Storable"],ModuleName ["GHC","STRef"],ModuleName ["GHC","TypeLits"],ModuleName ["GHC","TopHandler"],ModuleName ["GHC","Unicode"],ModuleName ["GHC","Weak"],ModuleName ["GHC","Word"],ModuleName ["System","Timeout"],ModuleName ["GHC","Event"],ModuleName ["Control","Applicative"],ModuleName ["Control","Arrow"],ModuleName ["Control","Category"],ModuleName ["Control","Concurrent"],ModuleName ["Control","Concurrent","Chan"],ModuleName ["Control","Concurrent","MVar"],ModuleName ["Control","Concurrent","QSem"],ModuleName ["Control","Concurrent","QSemN"],ModuleName ["Control","Concurrent","SampleVar"],ModuleName ["Control","Exception"],ModuleName ["Control","Exception","Base"],ModuleName ["Control","Monad"],ModuleName ["Control","Monad","Fix"],ModuleName ["Control","Monad","Instances"],ModuleName ["Control","Monad","ST"],ModuleName ["Control","Monad","ST","Safe"],ModuleName ["Control","Monad","ST","Unsafe"],ModuleName ["Control","Monad","ST","Lazy"],ModuleName ["Control","Monad","ST","Lazy","Safe"],ModuleName ["Control","Monad","ST","Lazy","Unsafe"],ModuleName ["Control","Monad","ST","Strict"],ModuleName ["Control","Monad","Zip"],ModuleName ["Data","Bits"],ModuleName ["Data","Bool"],ModuleName ["Data","Char"],ModuleName ["Data","Complex"],ModuleName ["Data","Dynamic"],ModuleName ["Data","Either"],ModuleName ["Data","Eq"],ModuleName ["Data","Data"],ModuleName ["Data","Fixed"],ModuleName ["Data","Foldable"],ModuleName ["Data","Function"],ModuleName ["Data","Functor"],ModuleName ["Data","HashTable"],ModuleName ["Data","IORef"],ModuleName ["Data","Int"],ModuleName ["Data","Ix"],ModuleName ["Data","List"],ModuleName ["Data","Maybe"],ModuleName ["Data","Monoid"],ModuleName ["Data","Ord"],ModuleName ["Data","Ratio"],ModuleName ["Data","STRef"],ModuleName ["Data","STRef","Lazy"],ModuleName ["Data","STRef","Strict"],ModuleName ["Data","String"],ModuleName ["Data","Traversable"],ModuleName ["Data","Tuple"],ModuleName ["Data","Typeable"],ModuleName ["Data","Typeable","Internal"],ModuleName ["Data","Unique"],ModuleName ["Data","Version"],ModuleName ["Data","Word"],ModuleName ["Debug","Trace"],ModuleName ["Foreign"],ModuleName ["Foreign","C"],ModuleName ["Foreign","C","Error"],ModuleName ["Foreign","C","String"],ModuleName ["Foreign","C","Types"],ModuleName ["Foreign","ForeignPtr"],ModuleName ["Foreign","ForeignPtr","Safe"],ModuleName ["Foreign","ForeignPtr","Unsafe"],ModuleName ["Foreign","Marshal"],ModuleName ["Foreign","Marshal","Alloc"],ModuleName ["Foreign","Marshal","Array"],ModuleName ["Foreign","Marshal","Error"],ModuleName ["Foreign","Marshal","Pool"],ModuleName ["Foreign","Marshal","Safe"],ModuleName ["Foreign","Marshal","Utils"],ModuleName ["Foreign","Marshal","Unsafe"],ModuleName ["Foreign","Ptr"],ModuleName ["Foreign","Safe"],ModuleName ["Foreign","StablePtr"],ModuleName ["Foreign","Storable"],ModuleName ["Numeric"],ModuleName ["Prelude"],ModuleName ["System","Console","GetOpt"],ModuleName ["System","CPUTime"],ModuleName ["System","Environment"],ModuleName ["System","Exit"],ModuleName ["System","IO"],ModuleName ["System","IO","Error"],ModuleName ["System","IO","Unsafe"],ModuleName ["System","Info"],ModuleName ["System","Mem"],ModuleName ["System","Mem","StableName"],ModuleName ["System","Mem","Weak"],ModuleName ["System","Posix","Internals"],ModuleName ["System","Posix","Types"],ModuleName ["Text","ParserCombinators","ReadP"],ModuleName ["Text","ParserCombinators","ReadPrec"],ModuleName ["Text","Printf"],ModuleName ["Text","Read"],ModuleName ["Text","Read","Lex"],ModuleName ["Text","Show"],ModuleName ["Text","Show","Functions"],ModuleName ["Unsafe","Coerce"]], hiddenModules = [ModuleName ["GHC","Event","Array"],ModuleName ["GHC","Event","Clock"],ModuleName ["GHC","Event","Control"],ModuleName ["GHC","Event","EPoll"],ModuleName ["GHC","Event","IntMap"],ModuleName ["GHC","Event","Internal"],ModuleName ["GHC","Event","KQueue"],ModuleName ["GHC","Event","Manager"],ModuleName ["GHC","Event","PSQ"],ModuleName ["GHC","Event","Poll"],ModuleName ["GHC","Event","Thread"],ModuleName ["GHC","Event","Unique"],ModuleName ["Control","Monad","ST","Imp"],ModuleName ["Control","Monad","ST","Lazy","Imp"],ModuleName ["Foreign","ForeignPtr","Imp"],ModuleName ["System","Environment","ExecutablePath"]], trusted = False, importDirs = ["/usr/lib/ghc-7.6.3/base-4.6.0.1"], libraryDirs = ["/usr/lib/ghc-7.6.3/base-4.6.0.1"], hsLibraries = ["HSbase-4.6.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.6.3/base-4.6.0.1/include"], includes = ["HsBase.h"], depends = [InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd",InstalledPackageId "integer-gmp-0.5.0.0-2f15426f5b53fe4c6490832f9b20d8d7",InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/base-4.6.0.1/base.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/base-4.6.0.1"]}])]),(PackageName "ghc-prim",fromList [(Version {versionBranch = [0,3,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd", sourcePackageId = PackageIdentifier {pkgName = PackageName "ghc-prim", pkgVersion = Version {versionBranch = [0,3,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "GHC primitives", description = "GHC primitives.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Prim"],ModuleName ["GHC","Classes"],ModuleName ["GHC","CString"],ModuleName ["GHC","Debug"],ModuleName ["GHC","Magic"],ModuleName ["GHC","PrimopWrappers"],ModuleName ["GHC","IntWord64"],ModuleName ["GHC","Tuple"],ModuleName ["GHC","Types"]], hiddenModules = [], trusted = False, importDirs = ["/usr/lib/ghc-7.6.3/ghc-prim-0.3.0.0"], libraryDirs = ["/usr/lib/ghc-7.6.3/ghc-prim-0.3.0.0"], hsLibraries = ["HSghc-prim-0.3.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/ghc-prim-0.3.0.0/ghc-prim.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/ghc-prim-0.3.0.0"]}])]),(PackageName "integer-gmp",fromList [(Version {versionBranch = [0,5,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "integer-gmp-0.5.0.0-2f15426f5b53fe4c6490832f9b20d8d7", sourcePackageId = PackageIdentifier {pkgName = PackageName "integer-gmp", pkgVersion = Version {versionBranch = [0,5,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Integer library based on GMP", description = "This package contains an Integer library based on GMP.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Integer"],ModuleName ["GHC","Integer","GMP","Internals"],ModuleName ["GHC","Integer","GMP","Prim"],ModuleName ["GHC","Integer","Logarithms"],ModuleName ["GHC","Integer","Logarithms","Internals"]], hiddenModules = [ModuleName ["GHC","Integer","Type"]], trusted = False, importDirs = ["/usr/lib/ghc-7.6.3/integer-gmp-0.5.0.0"], libraryDirs = ["/usr/lib/ghc-7.6.3/integer-gmp-0.5.0.0"], hsLibraries = ["HSinteger-gmp-0.5.0.0"], extraLibraries = ["gmp"], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/share/doc/ghc/html/libraries/integer-gmp-0.5.0.0/integer-gmp.haddock"], haddockHTMLs = ["/usr/share/doc/ghc/html/libraries/integer-gmp-0.5.0.0"]}])]),(PackageName "rts",fromList [(Version {versionBranch = [1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_rts", sourcePackageId = PackageIdentifier {pkgName = PackageName "rts", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], trusted = False, importDirs = [], libraryDirs = ["/usr/lib/ghc-7.6.3"], hsLibraries = ["HSrts"], extraLibraries = ["m","rt","dl"], extraGHCiLibraries = [], includeDirs = ["/usr/lib/ghc-7.6.3/include"], includes = ["Stg.h"], depends = [], hugsOptions = [], ccOptions = [], ldOptions = ["-u","ghczmprim_GHCziTypes_Izh_static_info","-u","ghczmprim_GHCziTypes_Czh_static_info","-u","ghczmprim_GHCziTypes_Fzh_static_info","-u","ghczmprim_GHCziTypes_Dzh_static_info","-u","base_GHCziPtr_Ptr_static_info","-u","ghczmprim_GHCziTypes_Wzh_static_info","-u","base_GHCziInt_I8zh_static_info","-u","base_GHCziInt_I16zh_static_info","-u","base_GHCziInt_I32zh_static_info","-u","base_GHCziInt_I64zh_static_info","-u","base_GHCziWord_W8zh_static_info","-u","base_GHCziWord_W16zh_static_info","-u","base_GHCziWord_W32zh_static_info","-u","base_GHCziWord_W64zh_static_info","-u","base_GHCziStable_StablePtr_static_info","-u","ghczmprim_GHCziTypes_Izh_con_info","-u","ghczmprim_GHCziTypes_Czh_con_info","-u","ghczmprim_GHCziTypes_Fzh_con_info","-u","ghczmprim_GHCziTypes_Dzh_con_info","-u","base_GHCziPtr_Ptr_con_info","-u","base_GHCziPtr_FunPtr_con_info","-u","base_GHCziStable_StablePtr_con_info","-u","ghczmprim_GHCziTypes_False_closure","-u","ghczmprim_GHCziTypes_True_closure","-u","base_GHCziPack_unpackCString_closure","-u","base_GHCziIOziException_stackOverflow_closure","-u","base_GHCziIOziException_heapOverflow_closure","-u","base_ControlziExceptionziBase_nonTermination_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnMVar_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnSTM_closure","-u","base_ControlziExceptionziBase_nestedAtomically_closure","-u","base_GHCziWeak_runFinalizzerBatch_closure","-u","base_GHCziTopHandler_flushStdHandles_closure","-u","base_GHCziTopHandler_runIO_closure","-u","base_GHCziTopHandler_runNonIO_closure","-u","base_GHCziConcziIO_ensureIOManagerIsRunning_closure","-u","base_GHCziConcziSync_runSparks_closure","-u","base_GHCziConcziSignal_runHandlers_closure"], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}])])]), pkgDescrFile = Just "./GLMatrix.cabal", localPkgDescr = PackageDescription {package = PackageIdentifier {pkgName = PackageName "GLMatrix", pkgVersion = Version {versionBranch = [0,1,0,0], versionTags = []}}, license = GPL (Just (Version {versionBranch = [3], versionTags = []})), licenseFile = "LICENSE", copyright = "", maintainer = "fiendfan1@yahoo.com", author = "kig (Ilmari Heikkinen), fiendfan1", stability = "", testedWith = [], homepage = "https://github.com/fiendfan1/GLMatrix", pkgUrl = "", bugReports = "", sourceRepos = [], synopsis = "Utilities for working with OpenGL matrices", description = "Some utilities for working with OpenGL matrices,\nmost of the source is from\nhttps://github.com/kig/tomtegebra/blob/master/Tomtegebra/Matrix.hs,\nby kig (Ilmari Heikkinen).", category = "Graphics", customFieldsPD = [], buildDepends = [Dependency (PackageName "OpenGLRaw") (IntersectVersionRanges (IntersectVersionRanges (UnionVersionRanges (ThisVersion (Version {versionBranch = [1,4], versionTags = []})) (LaterVersion (Version {versionBranch = [1,4], versionTags = []}))) (EarlierVersion (Version {versionBranch = [1,5], versionTags = []}))) (ThisVersion (Version {versionBranch = [1,4,0,0], versionTags = []}))),Dependency (PackageName "base") (IntersectVersionRanges (IntersectVersionRanges (UnionVersionRanges (ThisVersion (Version {versionBranch = [4,6], versionTags = []})) (LaterVersion (Version {versionBranch = [4,6], versionTags = []}))) (EarlierVersion (Version {versionBranch = [4,7], versionTags = []}))) (ThisVersion (Version {versionBranch = [4,6,0,1], versionTags = []})))], specVersionRaw = Right (UnionVersionRanges (ThisVersion (Version {versionBranch = [1,10], versionTags = []})) (LaterVersion (Version {versionBranch = [1,10], versionTags = []}))), buildType = Just Simple, library = Just (Library {exposedModules = [ModuleName ["Graphics","GLMatrix"]], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], cppOptions = [], ccOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], cSources = [], hsSourceDirs = ["src"], otherModules = [], defaultLanguage = Just Haskell2010, otherLanguages = [], defaultExtensions = [], otherExtensions = [EnableExtension TypeSynonymInstances,EnableExtension FlexibleInstances], oldExtensions = [], extraLibs = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], ghcProfOptions = [], ghcSharedOptions = [], customFieldsBI = [], targetBuildDepends = [Dependency (PackageName "OpenGLRaw") (IntersectVersionRanges (IntersectVersionRanges (UnionVersionRanges (ThisVersion (Version {versionBranch = [1,4], versionTags = []})) (LaterVersion (Version {versionBranch = [1,4], versionTags = []}))) (EarlierVersion (Version {versionBranch = [1,5], versionTags = []}))) (ThisVersion (Version {versionBranch = [1,4,0,0], versionTags = []}))),Dependency (PackageName "base") (IntersectVersionRanges (IntersectVersionRanges (UnionVersionRanges (ThisVersion (Version {versionBranch = [4,6], versionTags = []})) (LaterVersion (Version {versionBranch = [4,6], versionTags = []}))) (EarlierVersion (Version {versionBranch = [4,7], versionTags = []}))) (ThisVersion (Version {versionBranch = [4,6,0,1], versionTags = []})))]}}), executables = [], testSuites = [], benchmarks = [], dataFiles = [], dataDir = "", extraSrcFiles = ["README.md"], extraTmpFiles = [], extraDocFiles = []}, withPrograms = [("ar",ConfiguredProgram {programId = "ar", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/usr/bin/ar"}}),("cpphs",ConfiguredProgram {programId = "cpphs", programVersion = Just (Version {versionBranch = [1,18,3], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/home/fiendfan1/.cabal/bin/cpphs"}}),("gcc",ConfiguredProgram {programId = "gcc", programVersion = Just (Version {versionBranch = [4,8,2], versionTags = []}), programDefaultArgs = ["-Wl,--hash-size=31","-Wl,--reduce-memory-overheads"], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/usr/bin/gcc"}}),("ghc",ConfiguredProgram {programId = "ghc", programVersion = Just (Version {versionBranch = [7,6,3], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/usr/bin/ghc"}}),("ghc-pkg",ConfiguredProgram {programId = "ghc-pkg", programVersion = Just (Version {versionBranch = [7,6,3], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/usr/bin/ghc-pkg"}}),("haddock",ConfiguredProgram {programId = "haddock", programVersion = Just (Version {versionBranch = [2,13,2], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/usr/bin/haddock"}}),("happy",ConfiguredProgram {programId = "happy", programVersion = Just (Version {versionBranch = [1,19,3], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/usr/bin/happy"}}),("hpc",ConfiguredProgram {programId = "hpc", programVersion = Just (Version {versionBranch = [0,6], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/usr/bin/hpc"}}),("hsc2hs",ConfiguredProgram {programId = "hsc2hs", programVersion = Just (Version {versionBranch = [0,67], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/usr/bin/hsc2hs"}}),("hscolour",ConfiguredProgram {programId = "hscolour", programVersion = Just (Version {versionBranch = [1,20], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/home/fiendfan1/.cabal/bin/HsColour"}}),("ld",ConfiguredProgram {programId = "ld", programVersion = Nothing, programDefaultArgs = ["-x","--hash-size=31","--reduce-memory-overheads"], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/usr/bin/ld"}}),("pkg-config",ConfiguredProgram {programId = "pkg-config", programVersion = Just (Version {versionBranch = [0,28], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/usr/bin/pkg-config"}}),("ranlib",ConfiguredProgram {programId = "ranlib", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/usr/bin/ranlib"}}),("strip",ConfiguredProgram {programId = "strip", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/usr/bin/strip"}}),("tar",ConfiguredProgram {programId = "tar", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programOverrideEnv = [("PATH",Just "/home/fiendfan1/.cabal/bin:/home/fiendfan1/.cabal/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/core_perl")], programLocation = FoundOnSystem {locationPath = "/usr/bin/tar"}})], withPackageDB = [GlobalPackageDB,UserPackageDB], withVanillaLib = True, withProfLib = False, withSharedLib = False, withDynExe = False, withProfExe = False, withOptimization = NormalOptimisation, withGHCiLib = False, splitObjs = False, stripExes = True, progPrefix = "", progSuffix = ""}
+ src/Graphics/GLMatrix.hs view
@@ -0,0 +1,267 @@+-- | Modified from / based on:+--   https://github.com/kig/tomtegebra/blob/master/Tomtegebra/Matrix.hs+{-# LANGUAGE TypeSynonymInstances #-}+{-# LANGUAGE FlexibleInstances #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Graphics.GLMatrix (+    translationMatrix, frustumMatrix,+    identityMatrix, toGLFormat, withMatrix,+    matrixMulVec, matrix4x4To3x3, matrix3x3To4x4,+    invertMatrix4x4ON, scalingMatrix,+    rotationMatrix, lookAtMatrixG, orthoMatrix,+    perspectiveMatrix, addVec,+    setMatrix4x4Uniform,+    Matrix4x4, Matrix3x3, Vector4, Vector3+) where++import Data.List (transpose)+import Foreign (Ptr)+import Foreign.C (withCString)+import Foreign.Marshal.Array (withArray)+import Graphics.Rendering.OpenGL.Raw+    (GLfloat, GLuint, glGetUniformLocation,+     glUniformMatrix4fv, gl_FALSE)++-- | 4x4 Matrix in the OpenGL orientation:+--   translation column is the last 4 elements.+type Matrix4x4 = [[GLfloat]]+-- | 3x3 Matrix in the OpenGL orientation.+type Matrix3x3 = [[GLfloat]]+-- | Four element GLfloat vector.+type Vector4 = [GLfloat]+-- | Three element GLfloat vector.+type Vector3 = [GLfloat]++instance Num Matrix4x4 where+    a * b =+        map (\row -> map (dotVec row) at) b+        where at = transpose a+    a + b = applyToIndices2 a b (+)+    abs = map (map abs)+    fromInteger i =+        [+        [fromInteger i, 0, 0, 0],+        [0, fromInteger i, 0, 0],+        [0, 0, fromInteger i, 0],+        [0, 0, 0, fromInteger i]+        ]+    signum = map (map signum)++setMatrix4x4Uniform :: GLuint -> Matrix4x4 -> String -> IO ()+setMatrix4x4Uniform shader matrix var = do+    loc <- withCString var $ glGetUniformLocation shader+    withMatrix matrix (glUniformMatrix4fv loc 1 (fromIntegral gl_FALSE))++withMatrix :: Matrix4x4 -> (Ptr GLfloat -> IO a) -> IO a+withMatrix = withArray . toGLFormat++applyToIndices2 :: [[a]] -> [[b]] -> (a -> b -> c) -> [[c]]+applyToIndices2 (a:as) (b:bs) f =+    applyToIndices a b f : applyToIndices2 as bs f+applyToIndices2 _ _ _ = []++applyToIndices :: [a] -> [b] -> (a -> b -> c) -> [c]+applyToIndices (a:as) (b:bs) f =+    f a b : applyToIndices as bs f+applyToIndices _ _ _ = []++toGLFormat :: Matrix4x4 -> [GLfloat]+toGLFormat = concat+{-# INLINE toGLFormat #-}++-- | The 'Matrix4x4' identity matrix.+identityMatrix :: Matrix4x4+identityMatrix =+    [+        [1,0,0,0],+        [0,1,0,0],+        [0,0,1,0],+        [0,0,0,1]+    ]+{-# INLINE identityMatrix #-}++-- | Multiplies a vector by a matrix.+matrixMulVec :: Matrix4x4 -> Vector4 -> Vector4+matrixMulVec m v = map (dotVec v) (transpose m)+{-# INLINE matrixMulVec #-}++-- | Returns the upper-left 3x3 matrix of a 4x4 matrix.+matrix4x4To3x3 :: Matrix4x4 -> Matrix3x3+matrix4x4To3x3 m = take 3 $ map vec4To3 m++-- | Pads the 3x3 matrix to a 4x4 matrix with a 1 in +--   bottom right corner and 0 elsewhere.+matrix3x3To4x4 :: Matrix3x3 -> Matrix4x4+matrix3x3To4x4 [x,y,z] = [x ++ [0], y ++ [0], z ++ [0], [0,0,0,1]]+matrix3x3To4x4 m = m+{-# INLINE matrix3x3To4x4 #-}++-- | Inverts a 4x4 orthonormal matrix with the special case trick.+invertMatrix4x4ON :: Matrix4x4 -> Matrix4x4+invertMatrix4x4ON m = -- orthonormal matrix inverse+    let [a,b,c] = transpose $ matrix4x4To3x3 m+        [_,_,_,t4] = m+        t = vec4To3 t4+    in [+        vec3To4 a 0, vec3To4 b 0, vec3To4 c 0,+        [dotVec a t, dotVec b t, dotVec c t, t4 !! 3]+       ]++-- | Creates the translation matrix that translates points by the given vector.+translationMatrix :: Vector3 -> Matrix4x4+translationMatrix [x,y,z] =+    [[1,0,0,0],+     [0,1,0,0],+     [0,0,1,0],+     [x,y,z,1]]+translationMatrix _ = identityMatrix+{-# INLINE translationMatrix #-}++-- | Creates the scaling matrix that scales points by the factors given by the+--   vector components.+scalingMatrix :: Vector3 -> Matrix4x4+scalingMatrix [x,y,z] =+   [[x,0,0,0],+    [0,y,0,0],+    [0,0,z,0],+    [0,0,0,1]]+scalingMatrix _ = identityMatrix+{-# INLINE scalingMatrix #-}++rotationMatrix :: GLfloat -> Vector3 -> Matrix4x4+rotationMatrix angle axis =+    let [x,y,z] = normalizeVec axis+        c = cos angle+        s = sin angle+        c1 = 1-c+    in [+      [x*x*c1+c, y*x*c1+z*s, z*x*c1-y*s, 0],+      [x*y*c1-z*s, y*y*c1+c, y*z*c1+x*s, 0],+      [x*z*c1+y*s, y*z*c1-x*s, z*z*c1+c, 0],+      [0,0,0,1]+       ]+{-# INLINE rotationMatrix #-}++-- | Creates a lookAt matrix from three vectors: the eye position, the point the+--   eye is looking at and the up vector of the eye.+lookAtMatrixG :: Vector3 -> Vector3 -> Vector3 -> Matrix4x4+lookAtMatrixG eye center up =+    let z = directionVec eye center+        x = normalizeVec $ crossVec3 up z+        y = normalizeVec $ crossVec3 z x+    in matrix3x3To4x4 (transpose [x,y,z]) *+        translationMatrix (negateVec eye)+{-# INLINE lookAtMatrixG #-}++-- | Creates a frustumMatrix from the given+--   left, right, bottom, top, znear and zfar+--   values for the view frustum.+frustumMatrix ::+    GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> Matrix4x4+frustumMatrix left right bottom top znear zfar =+    let x = 2*znear/(right-left)+        y = 2*znear/(top-bottom)+        a = (right+left)/(right-left)+        b = (top+bottom)/(top-bottom)+        c = -(zfar+znear)/(zfar-znear)+        d = -2*zfar*znear/(zfar-znear)+    in+       [[x, 0, 0, 0],+        [0, y, 0, 0],+        [a, b, c, -1],+        [0, 0, d, 0]]+{-# INLINE frustumMatrix #-}++orthoMatrix ::+    GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> Matrix4x4+orthoMatrix l r b t n f =+    let ai = 2/(r-l)+        bi = 2/(t-b)+        ci = -2/(f-n)+        di = -(r+l)/(r-l)+        ei = -(t+b)/(t-b)+        fi = -(f+n)/(f-n)+    in+    [[ai, 0, 0, 0],+     [0, bi, 0, 0],+     [0, 0, ci, 0],+     [di, ei, fi, 1]]+{-# INLINE orthoMatrix #-}++-- | Creates a perspective projection matrix for the given field-of-view,+--   screen aspect ratio, znear and zfar.+perspectiveMatrix :: GLfloat -> GLfloat -> GLfloat -> GLfloat -> Matrix4x4+perspectiveMatrix fovy aspect znear zfar =+    let ymax = znear * tan (fovy * pi / 360.0)+        ymin = -ymax+        xmin = ymin * aspect+        xmax = ymax * aspect+    in frustumMatrix xmin xmax ymin ymax znear zfar+{-# INLINE perspectiveMatrix #-}++-- | Normalizes a vector to a unit vector.+normalizeVec :: [GLfloat] -> [GLfloat]+normalizeVec v = scaleVec (recip $ lengthVec v) v+{-# INLINE normalizeVec #-}++-- | Scales a vector by a scalar.+scaleVec :: GLfloat -> [GLfloat] -> [GLfloat]+scaleVec s = map (s*)+{-# INLINE scaleVec #-}++-- | Computes the length of a vector.+lengthVec :: [GLfloat] -> GLfloat+lengthVec v = sqrt.sum $ map square v+{-# INLINE lengthVec #-}++-- | Inner product of two vectors.+innerVec :: [GLfloat] -> [GLfloat] -> [GLfloat]+innerVec = zipWith (*)+{-# INLINE innerVec #-}++-- | Adds two vectors together.+addVec :: [GLfloat] -> [GLfloat] -> [GLfloat]+addVec = zipWith (+)+{-# INLINE addVec #-}++-- | Subtracts a vector from another.+subVec :: [GLfloat] -> [GLfloat] -> [GLfloat]+subVec = zipWith (-)+{-# INLINE subVec #-}++-- | Negates a vector.+negateVec :: [GLfloat] -> [GLfloat]+negateVec = map negate+{-# INLINE negateVec #-}+++-- | Computes the direction unit vector between two vectors.+directionVec :: [GLfloat] -> [GLfloat] -> [GLfloat]+directionVec u v = normalizeVec (subVec u v)+{-# INLINE directionVec #-}++-- | Vector dot product.+dotVec :: [GLfloat] -> [GLfloat] -> GLfloat+dotVec a b = sum $ innerVec a b+{-# INLINE dotVec #-}++-- | Cross product of two 3-vectors.+crossVec3 :: [GLfloat] -> [GLfloat] -> [GLfloat]+crossVec3 [u0,u1,u2] [v0,v1,v2] = [u1*v2-u2*v1, u2*v0-u0*v2, u0*v1-u1*v0]+crossVec3 _ _ = [0,0,1]+{-# INLINE crossVec3 #-}++-- | Converts a 4-vector into a 3-vector by dropping the fourth element.+vec4To3 :: Vector4 -> Vector3+vec4To3 = take 3+{-# INLINE vec4To3 #-}++-- | Converts a 3-vector into a 4-vector by appending the given value to it.+vec3To4 :: Vector3 -> GLfloat -> Vector4+vec3To4 v i = v ++ [i]+{-# INLINE vec3To4 #-}++-- | Multiplies a GLfloat by itself.+square :: GLfloat -> GLfloat+square x = x * x+{-# INLINE square #-}