addfile ./GLURaw.cabal hunk ./GLURaw.cabal 1 +name: GLURaw +version: 1.0.0.0 +license: BSD3 +license-file: LICENSE +maintainer: Sven Panne +bug-reports: mailto:hopengl@haskell.org +homepage: http://www.haskell.org/HOpenGL/ +category: Graphics +synopsis: A raw binding for the OpenGL graphics system +description: + GLURaw is a raw Haskell binding for the GLU 1.3 OpenGL utility library. It is + basically a 1:1 mapping of GLU's C API, intended as a basis for a nicer + interface. + . + OpenGL is the industry's most widely used and supported 2D and 3D graphics + application programming interface (API), incorporating a broad set of + rendering, texture mapping, special effects, and other powerful visualization + functions. For more information about OpenGL and its various extensions, + please see + and . +build-type: Simple +cabal-version: >= 1.2 +extra-source-files: + include/HsGLURaw.h + +flag UseNativeWindowsLibraries + description: + When compiling under Windows, use the native libraries instead of e.g. the + ones coming with Cygwin. + +library + exposed-modules: + Graphics.Rendering.GLU.Raw + Graphics.Rendering.GLU.Raw.Callbacks, + Graphics.Rendering.GLU.Raw.Functions, + Graphics.Rendering.GLU.Raw.Tokens, + Graphics.Rendering.GLU.Raw.Types + other-modules: + Graphics.Rendering.GLU.Raw.APIEntry, + Graphics.Rendering.GLU.Raw.TypesInternal + c-sources: + cbits/HsGLURaw.c + hs-Source-Dirs: src + include-dirs: include + build-depends: base >= 3 && < 5, OpenGLRaw + ghc-options: -Wall + if os(windows) && flag(UseNativeWindowsLibraries) + cpp-options: "-DCALLCONV=stdcall" + extra-libraries: glu32 + cc-options: "-DUSE_GETPROCADDRESS" + else + cpp-options: "-DCALLCONV=ccall" + extra-libraries: GLU + if os(darwin) + cc-options: "-DUSE_NSADDRESSOFSYMBOL" + else + cc-options: "-DUSE_DLSYM" addfile ./LICENSE hunk ./LICENSE 1 +Copyright (c) 2009, Sven Panne +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the author nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. addfile ./Setup.hs hunk ./Setup.hs 1 +import Distribution.Simple +main = defaultMain adddir ./cbits addfile ./cbits/HsGLURaw.c hunk ./cbits/HsGLURaw.c 1 +/* ----------------------------------------------------------------------------- + * + * Module : C support for Graphics.Rendering.GLU.Raw.Extensions + * Copyright : (c) Sven Panne 2009 + * License : BSD-style (see the file LICENSE) + * + * Maintainer : sven.panne@aedion.de + * Stability : stable + * Portability : portable + * + * -------------------------------------------------------------------------- */ + +#if defined(USE_GETPROCADDRESS) + +#define WIN32_LEAN_AND_MEAN +#include + +void* +hs_GLU_getProcAddress(const char *name) +{ + static int firstTime = 1; + static HMODULE handle = NULL; + + if (firstTime) { + firstTime = 0; + handle = LoadLibrary(TEXT("glu32")); + } + + return handle ? GetProcAddress(handle, name) : NULL; +} + +/* -------------------------------------------------------------------------- */ +#elif defined(USE_NSADDRESSOFSYMBOL) + +#include +#include +#include + +void* +hs_GLU_getProcAddress(const char *name) +{ + NSSymbol symbol; + + /* Prepend a '_' for the Unix C symbol mangling convention */ + char* symbolName = (char*)malloc(strlen(name) + 2); + if (!symbolName) { + return NULL; + } + symbolName[0] = '_'; + strcpy(symbolName + 1, name); + + if (!NSIsSymbolNameDefined(symbolName)) { + free(symbolName); + return NULL; + } + + symbol = NSLookupAndBindSymbol(symbolName); + free(symbolName); + if (!symbol) { + return NULL; + } + + return NSAddressOfSymbol(symbol); +} + +/* -------------------------------------------------------------------------- */ +#elif defined(USE_DLSYM) + +#include +#include + +void* +hs_GLU_getProcAddress(const char *name) +{ + static int firstTime = 1; + static void *handle = NULL; + + if (firstTime) { + firstTime = 0; + /* Get a handle for our executable. */ + handle = dlopen(NULL, RTLD_LAZY); + } + + return handle ? dlsym(handle, name : NULL; +} + +/* -------------------------------------------------------------------------- */ +#else + +#error "Don't know how to retrieve GLU entries" + +#endif adddir ./include addfile ./include/HsGLURaw.h hunk ./include/HsGLURaw.h 1 +/* ----------------------------------------------------------------------------- + * + * Module : GL extension support for Graphics.Rendering.GLU.Raw + * Copyright : (c) Sven Panne 2009 + * License : BSD-style (see the file LICENSE) + * + * Maintainer : sven.panne@aedion.de + * Stability : stable + * Portability : portable + * + * This header should only define preprocessor macros! + * + * -------------------------------------------------------------------------- */ + +#ifndef HSGLURAW_H +#define HSGLURAW_H + +/* NOTE: The macro must immediately start with the foreign declaration, + otherwise the magic mangler (hack_foreign) in the Hugs build system + doesn't recognize it. */ +#define API_ENTRY_INTERNAL(_entry,_ty,_safety) \ +foreign import CALLCONV _safety "dynamic" dyn_/**/_entry :: Graphics.Rendering.GLU.Raw.APIEntry.Invoker (_ty) ; \ +_entry :: (_ty) ; \ +_entry = dyn_/**/_entry ptr_/**/_entry ; \ +ptr_/**/_entry :: FunPtr a ; \ +ptr_/**/_entry = unsafePerformIO (Graphics.Rendering.GLU.Raw.APIEntry.getAPIEntry "_entry") ; \ +{-# NOINLINE ptr_/**/_entry #-} + +#define API_ENTRY(_entry,_ty) API_ENTRY_INTERNAL(_entry,_ty,unsafe) + +#define API_ENTRY_SAFE(_entry,_ty) API_ENTRY_INTERNAL(_entry,_ty,safe) + +#endif adddir ./src adddir ./src/Graphics adddir ./src/Graphics/Rendering adddir ./src/Graphics/Rendering/GLU adddir ./src/Graphics/Rendering/GLU/Raw addfile ./src/Graphics/Rendering/GLU/Raw.hs hunk ./src/Graphics/Rendering/GLU/Raw.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.Rendering.GLU.Raw +-- Copyright : (c) Sven Panne 2009 +-- License : BSD-style (see the file LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : stable +-- Portability : portable +-- +-- A 1:1 binding for the OpenGL utility library. +-- +-------------------------------------------------------------------------------- + +module Graphics.Rendering.GLU.Raw ( + module Graphics.Rendering.GLU.Raw.Functions, + module Graphics.Rendering.GLU.Raw.Tokens, + module Graphics.Rendering.GLU.Raw.Types, + module Graphics.Rendering.GLU.Raw.Callbacks +) where + +import Graphics.Rendering.GLU.Raw.Functions +import Graphics.Rendering.GLU.Raw.Tokens +import Graphics.Rendering.GLU.Raw.Types +import Graphics.Rendering.GLU.Raw.Callbacks addfile ./src/Graphics/Rendering/GLU/Raw/APIEntry.hs hunk ./src/Graphics/Rendering/GLU/Raw/APIEntry.hs 1 +{-# LANGUAGE ForeignFunctionInterface, CPP #-} +-- #hide +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.Rendering.GLU.Raw.APIEntry +-- Copyright : (c) Sven Panne 2009 +-- License : BSD-style (see the file LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : stable +-- Portability : portable +-- +-- This module offers a portable way to retrieve GLUT entries, providing a +-- portability layer upon platform-specific mechanisms like @dlsym@, +-- @GetProcAddress@ or @NSAddressOfSymbol@. +-- +-------------------------------------------------------------------------------- + +module Graphics.Rendering.GLU.Raw.APIEntry ( + Invoker, getAPIEntry, + FunPtr, unsafePerformIO +) where + +import Foreign.C.String +import Foreign.Marshal.Error +import Foreign.Ptr +import System.IO.Unsafe + +#ifdef __HUGS__ +{-# CFILES cbits/HsOpenGLRaw.c #-} +#endif + +-------------------------------------------------------------------------------- + +type Invoker a = FunPtr a -> a + +-- | Retrieve a GLU API entry by name. Throws a userError when no entry with the +-- given name was found. +getAPIEntry :: String -> IO (FunPtr a) +getAPIEntry extensionEntry = + throwIfNullFunPtr ("unknown GLU entry " ++ extensionEntry) $ + withCString extensionEntry hs_GLU_getProcAddress + +throwIfNullFunPtr :: String -> IO (FunPtr a) -> IO (FunPtr a) +throwIfNullFunPtr = throwIf (== nullFunPtr) . const + +foreign import ccall unsafe "hs_GLU_getProcAddress" + hs_GLU_getProcAddress :: CString -> IO (FunPtr a) addfile ./src/Graphics/Rendering/GLU/Raw/Callbacks.hs hunk ./src/Graphics/Rendering/GLU/Raw/Callbacks.hs 1 +{-# LANGUAGE ForeignFunctionInterface, CPP #-} +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.Rendering.GLU.Raw.Callbacks +-- Copyright : (c) Sven Panne 2009 +-- License : BSD-style (see the file LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : stable +-- Portability : portable +-- +-- All callbacks from GLU 1.3, see . +-- +-------------------------------------------------------------------------------- + +module Graphics.Rendering.GLU.Raw.Callbacks ( + -- * Tessellator Callbacks + -- ** Tessellator Callbacks without Polygon Data + TessBeginCallback, makeTessBeginCallback, + TessEdgeFlagCallback, makeTessEdgeFlagCallback, + TessVertexCallback, makeTessVertexCallback, + TessEndCallback, makeTessEndCallback, + TessErrorCallback, makeTessErrorCallback, + TessCombineCallback, makeTessCombineCallback, + -- ** Tessellator Callbacks with Polygon Data + TessBeginDataCallback, makeTessBeginDataCallback, + TessEdgeFlagDataCallback, makeTessEdgeFlagDataCallback, + TessVertexDataCallback, makeTessVertexDataCallback, + TessEndDataCallback, makeTessEndDataCallback, + TessErrorDataCallback, makeTessErrorDataCallback, + TessCombineDataCallback, makeTessCombineDataCallback, + -- * Quadrics Callbacks + QuadricCallback, makeQuadricCallback, + -- * NURBS Callbacks + -- ** NURBS Callbacks without User Data + NURBSBeginCallback, makeNURBSBeginCallback, + NURBSVertexCallback, makeNURBSVertexCallback, + NURBSNormalCallback, makeNURBSNormalCallback, + NURBSColorCallback, makeNURBSColorCallback, + NURBSTexCoordCallback, makeNURBSTexCoordCallback, + NURBSEndCallback, makeNURBSEndCallback, + NURBSErrorCallback, makeNURBSErrorCallback, + -- ** NURBS Callbacks with User Data + NURBSBeginDataCallback, makeNURBSBeginDataCallback, + NURBSVertexDataCallback, makeNURBSVertexDataCallback, + NURBSNormalDataCallback, makeNURBSNormalDataCallback, + NURBSColorDataCallback, makeNURBSColorDataCallback, + NURBSTexCoordDataCallback, makeNURBSTexCoordDataCallback, + NURBSEndDataCallback, makeNURBSEndDataCallback +) where + +import Foreign.Ptr +import Graphics.Rendering.OpenGL.Raw + +-------------------------------------------------------------------------------- + +type TessBeginCallback = GLenum -> IO () + +foreign import CALLCONV "wrapper" + makeTessBeginCallback :: TessBeginCallback -> IO (FunPtr TessBeginCallback) + +type TessEdgeFlagCallback = GLboolean -> IO () + +foreign import CALLCONV "wrapper" + makeTessEdgeFlagCallback :: TessEdgeFlagCallback -> IO (FunPtr TessEdgeFlagCallback) + +type TessVertexCallback v = Ptr v -> IO () + +foreign import CALLCONV "wrapper" + makeTessVertexCallback :: TessVertexCallback v -> IO (FunPtr (TessVertexCallback v)) + +type TessEndCallback = IO () + +foreign import CALLCONV "wrapper" + makeTessEndCallback :: TessEndCallback -> IO (FunPtr TessEndCallback) + +type TessErrorCallback = GLenum -> IO () + +foreign import CALLCONV "wrapper" + makeTessErrorCallback :: TessErrorCallback -> IO (FunPtr TessErrorCallback) + +type TessCombineCallback v = Ptr GLdouble -> Ptr (Ptr v) -> Ptr GLfloat -> Ptr (Ptr v) -> IO () + +foreign import CALLCONV "wrapper" + makeTessCombineCallback :: TessCombineCallback v -> IO (FunPtr (TessCombineCallback v)) + +type TessBeginDataCallback p = GLenum -> Ptr p -> IO () + +foreign import CALLCONV "wrapper" + makeTessBeginDataCallback :: TessBeginDataCallback p -> IO (FunPtr (TessBeginDataCallback p)) + +type TessEdgeFlagDataCallback p = GLboolean -> Ptr p -> IO () + +foreign import CALLCONV "wrapper" + makeTessEdgeFlagDataCallback :: TessEdgeFlagDataCallback p -> IO (FunPtr (TessEdgeFlagDataCallback p)) + +type TessVertexDataCallback v p = Ptr v -> Ptr p -> IO () + +foreign import CALLCONV "wrapper" + makeTessVertexDataCallback :: TessVertexDataCallback v p -> IO (FunPtr (TessVertexDataCallback v p)) + +type TessEndDataCallback p = Ptr p -> IO () + +foreign import CALLCONV "wrapper" + makeTessEndDataCallback :: TessEndDataCallback p -> IO (FunPtr (TessEndDataCallback p)) + +type TessErrorDataCallback p = GLenum -> Ptr p -> IO () + +foreign import CALLCONV "wrapper" + makeTessErrorDataCallback :: TessErrorDataCallback p -> IO (FunPtr (TessErrorDataCallback p)) + +type TessCombineDataCallback v p = Ptr GLdouble -> Ptr (Ptr v) -> Ptr GLfloat -> Ptr (Ptr v) -> Ptr p -> IO () + +foreign import CALLCONV "wrapper" + makeTessCombineDataCallback :: TessCombineDataCallback v p -> IO (FunPtr (TessCombineDataCallback v p)) + +-------------------------------------------------------------------------------- + +type QuadricCallback = GLenum -> IO () + +foreign import CALLCONV "wrapper" + makeQuadricCallback :: QuadricCallback -> IO (FunPtr QuadricCallback) + +-------------------------------------------------------------------------------- + +type NURBSBeginCallback = GLenum -> IO () + +foreign import CALLCONV "wrapper" + makeNURBSBeginCallback :: NURBSBeginCallback -> IO (FunPtr NURBSBeginCallback) + +type NURBSVertexCallback = Ptr GLfloat -> IO () + +foreign import CALLCONV "wrapper" + makeNURBSVertexCallback :: NURBSVertexCallback -> IO (FunPtr NURBSVertexCallback) + +type NURBSNormalCallback = Ptr GLfloat -> IO () + +foreign import CALLCONV "wrapper" + makeNURBSNormalCallback :: NURBSNormalCallback -> IO (FunPtr NURBSNormalCallback) + +type NURBSColorCallback = Ptr GLfloat -> IO () + +foreign import CALLCONV "wrapper" + makeNURBSColorCallback :: NURBSColorCallback -> IO (FunPtr NURBSColorCallback) + +type NURBSTexCoordCallback = Ptr GLfloat -> IO () + +foreign import CALLCONV "wrapper" + makeNURBSTexCoordCallback :: NURBSTexCoordCallback -> IO (FunPtr NURBSTexCoordCallback) + +type NURBSEndCallback = IO () + +foreign import CALLCONV "wrapper" + makeNURBSEndCallback :: NURBSEndCallback -> IO (FunPtr NURBSEndCallback) + +type NURBSErrorCallback = GLenum -> IO () + +foreign import CALLCONV "wrapper" + makeNURBSErrorCallback :: NURBSErrorCallback -> IO (FunPtr NURBSErrorCallback) + +type NURBSBeginDataCallback u = GLenum -> Ptr u -> IO () + +foreign import CALLCONV "wrapper" + makeNURBSBeginDataCallback :: NURBSBeginDataCallback u -> IO (FunPtr (NURBSBeginDataCallback u)) + +type NURBSVertexDataCallback u = Ptr GLfloat -> Ptr u -> IO () + +foreign import CALLCONV "wrapper" + makeNURBSVertexDataCallback :: NURBSVertexDataCallback u -> IO (FunPtr (NURBSVertexDataCallback u)) + +type NURBSNormalDataCallback u = Ptr GLfloat -> Ptr u -> IO () + +foreign import CALLCONV "wrapper" + makeNURBSNormalDataCallback :: NURBSNormalDataCallback u -> IO (FunPtr (NURBSNormalDataCallback u)) + +type NURBSColorDataCallback u = Ptr GLfloat -> Ptr u -> IO () + +foreign import CALLCONV "wrapper" + makeNURBSColorDataCallback :: NURBSColorDataCallback u -> IO (FunPtr (NURBSColorDataCallback u)) + +type NURBSTexCoordDataCallback u = Ptr GLfloat -> Ptr u -> IO () + +foreign import CALLCONV "wrapper" + makeNURBSTexCoordDataCallback :: NURBSTexCoordDataCallback u -> IO (FunPtr (NURBSTexCoordDataCallback u)) + +type NURBSEndDataCallback u = Ptr u -> IO () + +foreign import CALLCONV "wrapper" + makeNURBSEndDataCallback :: NURBSEndDataCallback u -> IO (FunPtr (NURBSEndDataCallback u)) + addfile ./src/Graphics/Rendering/GLU/Raw/Functions.hs hunk ./src/Graphics/Rendering/GLU/Raw/Functions.hs 1 +{-# LANGUAGE ForeignFunctionInterface, CPP #-} +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.Rendering.GLU.Raw.Functions +-- Copyright : (c) Sven Panne 2009 +-- License : BSD-style (see the file LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : stable +-- Portability : portable +-- +-- All functions from GLU 1.3, see . +-- +-------------------------------------------------------------------------------- + +module Graphics.Rendering.GLU.Raw.Functions ( + gluBeginCurve, + gluBeginPolygon, + gluBeginSurface, + gluBeginTrim, + gluBuild1DMipmapLevels, + gluBuild1DMipmaps, + gluBuild2DMipmapLevels, + gluBuild2DMipmaps, + gluBuild3DMipmapLevels, + gluBuild3DMipmaps, + gluCheckExtension, + gluCylinder, + gluDeleteNurbsRenderer, + gluDeleteQuadric, + gluDeleteTess, + gluDisk, + gluEndCurve, + gluEndPolygon, + gluEndSurface, + gluEndTrim, + gluErrorString, + gluGetNurbsProperty, + gluGetString, + gluGetTessProperty, + gluLoadSamplingMatrices, + gluLookAt, + gluNewNurbsRenderer, + gluNewQuadric, + gluNewTess, + gluNextContour, + gluNurbsCallback, + gluNurbsCallbackData, + gluNurbsCallbackDataEXT, + gluNurbsCurve, + gluNurbsProperty, + gluNurbsSurface, + gluOrtho2D, + gluPartialDisk, + gluPerspective, + gluPickMatrix, + gluProject, + gluPwlCurve, + gluQuadricCallback, + gluQuadricDrawStyle, + gluQuadricNormals, + gluQuadricOrientation, + gluQuadricTexture, + gluScaleImage, + gluSphere, + gluTessBeginContour, + gluTessBeginPolygon, + gluTessCallback, + gluTessEndContour, + gluTessEndPolygon, + gluTessNormal, + gluTessProperty, + gluTessVertex, + gluUnProject, + gluUnProject4, +) where + +import Foreign.Ptr +import Graphics.Rendering.GLU.Raw.APIEntry +import Graphics.Rendering.GLU.Raw.Types +import Graphics.Rendering.OpenGL.Raw.Core31 + +#include "HsGLURaw.h" + +-------------------------------------------------------------------------------- + +API_ENTRY_SAFE(gluBeginCurve,Ptr GLUnurbs -> IO ()) +API_ENTRY_SAFE(gluBeginPolygon,Ptr GLUtesselator -> IO ()) +API_ENTRY_SAFE(gluBeginSurface,Ptr GLUnurbs -> IO ()) +API_ENTRY_SAFE(gluBeginTrim,Ptr GLUnurbs -> IO ()) +API_ENTRY(gluBuild1DMipmapLevels,GLenum -> GLint -> GLsizei -> GLenum -> GLenum -> GLint -> GLint -> GLint -> Ptr a -> IO GLint) +API_ENTRY(gluBuild1DMipmaps,GLenum -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr a -> IO GLint) +API_ENTRY(gluBuild2DMipmapLevels,GLenum -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLint -> GLint -> GLint -> Ptr a -> IO GLint) +API_ENTRY(gluBuild2DMipmaps,GLenum -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr a -> IO GLint) +API_ENTRY(gluBuild3DMipmapLevels,GLenum -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLint -> GLint -> GLint -> Ptr a -> IO GLint) +API_ENTRY(gluBuild3DMipmaps,GLenum -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr a -> IO GLint) +API_ENTRY(gluCheckExtension,Ptr GLubyte -> Ptr GLubyte -> IO GLboolean) +API_ENTRY_SAFE(gluCylinder,Ptr GLUquadric -> GLdouble -> GLdouble -> GLdouble -> GLint -> GLint -> IO ()) +API_ENTRY_SAFE(gluDeleteNurbsRenderer,Ptr GLUnurbs -> IO ()) +API_ENTRY(gluDeleteQuadric,Ptr GLUquadric -> IO ()) +API_ENTRY_SAFE(gluDeleteTess,Ptr GLUtesselator -> IO ()) +API_ENTRY_SAFE(gluDisk,Ptr GLUquadric -> GLdouble -> GLdouble -> GLint -> GLint -> IO ()) +API_ENTRY_SAFE(gluEndCurve,Ptr GLUnurbs -> IO ()) +API_ENTRY_SAFE(gluEndPolygon,Ptr GLUtesselator -> IO ()) +API_ENTRY_SAFE(gluEndSurface,Ptr GLUnurbs -> IO ()) +API_ENTRY_SAFE(gluEndTrim,Ptr GLUnurbs -> IO ()) +API_ENTRY(gluErrorString,GLenum -> IO (Ptr GLubyte)) +API_ENTRY_SAFE(gluGetNurbsProperty,Ptr GLUnurbs -> GLenum -> Ptr GLfloat -> IO ()) +API_ENTRY(gluGetString,GLenum -> IO (Ptr GLubyte)) +API_ENTRY_SAFE(gluGetTessProperty,Ptr GLUtesselator -> GLenum -> Ptr GLdouble -> IO ()) +API_ENTRY_SAFE(gluLoadSamplingMatrices,Ptr GLUnurbs -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLint -> IO ()) +API_ENTRY(gluLookAt,GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) +API_ENTRY_SAFE(gluNewNurbsRenderer,IO (Ptr GLUnurbs)) +API_ENTRY(gluNewQuadric,IO (Ptr GLUquadric)) +API_ENTRY(gluNewTess,IO (Ptr GLUtesselator)) +API_ENTRY_SAFE(gluNextContour,Ptr GLUtesselator -> GLenum -> IO ()) +API_ENTRY_SAFE(gluNurbsCallback,Ptr GLUnurbs -> GLenum -> FunPtr a -> IO ()) +API_ENTRY_SAFE(gluNurbsCallbackData,Ptr GLUnurbs -> Ptr a -> IO ()) +API_ENTRY_SAFE(gluNurbsCallbackDataEXT,Ptr GLUnurbs -> Ptr a -> IO ()) +API_ENTRY_SAFE(gluNurbsCurve,Ptr GLUnurbs -> GLint -> Ptr GLfloat -> GLint -> Ptr GLfloat -> GLint -> GLenum -> IO ()) +API_ENTRY_SAFE(gluNurbsProperty,Ptr GLUnurbs -> GLenum -> GLfloat -> IO ()) +API_ENTRY_SAFE(gluNurbsSurface,Ptr GLUnurbs -> GLint -> Ptr GLfloat -> GLint -> Ptr GLfloat -> GLint -> GLint -> Ptr GLfloat -> GLint -> GLint -> GLenum -> IO ()) +API_ENTRY(gluOrtho2D,GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) +API_ENTRY_SAFE(gluPartialDisk,Ptr GLUquadric -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> IO ()) +API_ENTRY(gluPerspective,GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) +API_ENTRY(gluPickMatrix,GLdouble -> GLdouble -> GLdouble -> GLdouble -> Ptr GLint -> IO ()) +API_ENTRY(gluProject,GLdouble -> GLdouble -> GLdouble -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLint -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLdouble -> IO GLint) +API_ENTRY_SAFE(gluPwlCurve,Ptr GLUnurbs -> GLint -> Ptr GLfloat -> GLint -> GLenum -> IO ()) +API_ENTRY_SAFE(gluQuadricCallback,Ptr GLUquadric -> GLenum -> FunPtr a -> IO ()) +API_ENTRY_SAFE(gluQuadricDrawStyle,Ptr GLUquadric -> GLenum -> IO ()) +API_ENTRY_SAFE(gluQuadricNormals,Ptr GLUquadric -> GLenum -> IO ()) +API_ENTRY_SAFE(gluQuadricOrientation,Ptr GLUquadric -> GLenum -> IO ()) +API_ENTRY_SAFE(gluQuadricTexture,Ptr GLUquadric -> GLboolean -> IO ()) +API_ENTRY(gluScaleImage,GLenum -> GLsizei -> GLsizei -> GLenum -> Ptr a -> GLsizei -> GLsizei -> GLenum -> Ptr b -> IO GLint) +API_ENTRY_SAFE(gluSphere,Ptr GLUquadric -> GLdouble -> GLint -> GLint -> IO ()) +API_ENTRY_SAFE(gluTessBeginContour,Ptr GLUtesselator -> IO ()) +API_ENTRY_SAFE(gluTessBeginPolygon,Ptr GLUtesselator -> Ptr a -> IO ()) +API_ENTRY_SAFE(gluTessCallback,Ptr GLUtesselator -> GLenum -> FunPtr a -> IO ()) +API_ENTRY_SAFE(gluTessEndContour,Ptr GLUtesselator -> IO ()) +API_ENTRY_SAFE(gluTessEndPolygon,Ptr GLUtesselator -> IO ()) +API_ENTRY(gluTessNormal,Ptr GLUtesselator -> GLdouble -> GLdouble -> GLdouble -> IO ()) +API_ENTRY_SAFE(gluTessProperty,Ptr GLUtesselator -> GLenum -> GLdouble -> IO ()) +API_ENTRY_SAFE(gluTessVertex,Ptr GLUtesselator -> Ptr GLdouble -> Ptr a -> IO ()) +API_ENTRY(gluUnProject,GLdouble -> GLdouble -> GLdouble -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLint -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLdouble -> IO GLint) +API_ENTRY(gluUnProject4,GLdouble -> GLdouble -> GLdouble -> GLdouble -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLint -> GLdouble -> GLdouble -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLdouble -> IO GLint) addfile ./src/Graphics/Rendering/GLU/Raw/Tokens.hs hunk ./src/Graphics/Rendering/GLU/Raw/Tokens.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.Rendering.GLU.Raw.Tokens +-- Copyright : (c) Sven Panne 2009 +-- License : BSD-style (see the file LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : stable +-- Portability : portable +-- +-- All tokens from GLU 1.3, see . +-- +-------------------------------------------------------------------------------- + +module Graphics.Rendering.GLU.Raw.Tokens where + +import Graphics.Rendering.OpenGL.Raw.Core31 + +-------------------------------------------------------------------------------- + +-- Boolean +glu_FALSE :: GLenum +glu_FALSE = 0 + +glu_TRUE :: GLenum +glu_TRUE = 1 + +-- StringName +glu_VERSION :: GLenum +glu_VERSION = 100800 + +glu_EXTENSIONS :: GLenum +glu_EXTENSIONS = 100801 + +-- ErrorCode +glu_INVALID_ENUM :: GLenum +glu_INVALID_ENUM = 100900 + +glu_INVALID_VALUE :: GLenum +glu_INVALID_VALUE = 100901 + +glu_OUT_OF_MEMORY :: GLenum +glu_OUT_OF_MEMORY = 100902 + +glu_INCOMPATIBLE_GL_VERSION :: GLenum +glu_INCOMPATIBLE_GL_VERSION = 100903 + +glu_INVALID_OPERATION :: GLenum +glu_INVALID_OPERATION = 100904 + +-- NurbsDisplay +-- GLU_FILL +glu_OUTLINE_POLYGON :: GLenum +glu_OUTLINE_POLYGON = 100240 + +glu_OUTLINE_PATCH :: GLenum +glu_OUTLINE_PATCH = 100241 + +-- NurbsCallback +glu_NURBS_ERROR :: GLenum +glu_NURBS_ERROR = 100103 + +glu_ERROR :: GLenum +glu_ERROR = 100103 + +glu_NURBS_BEGIN :: GLenum +glu_NURBS_BEGIN = 100164 + +glu_NURBS_BEGIN_EXT :: GLenum +glu_NURBS_BEGIN_EXT = 100164 + +glu_NURBS_VERTEX :: GLenum +glu_NURBS_VERTEX = 100165 + +glu_NURBS_VERTEX_EXT :: GLenum +glu_NURBS_VERTEX_EXT = 100165 + +glu_NURBS_NORMAL :: GLenum +glu_NURBS_NORMAL = 100166 + +glu_NURBS_NORMAL_EXT :: GLenum +glu_NURBS_NORMAL_EXT = 100166 + +glu_NURBS_COLOR :: GLenum +glu_NURBS_COLOR = 100167 + +glu_NURBS_COLOR_EXT :: GLenum +glu_NURBS_COLOR_EXT = 100167 + +glu_NURBS_TEXTURE_COORD :: GLenum +glu_NURBS_TEXTURE_COORD = 100168 + +glu_NURBS_TEX_COORD_EXT :: GLenum +glu_NURBS_TEX_COORD_EXT = 100168 + +glu_NURBS_END :: GLenum +glu_NURBS_END = 100169 + +glu_NURBS_END_EXT :: GLenum +glu_NURBS_END_EXT = 100169 + +glu_NURBS_BEGIN_DATA :: GLenum +glu_NURBS_BEGIN_DATA = 100170 + +glu_NURBS_BEGIN_DATA_EXT :: GLenum +glu_NURBS_BEGIN_DATA_EXT = 100170 + +glu_NURBS_VERTEX_DATA :: GLenum +glu_NURBS_VERTEX_DATA = 100171 + +glu_NURBS_VERTEX_DATA_EXT :: GLenum +glu_NURBS_VERTEX_DATA_EXT = 100171 + +glu_NURBS_NORMAL_DATA :: GLenum +glu_NURBS_NORMAL_DATA = 100172 + +glu_NURBS_NORMAL_DATA_EXT :: GLenum +glu_NURBS_NORMAL_DATA_EXT = 100172 + +glu_NURBS_COLOR_DATA :: GLenum +glu_NURBS_COLOR_DATA = 100173 + +glu_NURBS_COLOR_DATA_EXT :: GLenum +glu_NURBS_COLOR_DATA_EXT = 100173 + +glu_NURBS_TEXTURE_COORD_DATA :: GLenum +glu_NURBS_TEXTURE_COORD_DATA = 100174 + +glu_NURBS_TEX_COORD_DATA_EXT :: GLenum +glu_NURBS_TEX_COORD_DATA_EXT = 100174 + +glu_NURBS_END_DATA :: GLenum +glu_NURBS_END_DATA = 100175 + +glu_NURBS_END_DATA_EXT :: GLenum +glu_NURBS_END_DATA_EXT = 100175 + +-- NurbsError +glu_NURBS_ERROR1 :: GLenum +glu_NURBS_ERROR1 = 100251 + +glu_NURBS_ERROR2 :: GLenum +glu_NURBS_ERROR2 = 100252 + +glu_NURBS_ERROR3 :: GLenum +glu_NURBS_ERROR3 = 100253 + +glu_NURBS_ERROR4 :: GLenum +glu_NURBS_ERROR4 = 100254 + +glu_NURBS_ERROR5 :: GLenum +glu_NURBS_ERROR5 = 100255 + +glu_NURBS_ERROR6 :: GLenum +glu_NURBS_ERROR6 = 100256 + +glu_NURBS_ERROR7 :: GLenum +glu_NURBS_ERROR7 = 100257 + +glu_NURBS_ERROR8 :: GLenum +glu_NURBS_ERROR8 = 100258 + +glu_NURBS_ERROR9 :: GLenum +glu_NURBS_ERROR9 = 100259 + +glu_NURBS_ERROR10 :: GLenum +glu_NURBS_ERROR10 = 100260 + +glu_NURBS_ERROR11 :: GLenum +glu_NURBS_ERROR11 = 100261 + +glu_NURBS_ERROR12 :: GLenum +glu_NURBS_ERROR12 = 100262 + +glu_NURBS_ERROR13 :: GLenum +glu_NURBS_ERROR13 = 100263 + +glu_NURBS_ERROR14 :: GLenum +glu_NURBS_ERROR14 = 100264 + +glu_NURBS_ERROR15 :: GLenum +glu_NURBS_ERROR15 = 100265 + +glu_NURBS_ERROR16 :: GLenum +glu_NURBS_ERROR16 = 100266 + +glu_NURBS_ERROR17 :: GLenum +glu_NURBS_ERROR17 = 100267 + +glu_NURBS_ERROR18 :: GLenum +glu_NURBS_ERROR18 = 100268 + +glu_NURBS_ERROR19 :: GLenum +glu_NURBS_ERROR19 = 100269 + +glu_NURBS_ERROR20 :: GLenum +glu_NURBS_ERROR20 = 100270 + +glu_NURBS_ERROR21 :: GLenum +glu_NURBS_ERROR21 = 100271 + +glu_NURBS_ERROR22 :: GLenum +glu_NURBS_ERROR22 = 100272 + +glu_NURBS_ERROR23 :: GLenum +glu_NURBS_ERROR23 = 100273 + +glu_NURBS_ERROR24 :: GLenum +glu_NURBS_ERROR24 = 100274 + +glu_NURBS_ERROR25 :: GLenum +glu_NURBS_ERROR25 = 100275 + +glu_NURBS_ERROR26 :: GLenum +glu_NURBS_ERROR26 = 100276 + +glu_NURBS_ERROR27 :: GLenum +glu_NURBS_ERROR27 = 100277 + +glu_NURBS_ERROR28 :: GLenum +glu_NURBS_ERROR28 = 100278 + +glu_NURBS_ERROR29 :: GLenum +glu_NURBS_ERROR29 = 100279 + +glu_NURBS_ERROR30 :: GLenum +glu_NURBS_ERROR30 = 100280 + +glu_NURBS_ERROR31 :: GLenum +glu_NURBS_ERROR31 = 100281 + +glu_NURBS_ERROR32 :: GLenum +glu_NURBS_ERROR32 = 100282 + +glu_NURBS_ERROR33 :: GLenum +glu_NURBS_ERROR33 = 100283 + +glu_NURBS_ERROR34 :: GLenum +glu_NURBS_ERROR34 = 100284 + +glu_NURBS_ERROR35 :: GLenum +glu_NURBS_ERROR35 = 100285 + +glu_NURBS_ERROR36 :: GLenum +glu_NURBS_ERROR36 = 100286 + +glu_NURBS_ERROR37 :: GLenum +glu_NURBS_ERROR37 = 100287 + +-- NurbsProperty +glu_AUTO_LOAD_MATRIX :: GLenum +glu_AUTO_LOAD_MATRIX = 100200 + +glu_CULLING :: GLenum +glu_CULLING = 100201 + +glu_SAMPLING_TOLERANCE :: GLenum +glu_SAMPLING_TOLERANCE = 100203 + +glu_DISPLAY_MODE :: GLenum +glu_DISPLAY_MODE = 100204 + +glu_PARAMETRIC_TOLERANCE :: GLenum +glu_PARAMETRIC_TOLERANCE = 100202 + +glu_SAMPLING_METHOD :: GLenum +glu_SAMPLING_METHOD = 100205 + +glu_U_STEP :: GLenum +glu_U_STEP = 100206 + +glu_V_STEP :: GLenum +glu_V_STEP = 100207 + +glu_NURBS_MODE :: GLenum +glu_NURBS_MODE = 100160 + +glu_NURBS_MODE_EXT :: GLenum +glu_NURBS_MODE_EXT = 100160 + +glu_NURBS_TESSELLATOR :: GLenum +glu_NURBS_TESSELLATOR = 100161 + +glu_NURBS_TESSELLATOR_EXT :: GLenum +glu_NURBS_TESSELLATOR_EXT = 100161 + +glu_NURBS_RENDERER :: GLenum +glu_NURBS_RENDERER = 100162 + +glu_NURBS_RENDERER_EXT :: GLenum +glu_NURBS_RENDERER_EXT = 100162 + +-- NurbsSampling +glu_OBJECT_PARAMETRIC_ERROR :: GLenum +glu_OBJECT_PARAMETRIC_ERROR = 100208 + +glu_OBJECT_PARAMETRIC_ERROR_EXT :: GLenum +glu_OBJECT_PARAMETRIC_ERROR_EXT = 100208 + +glu_OBJECT_PATH_LENGTH :: GLenum +glu_OBJECT_PATH_LENGTH = 100209 + +glu_OBJECT_PATH_LENGTH_EXT :: GLenum +glu_OBJECT_PATH_LENGTH_EXT = 100209 + +glu_PATH_LENGTH :: GLenum +glu_PATH_LENGTH = 100215 + +glu_PARAMETRIC_ERROR :: GLenum +glu_PARAMETRIC_ERROR = 100216 + +glu_DOMAIN_DISTANCE :: GLenum +glu_DOMAIN_DISTANCE = 100217 + +-- NurbsTrim +glu_MAP1_TRIM_2 :: GLenum +glu_MAP1_TRIM_2 = 100210 + +glu_MAP1_TRIM_3 :: GLenum +glu_MAP1_TRIM_3 = 100211 + +-- QuadricDrawStyle +glu_POINT :: GLenum +glu_POINT = 100010 + +glu_LINE :: GLenum +glu_LINE = 100011 + +glu_FILL :: GLenum +glu_FILL = 100012 + +glu_SILHOUETTE :: GLenum +glu_SILHOUETTE = 100013 + +-- QuadricCallback +-- GLU_ERROR + +-- QuadricNormal +glu_SMOOTH :: GLenum +glu_SMOOTH = 100000 + +glu_FLAT :: GLenum +glu_FLAT = 100001 + +glu_NONE :: GLenum +glu_NONE = 100002 + +-- QuadricOrientation +glu_OUTSIDE :: GLenum +glu_OUTSIDE = 100020 + +glu_INSIDE :: GLenum +glu_INSIDE = 100021 + +-- TessCallback +glu_TESS_BEGIN :: GLenum +glu_TESS_BEGIN = 100100 + +glu_BEGIN :: GLenum +glu_BEGIN = 100100 + +glu_TESS_VERTEX :: GLenum +glu_TESS_VERTEX = 100101 + +glu_VERTEX :: GLenum +glu_VERTEX = 100101 + +glu_TESS_END :: GLenum +glu_TESS_END = 100102 + +glu_END :: GLenum +glu_END = 100102 + +glu_TESS_ERROR :: GLenum +glu_TESS_ERROR = 100103 + +glu_TESS_EDGE_FLAG :: GLenum +glu_TESS_EDGE_FLAG = 100104 + +glu_EDGE_FLAG :: GLenum +glu_EDGE_FLAG = 100104 + +glu_TESS_COMBINE :: GLenum +glu_TESS_COMBINE = 100105 + +glu_TESS_BEGIN_DATA :: GLenum +glu_TESS_BEGIN_DATA = 100106 + +glu_TESS_VERTEX_DATA :: GLenum +glu_TESS_VERTEX_DATA = 100107 + +glu_TESS_END_DATA :: GLenum +glu_TESS_END_DATA = 100108 + +glu_TESS_ERROR_DATA :: GLenum +glu_TESS_ERROR_DATA = 100109 + +glu_TESS_EDGE_FLAG_DATA :: GLenum +glu_TESS_EDGE_FLAG_DATA = 100110 + +glu_TESS_COMBINE_DATA :: GLenum +glu_TESS_COMBINE_DATA = 100111 + +-- TessContour +glu_CW :: GLenum +glu_CW = 100120 + +glu_CCW :: GLenum +glu_CCW = 100121 + +glu_INTERIOR :: GLenum +glu_INTERIOR = 100122 + +glu_EXTERIOR :: GLenum +glu_EXTERIOR = 100123 + +glu_UNKNOWN :: GLenum +glu_UNKNOWN = 100124 + +-- TessProperty +glu_TESS_WINDING_RULE :: GLenum +glu_TESS_WINDING_RULE = 100140 + +glu_TESS_BOUNDARY_ONLY :: GLenum +glu_TESS_BOUNDARY_ONLY = 100141 + +glu_TESS_TOLERANCE :: GLenum +glu_TESS_TOLERANCE = 100142 + +-- TessError +glu_TESS_ERROR1 :: GLenum +glu_TESS_ERROR1 = 100151 + +glu_TESS_ERROR2 :: GLenum +glu_TESS_ERROR2 = 100152 + +glu_TESS_ERROR3 :: GLenum +glu_TESS_ERROR3 = 100153 + +glu_TESS_ERROR4 :: GLenum +glu_TESS_ERROR4 = 100154 + +glu_TESS_ERROR5 :: GLenum +glu_TESS_ERROR5 = 100155 + +glu_TESS_ERROR6 :: GLenum +glu_TESS_ERROR6 = 100156 + +glu_TESS_ERROR7 :: GLenum +glu_TESS_ERROR7 = 100157 + +glu_TESS_ERROR8 :: GLenum +glu_TESS_ERROR8 = 100158 + +glu_TESS_MISSING_BEGIN_POLYGON :: GLenum +glu_TESS_MISSING_BEGIN_POLYGON = 100151 + +glu_TESS_MISSING_BEGIN_CONTOUR :: GLenum +glu_TESS_MISSING_BEGIN_CONTOUR = 100152 + +glu_TESS_MISSING_END_POLYGON :: GLenum +glu_TESS_MISSING_END_POLYGON = 100153 + +glu_TESS_MISSING_END_CONTOUR :: GLenum +glu_TESS_MISSING_END_CONTOUR = 100154 + +glu_TESS_COORD_TOO_LARGE :: GLenum +glu_TESS_COORD_TOO_LARGE = 100155 + +glu_TESS_NEED_COMBINE_CALLBACK :: GLenum +glu_TESS_NEED_COMBINE_CALLBACK = 100156 + +-- TessWinding +glu_TESS_WINDING_ODD :: GLenum +glu_TESS_WINDING_ODD = 100130 + +glu_TESS_WINDING_NONZERO :: GLenum +glu_TESS_WINDING_NONZERO = 100131 + +glu_TESS_WINDING_POSITIVE :: GLenum +glu_TESS_WINDING_POSITIVE = 100132 + +glu_TESS_WINDING_NEGATIVE :: GLenum +glu_TESS_WINDING_NEGATIVE = 100133 + +glu_TESS_WINDING_ABS_GEQ_TWO :: GLenum +glu_TESS_WINDING_ABS_GEQ_TWO = 100134 addfile ./src/Graphics/Rendering/GLU/Raw/Types.hs hunk ./src/Graphics/Rendering/GLU/Raw/Types.hs 1 +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.Rendering.GLU.Raw.Types +-- Copyright : (c) Sven Panne 2009 +-- License : BSD-style (see the file LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : stable +-- Portability : portable +-- +-- All (abstract) types from GLU 1.3, see . +-- +-------------------------------------------------------------------------------- + +module Graphics.Rendering.GLU.Raw.Types ( + GLUnurbs, + GLUquadric, + GLUtesselator +) where + +import Graphics.Rendering.GLU.Raw.TypesInternal addfile ./src/Graphics/Rendering/GLU/Raw/TypesInternal.hs hunk ./src/Graphics/Rendering/GLU/Raw/TypesInternal.hs 1 +-- #hide +-------------------------------------------------------------------------------- +-- | +-- Module : Graphics.Rendering.GLU.Raw.TypesInternal +-- Copyright : (c) Sven Panne 2009 +-- License : BSD-style (see the file LICENSE) +-- +-- Maintainer : sven.panne@aedion.de +-- Stability : stable +-- Portability : portable +-- +-- All types from GLU 1.3, see . +-- +-------------------------------------------------------------------------------- + +module Graphics.Rendering.GLU.Raw.TypesInternal where + +data GLUnurbs = GLUnurbs + +data GLUquadric = GLUquadric + +data GLUtesselator = GLUtesselator hunk ./cbits/HsGLURaw.c 84 - return handle ? dlsym(handle, name : NULL; + return handle ? dlsym(handle, name) : NULL; hunk ./GLURaw.cabal 2 -version: 1.0.0.0 +version: 1.1.0.0 hunk ./GLURaw.cabal 53 - extra-libraries: GLU hunk ./GLURaw.cabal 56 + extra-libraries: GLU hunk ./src/Graphics/Rendering/GLU/Raw/Functions.hs 145 -API_ENTRY(gluUnProject4,GLdouble -> GLdouble -> GLdouble -> GLdouble -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLint -> GLdouble -> GLdouble -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLdouble -> IO GLint) +API_ENTRY(gluUnProject4,GLdouble -> GLdouble -> GLdouble -> GLdouble -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLint -> GLclampd -> GLclampd -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLdouble -> IO GLint) hunk ./GLURaw.cabal 49 - extra-libraries: glu32 hunk ./GLURaw.cabal 50 + extra-libraries: glu32 hunk ./GLURaw.cabal 53 + cc-options: "-DUSE_DLSYM" hunk ./GLURaw.cabal 55 - cc-options: "-DUSE_NSADDRESSOFSYMBOL" + frameworks: OpenGL hunk ./GLURaw.cabal 58 - cc-options: "-DUSE_DLSYM"