module Graphics.UI.Gtk.OpenGL.Context (
GLContext,
GLContextClass,
castToGLContext,
GLRenderType(..),
glContextNew,
glContextGetGLDrawable,
glContextGetGLConfig,
glContextGetShareList,
glContextIsDirect,
glContextGetRenderType,
glContextGetCurrent,
) where
import Control.Monad (liftM)
import System.Glib.FFI
import System.Glib.GObject (makeNewGObject, wrapNewGObject)
import Graphics.UI.Gtk.OpenGL.Types
data GLRenderType =
RGBAType
| ColorIndexType
deriving Eq
instance Enum GLRenderType where
fromEnum RGBAType = 0x8014
fromEnum ColorIndexType = 0x8015
toEnum 0x8014 = RGBAType
toEnum 0x8015 = ColorIndexType
glContextNew :: GLDrawableClass gldrawable =>
gldrawable
-> Maybe GLContext
-> Bool
-> GLRenderType
-> IO GLContext
glContextNew gldrawable shareList direct renderType =
wrapNewGObject mkGLContext $
(\(GLDrawable arg1) (GLContext arg2) arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gdk_gl_context_new argPtr1 argPtr2 arg3 arg4)
(toGLDrawable gldrawable)
(maybe (GLContext nullForeignPtr) toGLContext shareList)
(fromBool direct)
((fromIntegral.fromEnum) renderType)
glContextGetGLDrawable :: GLContext
-> IO GLDrawable
glContextGetGLDrawable self =
makeNewGObject mkGLDrawable $
(\(GLContext arg1) -> withForeignPtr arg1 $ \argPtr1 ->gdk_gl_context_get_gl_drawable argPtr1)
(toGLContext self)
glContextGetGLConfig :: GLContext -> IO GLConfig
glContextGetGLConfig self =
makeNewGObject mkGLConfig $
(\(GLContext arg1) -> withForeignPtr arg1 $ \argPtr1 ->gdk_gl_context_get_gl_config argPtr1)
(toGLContext self)
glContextGetShareList :: GLContext -> IO GLContext
glContextGetShareList self =
makeNewGObject mkGLContext $
(\(GLContext arg1) -> withForeignPtr arg1 $ \argPtr1 ->gdk_gl_context_get_share_list argPtr1)
(toGLContext self)
glContextIsDirect :: GLContext -> IO Bool
glContextIsDirect self =
liftM toBool $
(\(GLContext arg1) -> withForeignPtr arg1 $ \argPtr1 ->gdk_gl_context_is_direct argPtr1)
(toGLContext self)
glContextGetRenderType :: GLContext -> IO GLRenderType
glContextGetRenderType self =
liftM (toEnum.fromIntegral) $
(\(GLContext arg1) -> withForeignPtr arg1 $ \argPtr1 ->gdk_gl_context_get_render_type argPtr1)
(toGLContext self)
glContextGetCurrent ::
IO (Maybe GLContext)
glContextGetCurrent =
maybeNull (makeNewGObject mkGLContext) $
gdk_gl_context_get_current
foreign import ccall safe "gdk_gl_context_new"
gdk_gl_context_new :: ((Ptr GLDrawable) -> ((Ptr GLContext) -> (CInt -> (CInt -> (IO (Ptr GLContext))))))
foreign import ccall safe "gdk_gl_context_get_gl_drawable"
gdk_gl_context_get_gl_drawable :: ((Ptr GLContext) -> (IO (Ptr GLDrawable)))
foreign import ccall safe "gdk_gl_context_get_gl_config"
gdk_gl_context_get_gl_config :: ((Ptr GLContext) -> (IO (Ptr GLConfig)))
foreign import ccall safe "gdk_gl_context_get_share_list"
gdk_gl_context_get_share_list :: ((Ptr GLContext) -> (IO (Ptr GLContext)))
foreign import ccall safe "gdk_gl_context_is_direct"
gdk_gl_context_is_direct :: ((Ptr GLContext) -> (IO CInt))
foreign import ccall safe "gdk_gl_context_get_render_type"
gdk_gl_context_get_render_type :: ((Ptr GLContext) -> (IO CInt))
foreign import ccall safe "gdk_gl_context_get_current"
gdk_gl_context_get_current :: (IO (Ptr GLContext))