GLURaw-1.3.0.0/0000755000000000000000000000000012045537530011144 5ustar0000000000000000GLURaw-1.3.0.0/Setup.hs0000644000000000000000000000005612045537530012601 0ustar0000000000000000import Distribution.Simple main = defaultMain GLURaw-1.3.0.0/LICENSE0000644000000000000000000000271512045537530012156 0ustar0000000000000000Copyright (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. GLURaw-1.3.0.0/GLURaw.cabal0000644000000000000000000000403312045537530013231 0ustar0000000000000000name: GLURaw version: 1.3.0.0 license: BSD3 license-file: LICENSE maintainer: Jason Dagit , Sven Panne bug-reports: https://github.com/haskell-opengl/GLURaw/issues homepage: http://www.haskell.org/haskellwiki/Opengl 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.6 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 == 1.3.* ghc-options: -Wall if os(windows) && flag(UseNativeWindowsLibraries) cpp-options: "-DCALLCONV=stdcall" cc-options: "-DUSE_GETPROCADDRESS" extra-libraries: glu32 else cpp-options: "-DCALLCONV=ccall" cc-options: "-DUSE_DLSYM" if os(darwin) frameworks: OpenGL else extra-libraries: GLU source-repository head type: git location: https://github.com/haskell-opengl/GLURaw GLURaw-1.3.0.0/src/0000755000000000000000000000000012045537527011741 5ustar0000000000000000GLURaw-1.3.0.0/src/Graphics/0000755000000000000000000000000012045537527013501 5ustar0000000000000000GLURaw-1.3.0.0/src/Graphics/Rendering/0000755000000000000000000000000012045537527015416 5ustar0000000000000000GLURaw-1.3.0.0/src/Graphics/Rendering/GLU/0000755000000000000000000000000012045537527016045 5ustar0000000000000000GLURaw-1.3.0.0/src/Graphics/Rendering/GLU/Raw.hs0000644000000000000000000000152112045537527017131 0ustar0000000000000000-------------------------------------------------------------------------------- -- | -- 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 GLURaw-1.3.0.0/src/Graphics/Rendering/GLU/Raw/0000755000000000000000000000000012045537530016570 5ustar0000000000000000GLURaw-1.3.0.0/src/Graphics/Rendering/GLU/Raw/TypesInternal.hs0000644000000000000000000000116412045537530021727 0ustar0000000000000000-- #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 GLURaw-1.3.0.0/src/Graphics/Rendering/GLU/Raw/Types.hs0000644000000000000000000000115412045537530020231 0ustar0000000000000000-------------------------------------------------------------------------------- -- | -- 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 GLURaw-1.3.0.0/src/Graphics/Rendering/GLU/Raw/Tokens.hs0000644000000000000000000002234212045537530020372 0ustar0000000000000000-------------------------------------------------------------------------------- -- | -- 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 GLURaw-1.3.0.0/src/Graphics/Rendering/GLU/Raw/Functions.hs0000644000000000000000000001576412045537527021117 0ustar0000000000000000{-# 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 Foreign.C.Types import Graphics.Rendering.GLU.Raw.APIEntry import Graphics.Rendering.GLU.Raw.Types import Graphics.Rendering.OpenGL.Raw.Core31 import Graphics.Rendering.OpenGL.Raw.Core31.Types #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 -> GLclampd -> GLclampd -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLdouble -> Ptr GLdouble -> IO GLint) GLURaw-1.3.0.0/src/Graphics/Rendering/GLU/Raw/Callbacks.hs0000644000000000000000000001606112045537527021015 0ustar0000000000000000{-# 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 Foreign.C.Types import Graphics.Rendering.OpenGL.Raw import Graphics.Rendering.OpenGL.Raw.Core31.Types -------------------------------------------------------------------------------- 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)) GLURaw-1.3.0.0/src/Graphics/Rendering/GLU/Raw/APIEntry.hs0000644000000000000000000000301112045537530020552 0ustar0000000000000000{-# 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) GLURaw-1.3.0.0/include/0000755000000000000000000000000012045537530012567 5ustar0000000000000000GLURaw-1.3.0.0/include/HsGLURaw.h0000644000000000000000000000231612045537530014336 0ustar0000000000000000/* ----------------------------------------------------------------------------- * * 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 GLURaw-1.3.0.0/cbits/0000755000000000000000000000000012045537530012250 5ustar0000000000000000GLURaw-1.3.0.0/cbits/HsGLURaw.c0000644000000000000000000000434512045537530014016 0ustar0000000000000000/* ----------------------------------------------------------------------------- * * 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 #ifndef __APPLE__ #include #include #endif 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); } #ifndef __APPLE__ /* Hack to force linking of GLU on Linux */ FILE *bitbucket = fopen("/dev/null", "w"); fprintf(bitbucket, "%p\n", gluBeginCurve); fclose(bitbucket); #endif return handle ? dlsym(handle, name) : NULL; } /* -------------------------------------------------------------------------- */ #else #error "Don't know how to retrieve GLU entries" #endif