{-# LINE 2 "./Graphics/UI/Gtk/ImageView/Enums.chs" #-}
-- -*-haskell-*-
-- GIMP Toolkit (GTK) Widget ImageView
--
-- Author : Andy Stewart
--
-- Created: 19 Aug 2010
--
-- Copyright (C) 2010 Andy Stewart
--
-- 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)
--
module Graphics.UI.Gtk.ImageView.Enums (
-- * Enums
    ImageTransp (..),
    HotspotType (..),
) where

import Control.Monad (liftM)

import System.Glib.FFI
import System.Glib.Flags


{-# LINE 38 "./Graphics/UI/Gtk/ImageView/Enums.chs" #-}

data ImageTransp = ImageTranspColor
                 | ImageTranspBackground
                 | ImageTranspGrid
                 deriving (Eq,Bounded,Show,Read)
instance Enum ImageTransp where
  fromEnum ImageTranspColor = 0
  fromEnum ImageTranspBackground = 1
  fromEnum ImageTranspGrid = 2

  toEnum 0 = ImageTranspColor
  toEnum 1 = ImageTranspBackground
  toEnum 2 = ImageTranspGrid
  toEnum unmatched = error ("ImageTransp.toEnum: Cannot match " ++ show unmatched)

  succ ImageTranspColor = ImageTranspBackground
  succ ImageTranspBackground = ImageTranspGrid
  succ _ = undefined

  pred ImageTranspBackground = ImageTranspColor
  pred ImageTranspGrid = ImageTranspBackground
  pred _ = undefined

  enumFromTo x y | fromEnum x == fromEnum y = [ y ]
                 | otherwise = x : enumFromTo (succ x) y
  enumFrom x = enumFromTo x ImageTranspGrid
  enumFromThen _ _ =     error "Enum ImageTransp: enumFromThen not implemented"
  enumFromThenTo _ _ _ =     error "Enum ImageTransp: enumFromThenTo not implemented"

{-# LINE 40 "./Graphics/UI/Gtk/ImageView/Enums.chs" #-}

data HotspotType = HotspotInside
                 | HotspotResizeNorthWest
                 | HotspotResizeNorthEast
                 | HotspotResizeSouthWest
                 | HotspotResizeSouthEast
                 | HotspotResizeNorth
                 | HotspotResizeEast
                 | HotspotResizeSouth
                 | HotspotResizeWest
                 | HotspotOutside
                 | HotspotLast
                 deriving (Eq,Bounded,Show,Read)
instance Enum HotspotType where
  fromEnum HotspotInside = 0
  fromEnum HotspotResizeNorthWest = 1
  fromEnum HotspotResizeNorthEast = 2
  fromEnum HotspotResizeSouthWest = 3
  fromEnum HotspotResizeSouthEast = 4
  fromEnum HotspotResizeNorth = 5
  fromEnum HotspotResizeEast = 6
  fromEnum HotspotResizeSouth = 7
  fromEnum HotspotResizeWest = 8
  fromEnum HotspotOutside = 9
  fromEnum HotspotLast = 10

  toEnum 0 = HotspotInside
  toEnum 1 = HotspotResizeNorthWest
  toEnum 2 = HotspotResizeNorthEast
  toEnum 3 = HotspotResizeSouthWest
  toEnum 4 = HotspotResizeSouthEast
  toEnum 5 = HotspotResizeNorth
  toEnum 6 = HotspotResizeEast
  toEnum 7 = HotspotResizeSouth
  toEnum 8 = HotspotResizeWest
  toEnum 9 = HotspotOutside
  toEnum 10 = HotspotLast
  toEnum unmatched = error ("HotspotType.toEnum: Cannot match " ++ show unmatched)

  succ HotspotInside = HotspotResizeNorthWest
  succ HotspotResizeNorthWest = HotspotResizeNorthEast
  succ HotspotResizeNorthEast = HotspotResizeSouthWest
  succ HotspotResizeSouthWest = HotspotResizeSouthEast
  succ HotspotResizeSouthEast = HotspotResizeNorth
  succ HotspotResizeNorth = HotspotResizeEast
  succ HotspotResizeEast = HotspotResizeSouth
  succ HotspotResizeSouth = HotspotResizeWest
  succ HotspotResizeWest = HotspotOutside
  succ HotspotOutside = HotspotLast
  succ _ = undefined

  pred HotspotResizeNorthWest = HotspotInside
  pred HotspotResizeNorthEast = HotspotResizeNorthWest
  pred HotspotResizeSouthWest = HotspotResizeNorthEast
  pred HotspotResizeSouthEast = HotspotResizeSouthWest
  pred HotspotResizeNorth = HotspotResizeSouthEast
  pred HotspotResizeEast = HotspotResizeNorth
  pred HotspotResizeSouth = HotspotResizeEast
  pred HotspotResizeWest = HotspotResizeSouth
  pred HotspotOutside = HotspotResizeWest
  pred HotspotLast = HotspotOutside
  pred _ = undefined

  enumFromTo x y | fromEnum x == fromEnum y = [ y ]
                 | otherwise = x : enumFromTo (succ x) y
  enumFrom x = enumFromTo x HotspotLast
  enumFromThen _ _ =     error "Enum HotspotType: enumFromThen not implemented"
  enumFromThenTo _ _ _ =     error "Enum HotspotType: enumFromThenTo not implemented"

{-# LINE 42 "./Graphics/UI/Gtk/ImageView/Enums.chs" #-}