module Graphics.UI.Gtk.OpenGL.Drawable (
GLDrawable,
GLDrawableClass,
castToGLDrawable,
toGLDrawable,
glDrawableMakeCurrent,
glDrawableIsDoubleBuffered,
glDrawableSwapBuffers,
glDrawableWaitGL,
glDrawableWaitGdk,
glDrawableGLBegin,
glDrawableGLEnd,
glDrawableGetGLConfig,
glDrawableGetSize,
glDrawableGetCurrent,
) where
import Control.Monad (liftM)
import System.Glib.FFI
import System.Glib.GObject (makeNewGObject)
import Graphics.UI.Gtk.OpenGL.Types
glDrawableMakeCurrent :: GLDrawableClass self => self
-> GLContext
-> IO Bool
glDrawableMakeCurrent self glcontext =
liftM toBool $
(\(GLDrawable arg1) (GLContext arg2) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gdk_gl_drawable_make_current argPtr1 argPtr2)
(toGLDrawable self)
(toGLContext glcontext)
glDrawableIsDoubleBuffered :: GLDrawableClass self => self
-> IO Bool
glDrawableIsDoubleBuffered self =
liftM toBool $
(\(GLDrawable arg1) -> withForeignPtr arg1 $ \argPtr1 ->gdk_gl_drawable_is_double_buffered argPtr1)
(toGLDrawable self)
glDrawableSwapBuffers :: GLDrawableClass self => self -> IO ()
glDrawableSwapBuffers self =
(\(GLDrawable arg1) -> withForeignPtr arg1 $ \argPtr1 ->gdk_gl_drawable_swap_buffers argPtr1)
(toGLDrawable self)
glDrawableWaitGL :: GLDrawableClass self => self -> IO ()
glDrawableWaitGL self =
(\(GLDrawable arg1) -> withForeignPtr arg1 $ \argPtr1 ->gdk_gl_drawable_wait_gl argPtr1)
(toGLDrawable self)
glDrawableWaitGdk :: GLDrawableClass self => self -> IO ()
glDrawableWaitGdk self =
(\(GLDrawable arg1) -> withForeignPtr arg1 $ \argPtr1 ->gdk_gl_drawable_wait_gdk argPtr1)
(toGLDrawable self)
glDrawableGLBegin :: GLDrawableClass self => self
-> GLContext
-> IO Bool
glDrawableGLBegin self glcontext =
liftM toBool $
(\(GLDrawable arg1) (GLContext arg2) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gdk_gl_drawable_gl_begin argPtr1 argPtr2)
(toGLDrawable self)
(toGLContext glcontext)
glDrawableGLEnd :: GLDrawableClass self => self -> IO ()
glDrawableGLEnd self =
(\(GLDrawable arg1) -> withForeignPtr arg1 $ \argPtr1 ->gdk_gl_drawable_gl_end argPtr1)
(toGLDrawable self)
glDrawableGetGLConfig :: GLDrawableClass self => self -> IO GLConfig
glDrawableGetGLConfig self =
makeNewGObject mkGLConfig $
(\(GLDrawable arg1) -> withForeignPtr arg1 $ \argPtr1 ->gdk_gl_drawable_get_gl_config argPtr1)
(toGLDrawable self)
glDrawableGetSize :: GLDrawableClass self => self
-> IO (Int, Int)
glDrawableGetSize self =
alloca $ \widthPtr ->
alloca $ \heightPtr ->
(\(GLDrawable arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gdk_gl_drawable_get_size argPtr1 arg2 arg3)
(toGLDrawable self)
widthPtr
heightPtr
>>
peek widthPtr >>= \width ->
peek heightPtr >>= \height ->
return (fromIntegral width, fromIntegral height)
glDrawableGetCurrent ::
IO (Maybe GLDrawable)
glDrawableGetCurrent =
maybeNull (makeNewGObject mkGLDrawable) $
gdk_gl_drawable_get_current
foreign import ccall safe "gdk_gl_drawable_make_current"
gdk_gl_drawable_make_current :: ((Ptr GLDrawable) -> ((Ptr GLContext) -> (IO CInt)))
foreign import ccall safe "gdk_gl_drawable_is_double_buffered"
gdk_gl_drawable_is_double_buffered :: ((Ptr GLDrawable) -> (IO CInt))
foreign import ccall safe "gdk_gl_drawable_swap_buffers"
gdk_gl_drawable_swap_buffers :: ((Ptr GLDrawable) -> (IO ()))
foreign import ccall safe "gdk_gl_drawable_wait_gl"
gdk_gl_drawable_wait_gl :: ((Ptr GLDrawable) -> (IO ()))
foreign import ccall safe "gdk_gl_drawable_wait_gdk"
gdk_gl_drawable_wait_gdk :: ((Ptr GLDrawable) -> (IO ()))
foreign import ccall safe "gdk_gl_drawable_gl_begin"
gdk_gl_drawable_gl_begin :: ((Ptr GLDrawable) -> ((Ptr GLContext) -> (IO CInt)))
foreign import ccall safe "gdk_gl_drawable_gl_end"
gdk_gl_drawable_gl_end :: ((Ptr GLDrawable) -> (IO ()))
foreign import ccall safe "gdk_gl_drawable_get_gl_config"
gdk_gl_drawable_get_gl_config :: ((Ptr GLDrawable) -> (IO (Ptr GLConfig)))
foreign import ccall safe "gdk_gl_drawable_get_size"
gdk_gl_drawable_get_size :: ((Ptr GLDrawable) -> ((Ptr CInt) -> ((Ptr CInt) -> (IO ()))))
foreign import ccall safe "gdk_gl_drawable_get_current"
gdk_gl_drawable_get_current :: (IO (Ptr GLDrawable))