    {-# LINE 2 "./Graphics/UI/Gtk/OpenGL/Window.chs" #-}
    -- -*-haskell-*-
    -- GIMP Toolkit (GTK) OpenGL Extension: GLWindow
    --
    -- Author : Duncan Coutts
    --
    -- Created: 9 June 2005
    --
    -- Copyright (C) 2005 Duncan Coutts
    --
    -- This library is free software; you can redistribute it and/or
    -- modify it under the terms of the GNU Lesser General Public
    -- License as published by the Free Software Foundation; either
    -- version 2.1 of the License, or (at your option) any later version.
    --
    -- This library is distributed in the hope that it will be useful,
    -- but WITHOUT ANY WARRANTY; without even the implied warranty of
    -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    -- Lesser General Public License for more details.
    --
    -- |
    -- Maintainer : gtk2hs-users@lists.sourceforge.net
    -- Stability : provisional
    -- Portability : portable (depends on GHC)
    --
    -- OpenGL window which is located on-screen
    --
    module Graphics.UI.Gtk.OpenGL.Window (

    -- * Class Hierarchy
    -- |
    -- @
    -- | 'GObject'
    -- | +----'Drawable'
    -- | +----GLWindow
    -- @

    -- * Types
      GLWindow,
      GLWindowClass,
      castToGLWindow,

    -- * Constructors
      glWindowNew,

    -- * Methods
      glWindowGetWindow,
      ) where

    import Control.Monad (liftM)

    import System.Glib.FFI
    import System.Glib.GObject (makeNewGObject, wrapNewGObject)
    import Graphics.UI.Gtk.OpenGL.Types
    {-# LINE 55 "./Graphics/UI/Gtk/OpenGL/Window.chs" #-}

    {-# LINE 57 "./Graphics/UI/Gtk/OpenGL/Window.chs" #-}

    instance GLDrawableClass GLWindow

    --------------------
    -- Constructors

    -- | Creates an on-screen rendering area.
    --
    glWindowNew :: GLConfig
     -> DrawWindow -- ^ @window@ - the 'DrawWindow' to be used as the rendering
                     -- area.
     -> IO GLWindow
    glWindowNew glconfig window =
      wrapNewGObject mkGLWindow $
      (\(GLConfig arg1) (DrawWindow arg2) arg3 -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gdk_gl_window_new argPtr1 argPtr2 arg3)
    {-# LINE 72 "./Graphics/UI/Gtk/OpenGL/Window.chs" #-}
        (toGLConfig glconfig)
        window
        nullPtr

    --------------------
    -- Methods

    -- | Returns the 'DrawWindow' associated with a 'GLWindow'.
    --
    glWindowGetWindow :: GLWindow -> IO DrawWindow
    glWindowGetWindow self =
      makeNewGObject mkDrawWindow $
      (\(GLWindow arg1) -> withForeignPtr arg1 $ \argPtr1 ->gdk_gl_window_get_window argPtr1)
    {-# LINE 85 "./Graphics/UI/Gtk/OpenGL/Window.chs" #-}
        (toGLWindow self)

    foreign import ccall safe "gdk_gl_window_new"
      gdk_gl_window_new :: ((Ptr GLConfig) -> ((Ptr DrawWindow) -> ((Ptr CInt) -> (IO (Ptr GLWindow)))))

    foreign import ccall safe "gdk_gl_window_get_window"
      gdk_gl_window_get_window :: ((Ptr GLWindow) -> (IO (Ptr DrawWindow)))