-- GENERATED by C->Haskell Compiler, version 0.13.4 (gtk2hs branch) "Bin IO", 13 Nov 2004 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "./Graphics/UI/Gtk/ImageView/Types.chs" #-}
{-# OPTIONS_HADDOCK hide #-}
-- -*-haskell-*-
-- -------------------- automatically generated file - do not edit ----------
--  Object hierarchy for the GIMP Toolkit (GTK) Binding for Haskell
--
--  Author : Axel Simon
--
--  Copyright (C) 2001-2005 Axel Simon
--
--  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.
--
-- #hide

-- |
-- Maintainer  : gtk2hs-users@lists.sourceforge.net
-- Stability   : provisional
-- Portability : portable (depends on GHC)
--
-- This file reflects the Gtk+ object hierarchy in terms of Haskell classes.
--
-- Note: the mk... functions were originally meant to simply be an alias
-- for the constructor. However, in order to communicate the destructor
-- of an object to objectNew, the mk... functions are now a tuple containing
-- Haskell constructor and the destructor function pointer. This hack avoids
-- changing all modules that simply pass mk... to objectNew.
--
module Graphics.UI.Gtk.ImageView.Types (

  module Graphics.UI.GtkInternals,
  ImageToolDragger(ImageToolDragger), ImageToolDraggerClass,
  toImageToolDragger, 
  mkImageToolDragger, unImageToolDragger,
  castToImageToolDragger, gTypeImageToolDragger,
  ImageToolSelector(ImageToolSelector), ImageToolSelectorClass,
  toImageToolSelector, 
  mkImageToolSelector, unImageToolSelector,
  castToImageToolSelector, gTypeImageToolSelector,
  ImageView(ImageView), ImageViewClass,
  toImageView, 
  mkImageView, unImageView,
  castToImageView, gTypeImageView,
  AnimView(AnimView), AnimViewClass,
  toAnimView, 
  mkAnimView, unAnimView,
  castToAnimView, gTypeAnimView,
  ImageNav(ImageNav), ImageNavClass,
  toImageNav, 
  mkImageNav, unImageNav,
  castToImageNav, gTypeImageNav,
  ImageScrollWin(ImageScrollWin), ImageScrollWinClass,
  toImageScrollWin, 
  mkImageScrollWin, unImageScrollWin,
  castToImageScrollWin, gTypeImageScrollWin,
  IImageTool(IImageTool), IImageToolClass,
  toIImageTool, 
  mkIImageTool, unIImageTool,
  castToIImageTool, gTypeIImageTool
  ) where

import Foreign.ForeignPtr (ForeignPtr, castForeignPtr, unsafeForeignPtrToPtr)
import Foreign.C.Types    (CULong, CUInt)
import System.Glib.GType	(GType, typeInstanceIsA)
import Graphics.UI.GtkInternals
{-# LINE 71 "./Graphics/UI/Gtk/ImageView/Types.chs" #-}


{-# LINE 73 "./Graphics/UI/Gtk/ImageView/Types.chs" #-}

-- The usage of foreignPtrToPtr should be safe as the evaluation will only be
-- forced if the object is used afterwards
--
castTo :: (GObjectClass obj, GObjectClass obj') => GType -> String
                                                -> (obj -> obj')
castTo gtype objTypeName obj =
  case toGObject obj of
    gobj@(GObject objFPtr)
      | typeInstanceIsA ((unsafeForeignPtrToPtr.castForeignPtr) objFPtr) gtype
                  -> unsafeCastGObject gobj
      | otherwise -> error $ "Cannot cast object to " ++ objTypeName


-- *********************************************************** ImageToolDragger

newtype ImageToolDragger = ImageToolDragger (ForeignPtr (ImageToolDragger)) deriving (Eq,Ord)

mkImageToolDragger = (ImageToolDragger, objectUnrefFromMainloop)
unImageToolDragger (ImageToolDragger o) = o

class GObjectClass o => ImageToolDraggerClass o
toImageToolDragger :: ImageToolDraggerClass o => o -> ImageToolDragger
toImageToolDragger = unsafeCastGObject . toGObject

instance ImageToolDraggerClass ImageToolDragger
instance GObjectClass ImageToolDragger where
  toGObject = GObject . castForeignPtr . unImageToolDragger
  unsafeCastGObject = ImageToolDragger . castForeignPtr . unGObject

castToImageToolDragger :: GObjectClass obj => obj -> ImageToolDragger
castToImageToolDragger = castTo gTypeImageToolDragger "ImageToolDragger"

gTypeImageToolDragger :: GType
gTypeImageToolDragger =
  gtk_image_tool_dragger_get_type
{-# LINE 109 "./Graphics/UI/Gtk/ImageView/Types.chs" #-}

-- ********************************************************** ImageToolSelector

newtype ImageToolSelector = ImageToolSelector (ForeignPtr (ImageToolSelector)) deriving (Eq,Ord)

mkImageToolSelector = (ImageToolSelector, objectUnrefFromMainloop)
unImageToolSelector (ImageToolSelector o) = o

class GObjectClass o => ImageToolSelectorClass o
toImageToolSelector :: ImageToolSelectorClass o => o -> ImageToolSelector
toImageToolSelector = unsafeCastGObject . toGObject

instance ImageToolSelectorClass ImageToolSelector
instance GObjectClass ImageToolSelector where
  toGObject = GObject . castForeignPtr . unImageToolSelector
  unsafeCastGObject = ImageToolSelector . castForeignPtr . unGObject

castToImageToolSelector :: GObjectClass obj => obj -> ImageToolSelector
castToImageToolSelector = castTo gTypeImageToolSelector "ImageToolSelector"

gTypeImageToolSelector :: GType
gTypeImageToolSelector =
  gtk_image_tool_selector_get_type
{-# LINE 132 "./Graphics/UI/Gtk/ImageView/Types.chs" #-}

-- ****************************************************************** ImageView

newtype ImageView = ImageView (ForeignPtr (ImageView)) deriving (Eq,Ord)

mkImageView = (ImageView, objectUnrefFromMainloop)
unImageView (ImageView o) = o

class WidgetClass o => ImageViewClass o
toImageView :: ImageViewClass o => o -> ImageView
toImageView = unsafeCastGObject . toGObject

instance ImageViewClass ImageView
instance WidgetClass ImageView
instance ObjectClass ImageView
instance GObjectClass ImageView where
  toGObject = GObject . castForeignPtr . unImageView
  unsafeCastGObject = ImageView . castForeignPtr . unGObject

castToImageView :: GObjectClass obj => obj -> ImageView
castToImageView = castTo gTypeImageView "ImageView"

gTypeImageView :: GType
gTypeImageView =
  gtk_image_view_get_type
{-# LINE 157 "./Graphics/UI/Gtk/ImageView/Types.chs" #-}

-- ******************************************************************* AnimView

newtype AnimView = AnimView (ForeignPtr (AnimView)) deriving (Eq,Ord)

mkAnimView = (AnimView, objectUnrefFromMainloop)
unAnimView (AnimView o) = o

class ImageViewClass o => AnimViewClass o
toAnimView :: AnimViewClass o => o -> AnimView
toAnimView = unsafeCastGObject . toGObject

instance AnimViewClass AnimView
instance ImageViewClass AnimView
instance WidgetClass AnimView
instance ObjectClass AnimView
instance GObjectClass AnimView where
  toGObject = GObject . castForeignPtr . unAnimView
  unsafeCastGObject = AnimView . castForeignPtr . unGObject

castToAnimView :: GObjectClass obj => obj -> AnimView
castToAnimView = castTo gTypeAnimView "AnimView"

gTypeAnimView :: GType
gTypeAnimView =
  gtk_anim_view_get_type
{-# LINE 183 "./Graphics/UI/Gtk/ImageView/Types.chs" #-}

-- ******************************************************************* ImageNav

newtype ImageNav = ImageNav (ForeignPtr (ImageNav)) deriving (Eq,Ord)

mkImageNav = (ImageNav, objectUnrefFromMainloop)
unImageNav (ImageNav o) = o

class WindowClass o => ImageNavClass o
toImageNav :: ImageNavClass o => o -> ImageNav
toImageNav = unsafeCastGObject . toGObject

instance ImageNavClass ImageNav
instance WindowClass ImageNav
instance BinClass ImageNav
instance ContainerClass ImageNav
instance WidgetClass ImageNav
instance ObjectClass ImageNav
instance GObjectClass ImageNav where
  toGObject = GObject . castForeignPtr . unImageNav
  unsafeCastGObject = ImageNav . castForeignPtr . unGObject

castToImageNav :: GObjectClass obj => obj -> ImageNav
castToImageNav = castTo gTypeImageNav "ImageNav"

gTypeImageNav :: GType
gTypeImageNav =
  gtk_image_nav_get_type
{-# LINE 211 "./Graphics/UI/Gtk/ImageView/Types.chs" #-}

-- ************************************************************* ImageScrollWin

newtype ImageScrollWin = ImageScrollWin (ForeignPtr (ImageScrollWin)) deriving (Eq,Ord)

mkImageScrollWin = (ImageScrollWin, objectUnrefFromMainloop)
unImageScrollWin (ImageScrollWin o) = o

class TableClass o => ImageScrollWinClass o
toImageScrollWin :: ImageScrollWinClass o => o -> ImageScrollWin
toImageScrollWin = unsafeCastGObject . toGObject

instance ImageScrollWinClass ImageScrollWin
instance TableClass ImageScrollWin
instance ContainerClass ImageScrollWin
instance WidgetClass ImageScrollWin
instance ObjectClass ImageScrollWin
instance GObjectClass ImageScrollWin where
  toGObject = GObject . castForeignPtr . unImageScrollWin
  unsafeCastGObject = ImageScrollWin . castForeignPtr . unGObject

castToImageScrollWin :: GObjectClass obj => obj -> ImageScrollWin
castToImageScrollWin = castTo gTypeImageScrollWin "ImageScrollWin"

gTypeImageScrollWin :: GType
gTypeImageScrollWin =
  gtk_image_scroll_win_get_type
{-# LINE 238 "./Graphics/UI/Gtk/ImageView/Types.chs" #-}

-- ***************************************************************** IImageTool

newtype IImageTool = IImageTool (ForeignPtr (IImageTool)) deriving (Eq,Ord)

mkIImageTool = (IImageTool, objectUnrefFromMainloop)
unIImageTool (IImageTool o) = o

class GObjectClass o => IImageToolClass o
toIImageTool :: IImageToolClass o => o -> IImageTool
toIImageTool = unsafeCastGObject . toGObject

instance IImageToolClass IImageTool
instance GObjectClass IImageTool where
  toGObject = GObject . castForeignPtr . unIImageTool
  unsafeCastGObject = IImageTool . castForeignPtr . unGObject

castToIImageTool :: GObjectClass obj => obj -> IImageTool
castToIImageTool = castTo gTypeIImageTool "IImageTool"

gTypeIImageTool :: GType
gTypeIImageTool =
  gtk_iimage_tool_get_type
{-# LINE 261 "./Graphics/UI/Gtk/ImageView/Types.chs" #-}


foreign import ccall unsafe "gtk_image_tool_dragger_get_type"
  gtk_image_tool_dragger_get_type :: CUInt

foreign import ccall unsafe "gtk_image_tool_selector_get_type"
  gtk_image_tool_selector_get_type :: CUInt

foreign import ccall unsafe "gtk_image_view_get_type"
  gtk_image_view_get_type :: CUInt

foreign import ccall unsafe "gtk_anim_view_get_type"
  gtk_anim_view_get_type :: CUInt

foreign import ccall unsafe "gtk_image_nav_get_type"
  gtk_image_nav_get_type :: CUInt

foreign import ccall unsafe "gtk_image_scroll_win_get_type"
  gtk_image_scroll_win_get_type :: CUInt

foreign import ccall unsafe "gtk_iimage_tool_get_type"
  gtk_iimage_tool_get_type :: CUInt