GLURaw (empty) → 1.0.0.0
raw patch · 12 files changed
+1150/−0 lines, 12 filesdep +OpenGLRawdep +basesetup-changed
Dependencies added: OpenGLRaw, base
Files
- GLURaw.cabal +57/−0
- LICENSE +28/−0
- Setup.hs +2/−0
- cbits/HsGLURaw.c +92/−0
- include/HsGLURaw.h +33/−0
- src/Graphics/Rendering/GLU/Raw.hs +25/−0
- src/Graphics/Rendering/GLU/Raw/APIEntry.hs +48/−0
- src/Graphics/Rendering/GLU/Raw/Callbacks.hs +190/−0
- src/Graphics/Rendering/GLU/Raw/Functions.hs +145/−0
- src/Graphics/Rendering/GLU/Raw/Tokens.hs +487/−0
- src/Graphics/Rendering/GLU/Raw/Types.hs +21/−0
- src/Graphics/Rendering/GLU/Raw/TypesInternal.hs +22/−0
+ GLURaw.cabal view
@@ -0,0 +1,57 @@+name: GLURaw+version: 1.0.0.0+license: BSD3+license-file: LICENSE+maintainer: Sven Panne <sven.panne@aedion.de>+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 <http://www.opengl.org/>+ and <http://www.opengl.org/registry/>.+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"
+ LICENSE view
@@ -0,0 +1,28 @@+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.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ cbits/HsGLURaw.c view
@@ -0,0 +1,92 @@+/* -----------------------------------------------------------------------------+ *+ * 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 <windows.h>++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 <mach-o/dyld.h>+#include <stdlib.h>+#include <string.h>++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 <stdlib.h>+#include <dlfcn.h>++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
+ include/HsGLURaw.h view
@@ -0,0 +1,33 @@+/* -----------------------------------------------------------------------------+ *+ * 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
+ src/Graphics/Rendering/GLU/Raw.hs view
@@ -0,0 +1,25 @@+--------------------------------------------------------------------------------+-- |+-- 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
+ src/Graphics/Rendering/GLU/Raw/APIEntry.hs view
@@ -0,0 +1,48 @@+{-# 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)
+ src/Graphics/Rendering/GLU/Raw/Callbacks.hs view
@@ -0,0 +1,190 @@+{-# 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 <http://www.opengl.org/>.+--+--------------------------------------------------------------------------------++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))+
+ src/Graphics/Rendering/GLU/Raw/Functions.hs view
@@ -0,0 +1,145 @@+{-# 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 <http://www.opengl.org/>.+--+--------------------------------------------------------------------------------++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)
+ src/Graphics/Rendering/GLU/Raw/Tokens.hs view
@@ -0,0 +1,487 @@+--------------------------------------------------------------------------------+-- |+-- 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 <http://www.opengl.org/>.+--+--------------------------------------------------------------------------------++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
+ src/Graphics/Rendering/GLU/Raw/Types.hs view
@@ -0,0 +1,21 @@+--------------------------------------------------------------------------------+-- |+-- 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 <http://www.opengl.org/>.+--+--------------------------------------------------------------------------------++module Graphics.Rendering.GLU.Raw.Types (+ GLUnurbs,+ GLUquadric,+ GLUtesselator+) where++import Graphics.Rendering.GLU.Raw.TypesInternal
+ src/Graphics/Rendering/GLU/Raw/TypesInternal.hs view
@@ -0,0 +1,22 @@+-- #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 <http://www.opengl.org/>.+--+--------------------------------------------------------------------------------++module Graphics.Rendering.GLU.Raw.TypesInternal where++data GLUnurbs = GLUnurbs++data GLUquadric = GLUquadric++data GLUtesselator = GLUtesselator