-- GENERATED by C->Haskell Compiler, version 0.27.1 Eternal Sunshine, 29 November 2015 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}
{-# LANGUAGE CPP #-}


module Graphics.UI.FLTK.LowLevel.Fl_Enumerations
    (
     -- * Events
     Event(..),
     When(..),
     FdWhen(..),
     -- * Tree Attributes
     TreeSort(..),
     TreeConnector(..),
     TreeSelect(..),
     SearchDirection(..),
     -- * Keyboard and mouse codes
     SpecialKey(..),
     allSpecialKeys,
     allShortcutSpecialKeys,
     MouseButton(..),
     EventState(..),
     KeyboardKeyMask(..),
     MouseButtonsMask(..),
     allEventStates,
     kb_CommandState, kb_ControlState, kb_KpLast,
     -- * Widget damage types
     Damage(..),
     -- * Glut attributes
     GlutDraw(..),
     GlutMouseCodes(..),
     GlutUpDown(..),
     GlutVisibility(..),
     GlutMenuProperties(..),
     GlutEnteredLeft(..),
     GlutKeyboardCodes(..),
     GlutConstants(..),
     GlutWindowProperties(..),
     GlutCursor(..),
     glutCursorFullCrossHair,
     -- * Cursor type
     Cursor(..),
     -- * Various modes
     Mode(..),
     single,
     -- * Alignment
     Alignments(..),
     AlignType(..),
     alignCenter,
     alignTop,
     alignBottom,
     alignLeft,
     alignRight,
     alignInside,
     alignTextOverImage,
     alignClip,
     alignWrap,
     alignImageNextToText,
     alignTextNextToImage,
     alignImageBackdrop,
     alignLeftTop,
     alignRightTop,
     alignLeftBottom,
     alignRightBottom,
     alignPositionMask,
     alignImageMask,
     alignNoWrap,
     alignImageOverText,
     alignTopLeft,
     alignTopRight,
     alignBottomLeft,
     alignBottomRight,
     allAlignTypes,
     allWhen,
     -- * Box types
     Boxtype(..),
     frame,frameBox, circleBox, diamondBox,
     -- * Box functions
     defineRoundUpBox,
     defineShadowBox,
     defineRoundedBox,
     defineRflatBox,
     defineRshadowBox,
     defineDiamondBox,
     defineOvalBox,
     definePlasticUpBox,
     defineGtkUpBox,
     -- * Fonts
     Font(..),
     FontAttribute(..),
     -- ** (Un-)marshalling
     cFromFont,
     cToFont,
     cFromFontAttribute,
     cToFontAttribute,
     -- ** Font Names
     helvetica,
     helveticaBold,
     helveticaItalic,
     helveticaBoldItalic,
     courier,
     courierBold,
     courierItalic,
     courierBoldItalic,
     times,
     timesBold,
     timesItalic,
     timesBoldItalic,
     symbol,
     screen,
     screenBold,
     zapfDingbats,
     freeFont,

     -- * Colors
     Color(..),
     -- ** (Un-)marshalling
     cFromColor,
     cToColor,
     -- ** Various Color Functions
     inactive,
     contrast,
     color_average,
     lighter,
     darker,
     rgbColorWithRgb,
     rgbColorWithGrayscale,
     grayRamp,
     colorCube,
     -- ** Color Names
     foregroundColor,
     background2Color,
     inactiveColor,
     selectionColor,
     gray0Color,
     dark3Color,
     dark2Color,
     dark1Color,
     backgroundColor,
     light1Color,
     light2Color,
     light3Color,
     blackColor,
     redColor,
     greenColor,
     yellowColor,
     blueColor,
     magentaColor,
     cyanColor,
     darkRedColor,
     darkGreenColor,
     darkYellowColor,
     darkBlueColor,
     darkMagentaColor,
     darkCyanColor,
     whiteColor,
     freeColor,
     numFreeColor,
     grayRampColor,
     numGray,
     grayColor,
     colorCubeColor,
     numRed,
     numGreen,
     numBlue,
     -- * Labels
     Labeltype(..),
     symbolLabel,
     defineShadowLabel,
     defineEngravedLabel,
     defineEmbossedLabel,
     -- * Color
     RGB
    )
where
import qualified Foreign.C.Types as C2HSImp
import qualified System.IO.Unsafe as C2HSImp


import C2HS
data Event = NoEvent
           | Push
           | Release
           | Enter
           | Leave
           | Drag
           | Focus
           | Unfocus
           | Keydown
           | Keyup
           | Close
           | Move
           | Shortcut
           | Deactivate
           | Activate
           | Hide
           | Show
           | Paste
           | Selectionclear
           | Mousewheel
           | DndEnter
           | DndDrag
           | DndLeave
           | DndRelease
           | ScreenConfigurationChanged
           | Fullscreen
  deriving (Show,Eq)
instance Enum Event where
  succ NoEvent = Push
  succ Push = Release
  succ Release = Enter
  succ Enter = Leave
  succ Leave = Drag
  succ Drag = Focus
  succ Focus = Unfocus
  succ Unfocus = Keydown
  succ Keydown = Keyup
  succ Keyup = Close
  succ Close = Move
  succ Move = Shortcut
  succ Shortcut = Deactivate
  succ Deactivate = Activate
  succ Activate = Hide
  succ Hide = Show
  succ Show = Paste
  succ Paste = Selectionclear
  succ Selectionclear = Mousewheel
  succ Mousewheel = DndEnter
  succ DndEnter = DndDrag
  succ DndDrag = DndLeave
  succ DndLeave = DndRelease
  succ DndRelease = ScreenConfigurationChanged
  succ ScreenConfigurationChanged = Fullscreen
  succ Fullscreen = error "Event.succ: Fullscreen has no successor"

  pred Push = NoEvent
  pred Release = Push
  pred Enter = Release
  pred Leave = Enter
  pred Drag = Leave
  pred Focus = Drag
  pred Unfocus = Focus
  pred Keydown = Unfocus
  pred Keyup = Keydown
  pred Close = Keyup
  pred Move = Close
  pred Shortcut = Move
  pred Deactivate = Shortcut
  pred Activate = Deactivate
  pred Hide = Activate
  pred Show = Hide
  pred Paste = Show
  pred Selectionclear = Paste
  pred Mousewheel = Selectionclear
  pred DndEnter = Mousewheel
  pred DndDrag = DndEnter
  pred DndLeave = DndDrag
  pred DndRelease = DndLeave
  pred ScreenConfigurationChanged = DndRelease
  pred Fullscreen = ScreenConfigurationChanged
  pred NoEvent = error "Event.pred: NoEvent has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from Fullscreen

  fromEnum NoEvent = 0
  fromEnum Push = 1
  fromEnum Release = 2
  fromEnum Enter = 3
  fromEnum Leave = 4
  fromEnum Drag = 5
  fromEnum Focus = 6
  fromEnum Unfocus = 7
  fromEnum Keydown = 8
  fromEnum Keyup = 9
  fromEnum Close = 10
  fromEnum Move = 11
  fromEnum Shortcut = 12
  fromEnum Deactivate = 13
  fromEnum Activate = 14
  fromEnum Hide = 15
  fromEnum Show = 16
  fromEnum Paste = 17
  fromEnum Selectionclear = 18
  fromEnum Mousewheel = 19
  fromEnum DndEnter = 20
  fromEnum DndDrag = 21
  fromEnum DndLeave = 22
  fromEnum DndRelease = 23
  fromEnum ScreenConfigurationChanged = 24
  fromEnum Fullscreen = 25

  toEnum 0 = NoEvent
  toEnum 1 = Push
  toEnum 2 = Release
  toEnum 3 = Enter
  toEnum 4 = Leave
  toEnum 5 = Drag
  toEnum 6 = Focus
  toEnum 7 = Unfocus
  toEnum 8 = Keydown
  toEnum 9 = Keyup
  toEnum 10 = Close
  toEnum 11 = Move
  toEnum 12 = Shortcut
  toEnum 13 = Deactivate
  toEnum 14 = Activate
  toEnum 15 = Hide
  toEnum 16 = Show
  toEnum 17 = Paste
  toEnum 18 = Selectionclear
  toEnum 19 = Mousewheel
  toEnum 20 = DndEnter
  toEnum 21 = DndDrag
  toEnum 22 = DndLeave
  toEnum 23 = DndRelease
  toEnum 24 = ScreenConfigurationChanged
  toEnum 25 = Fullscreen
  toEnum unmatched = error ("Event.toEnum: Cannot match " ++ show unmatched)

{-# LINE 511 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data When = WhenNever
          | WhenChanged
          | WhenNotChanged
          | WhenRelease
          | WhenReleaseAlways
          | WhenEnterKey
          | WhenEnterKeyAlways
          | WhenEnterKeyChanged
  deriving (Show,Eq,Ord)
instance Enum When where
  succ WhenNever = WhenChanged
  succ WhenChanged = WhenNotChanged
  succ WhenNotChanged = WhenRelease
  succ WhenRelease = WhenReleaseAlways
  succ WhenReleaseAlways = WhenEnterKey
  succ WhenEnterKey = WhenEnterKeyAlways
  succ WhenEnterKeyAlways = WhenEnterKeyChanged
  succ WhenEnterKeyChanged = error "When.succ: WhenEnterKeyChanged has no successor"

  pred WhenChanged = WhenNever
  pred WhenNotChanged = WhenChanged
  pred WhenRelease = WhenNotChanged
  pred WhenReleaseAlways = WhenRelease
  pred WhenEnterKey = WhenReleaseAlways
  pred WhenEnterKeyAlways = WhenEnterKey
  pred WhenEnterKeyChanged = WhenEnterKeyAlways
  pred WhenNever = error "When.pred: WhenNever has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from WhenEnterKeyChanged

  fromEnum WhenNever = 0
  fromEnum WhenChanged = 1
  fromEnum WhenNotChanged = 2
  fromEnum WhenRelease = 4
  fromEnum WhenReleaseAlways = 6
  fromEnum WhenEnterKey = 8
  fromEnum WhenEnterKeyAlways = 10
  fromEnum WhenEnterKeyChanged = 11

  toEnum 0 = WhenNever
  toEnum 1 = WhenChanged
  toEnum 2 = WhenNotChanged
  toEnum 4 = WhenRelease
  toEnum 6 = WhenReleaseAlways
  toEnum 8 = WhenEnterKey
  toEnum 10 = WhenEnterKeyAlways
  toEnum 11 = WhenEnterKeyChanged
  toEnum unmatched = error ("When.toEnum: Cannot match " ++ show unmatched)

{-# LINE 512 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data FdWhen = CanRead
            | CanWrite
            | OnExcept
  deriving (Show,Eq,Ord)
instance Enum FdWhen where
  succ CanRead = CanWrite
  succ CanWrite = OnExcept
  succ OnExcept = error "FdWhen.succ: OnExcept has no successor"

  pred CanWrite = CanRead
  pred OnExcept = CanWrite
  pred CanRead = error "FdWhen.pred: CanRead has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from OnExcept

  fromEnum CanRead = 1
  fromEnum CanWrite = 4
  fromEnum OnExcept = 8

  toEnum 1 = CanRead
  toEnum 4 = CanWrite
  toEnum 8 = OnExcept
  toEnum unmatched = error ("FdWhen.toEnum: Cannot match " ++ show unmatched)

{-# LINE 513 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data TreeSort = TreeSortNone
              | TreeSortAscending
              | TreeSortDescending
  deriving (Show,Eq)
instance Enum TreeSort where
  succ TreeSortNone = TreeSortAscending
  succ TreeSortAscending = TreeSortDescending
  succ TreeSortDescending = error "TreeSort.succ: TreeSortDescending has no successor"

  pred TreeSortAscending = TreeSortNone
  pred TreeSortDescending = TreeSortAscending
  pred TreeSortNone = error "TreeSort.pred: TreeSortNone has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from TreeSortDescending

  fromEnum TreeSortNone = 0
  fromEnum TreeSortAscending = 1
  fromEnum TreeSortDescending = 2

  toEnum 0 = TreeSortNone
  toEnum 1 = TreeSortAscending
  toEnum 2 = TreeSortDescending
  toEnum unmatched = error ("TreeSort.toEnum: Cannot match " ++ show unmatched)

{-# LINE 514 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data TreeConnector = TreeConnectorNone
                   | TreeConnectorDotted
                   | TreeConnectorSolid
  deriving (Show,Eq)
instance Enum TreeConnector where
  succ TreeConnectorNone = TreeConnectorDotted
  succ TreeConnectorDotted = TreeConnectorSolid
  succ TreeConnectorSolid = error "TreeConnector.succ: TreeConnectorSolid has no successor"

  pred TreeConnectorDotted = TreeConnectorNone
  pred TreeConnectorSolid = TreeConnectorDotted
  pred TreeConnectorNone = error "TreeConnector.pred: TreeConnectorNone has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from TreeConnectorSolid

  fromEnum TreeConnectorNone = 0
  fromEnum TreeConnectorDotted = 1
  fromEnum TreeConnectorSolid = 2

  toEnum 0 = TreeConnectorNone
  toEnum 1 = TreeConnectorDotted
  toEnum 2 = TreeConnectorSolid
  toEnum unmatched = error ("TreeConnector.toEnum: Cannot match " ++ show unmatched)

{-# LINE 515 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data TreeSelect = TreeSelectNone
                | TreeSelectSingle
                | TreeSelectMulti
                | TreeSelectSingleDraggable
  deriving (Show,Eq)
instance Enum TreeSelect where
  succ TreeSelectNone = TreeSelectSingle
  succ TreeSelectSingle = TreeSelectMulti
  succ TreeSelectMulti = TreeSelectSingleDraggable
  succ TreeSelectSingleDraggable = error "TreeSelect.succ: TreeSelectSingleDraggable has no successor"

  pred TreeSelectSingle = TreeSelectNone
  pred TreeSelectMulti = TreeSelectSingle
  pred TreeSelectSingleDraggable = TreeSelectMulti
  pred TreeSelectNone = error "TreeSelect.pred: TreeSelectNone has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from TreeSelectSingleDraggable

  fromEnum TreeSelectNone = 0
  fromEnum TreeSelectSingle = 1
  fromEnum TreeSelectMulti = 2
  fromEnum TreeSelectSingleDraggable = 3

  toEnum 0 = TreeSelectNone
  toEnum 1 = TreeSelectSingle
  toEnum 2 = TreeSelectMulti
  toEnum 3 = TreeSelectSingleDraggable
  toEnum unmatched = error ("TreeSelect.toEnum: Cannot match " ++ show unmatched)

{-# LINE 516 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data SearchDirection = SearchDirectionUp
                     | SearchDirectionDown
  deriving (Show,Eq)
instance Enum SearchDirection where
  succ SearchDirectionUp = SearchDirectionDown
  succ SearchDirectionDown = error "SearchDirection.succ: SearchDirectionDown has no successor"

  pred SearchDirectionDown = SearchDirectionUp
  pred SearchDirectionUp = error "SearchDirection.pred: SearchDirectionUp has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from SearchDirectionDown

  fromEnum SearchDirectionUp = 65362
  fromEnum SearchDirectionDown = 65364

  toEnum 65362 = SearchDirectionUp
  toEnum 65364 = SearchDirectionDown
  toEnum unmatched = error ("SearchDirection.toEnum: Cannot match " ++ show unmatched)

{-# LINE 521 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data SpecialKey = Kb_VolumeDown
                | Kb_VolumeMute
                | Kb_VolumeUp
                | Kb_MediaPlay
                | Kb_MediaStop
                | Kb_MediaPrev
                | Kb_MediaNext
                | Kb_HomePage
                | Kb_Mail
                | Kb_Search
                | Kb_Back
                | Kb_Forward
                | Kb_Stop
                | Kb_Refresh
                | Kb_Sleep
                | Kb_Favorites
                | Button
                | Kb_Backspace
                | Kb_Tab
                | Kb_Clear
                | Kb_IsoKey
                | Kb_Enter
                | Kb_Pause
                | Kb_Escape
                | Kb_Kana
                | Kb_Eisu
                | Kb_Yen
                | Kb_JisUnderscore
                | Kb_Home
                | Kb_Left
                | Kb_Up
                | Kb_Right
                | Kb_Down
                | Kb_PageUp
                | Kb_PageDown
                | Kb_End
                | Kb_Print
                | Kb_Insert
                | Kb_Menu
                | Kb_Help
                | Kb_Kp
                | Kb_KpEnter
                | Kb_F
                | Kb_Flast
                | Kb_ShiftL
                | Kb_ShiftR
                | Kb_ControlL
                | Kb_ControlR
                | Kb_CapsLock
                | Kb_MetaL
                | Kb_MetaR
                | Kb_AltL
                | Kb_AltR
                | Kb_Delete
  deriving (Show,Eq)
instance Enum SpecialKey where
  succ Kb_VolumeDown = Kb_VolumeMute
  succ Kb_VolumeMute = Kb_VolumeUp
  succ Kb_VolumeUp = Kb_MediaPlay
  succ Kb_MediaPlay = Kb_MediaStop
  succ Kb_MediaStop = Kb_MediaPrev
  succ Kb_MediaPrev = Kb_MediaNext
  succ Kb_MediaNext = Kb_HomePage
  succ Kb_HomePage = Kb_Mail
  succ Kb_Mail = Kb_Search
  succ Kb_Search = Kb_Back
  succ Kb_Back = Kb_Forward
  succ Kb_Forward = Kb_Stop
  succ Kb_Stop = Kb_Refresh
  succ Kb_Refresh = Kb_Sleep
  succ Kb_Sleep = Kb_Favorites
  succ Kb_Favorites = Button
  succ Button = Kb_Backspace
  succ Kb_Backspace = Kb_Tab
  succ Kb_Tab = Kb_Clear
  succ Kb_Clear = Kb_IsoKey
  succ Kb_IsoKey = Kb_Enter
  succ Kb_Enter = Kb_Pause
  succ Kb_Pause = Kb_Escape
  succ Kb_Escape = Kb_Kana
  succ Kb_Kana = Kb_Eisu
  succ Kb_Eisu = Kb_Yen
  succ Kb_Yen = Kb_JisUnderscore
  succ Kb_JisUnderscore = Kb_Home
  succ Kb_Home = Kb_Left
  succ Kb_Left = Kb_Up
  succ Kb_Up = Kb_Right
  succ Kb_Right = Kb_Down
  succ Kb_Down = Kb_PageUp
  succ Kb_PageUp = Kb_PageDown
  succ Kb_PageDown = Kb_End
  succ Kb_End = Kb_Print
  succ Kb_Print = Kb_Insert
  succ Kb_Insert = Kb_Menu
  succ Kb_Menu = Kb_Help
  succ Kb_Help = Kb_Kp
  succ Kb_Kp = Kb_KpEnter
  succ Kb_KpEnter = Kb_F
  succ Kb_F = Kb_Flast
  succ Kb_Flast = Kb_ShiftL
  succ Kb_ShiftL = Kb_ShiftR
  succ Kb_ShiftR = Kb_ControlL
  succ Kb_ControlL = Kb_ControlR
  succ Kb_ControlR = Kb_CapsLock
  succ Kb_CapsLock = Kb_MetaL
  succ Kb_MetaL = Kb_MetaR
  succ Kb_MetaR = Kb_AltL
  succ Kb_AltL = Kb_AltR
  succ Kb_AltR = Kb_Delete
  succ Kb_Delete = error "SpecialKey.succ: Kb_Delete has no successor"

  pred Kb_VolumeMute = Kb_VolumeDown
  pred Kb_VolumeUp = Kb_VolumeMute
  pred Kb_MediaPlay = Kb_VolumeUp
  pred Kb_MediaStop = Kb_MediaPlay
  pred Kb_MediaPrev = Kb_MediaStop
  pred Kb_MediaNext = Kb_MediaPrev
  pred Kb_HomePage = Kb_MediaNext
  pred Kb_Mail = Kb_HomePage
  pred Kb_Search = Kb_Mail
  pred Kb_Back = Kb_Search
  pred Kb_Forward = Kb_Back
  pred Kb_Stop = Kb_Forward
  pred Kb_Refresh = Kb_Stop
  pred Kb_Sleep = Kb_Refresh
  pred Kb_Favorites = Kb_Sleep
  pred Button = Kb_Favorites
  pred Kb_Backspace = Button
  pred Kb_Tab = Kb_Backspace
  pred Kb_Clear = Kb_Tab
  pred Kb_IsoKey = Kb_Clear
  pred Kb_Enter = Kb_IsoKey
  pred Kb_Pause = Kb_Enter
  pred Kb_Escape = Kb_Pause
  pred Kb_Kana = Kb_Escape
  pred Kb_Eisu = Kb_Kana
  pred Kb_Yen = Kb_Eisu
  pred Kb_JisUnderscore = Kb_Yen
  pred Kb_Home = Kb_JisUnderscore
  pred Kb_Left = Kb_Home
  pred Kb_Up = Kb_Left
  pred Kb_Right = Kb_Up
  pred Kb_Down = Kb_Right
  pred Kb_PageUp = Kb_Down
  pred Kb_PageDown = Kb_PageUp
  pred Kb_End = Kb_PageDown
  pred Kb_Print = Kb_End
  pred Kb_Insert = Kb_Print
  pred Kb_Menu = Kb_Insert
  pred Kb_Help = Kb_Menu
  pred Kb_Kp = Kb_Help
  pred Kb_KpEnter = Kb_Kp
  pred Kb_F = Kb_KpEnter
  pred Kb_Flast = Kb_F
  pred Kb_ShiftL = Kb_Flast
  pred Kb_ShiftR = Kb_ShiftL
  pred Kb_ControlL = Kb_ShiftR
  pred Kb_ControlR = Kb_ControlL
  pred Kb_CapsLock = Kb_ControlR
  pred Kb_MetaL = Kb_CapsLock
  pred Kb_MetaR = Kb_MetaL
  pred Kb_AltL = Kb_MetaR
  pred Kb_AltR = Kb_AltL
  pred Kb_Delete = Kb_AltR
  pred Kb_VolumeDown = error "SpecialKey.pred: Kb_VolumeDown has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from Kb_Delete

  fromEnum Kb_VolumeDown = 61201
  fromEnum Kb_VolumeMute = 61202
  fromEnum Kb_VolumeUp = 61203
  fromEnum Kb_MediaPlay = 61204
  fromEnum Kb_MediaStop = 61205
  fromEnum Kb_MediaPrev = 61206
  fromEnum Kb_MediaNext = 61207
  fromEnum Kb_HomePage = 61208
  fromEnum Kb_Mail = 61209
  fromEnum Kb_Search = 61211
  fromEnum Kb_Back = 61222
  fromEnum Kb_Forward = 61223
  fromEnum Kb_Stop = 61224
  fromEnum Kb_Refresh = 61225
  fromEnum Kb_Sleep = 61231
  fromEnum Kb_Favorites = 61232
  fromEnum Button = 65256
  fromEnum Kb_Backspace = 65288
  fromEnum Kb_Tab = 65289
  fromEnum Kb_Clear = 65291
  fromEnum Kb_IsoKey = 65292
  fromEnum Kb_Enter = 65293
  fromEnum Kb_Pause = 65299
  fromEnum Kb_Escape = 65307
  fromEnum Kb_Kana = 65326
  fromEnum Kb_Eisu = 65327
  fromEnum Kb_Yen = 65328
  fromEnum Kb_JisUnderscore = 65329
  fromEnum Kb_Home = 65360
  fromEnum Kb_Left = 65361
  fromEnum Kb_Up = 65362
  fromEnum Kb_Right = 65363
  fromEnum Kb_Down = 65364
  fromEnum Kb_PageUp = 65365
  fromEnum Kb_PageDown = 65366
  fromEnum Kb_End = 65367
  fromEnum Kb_Print = 65377
  fromEnum Kb_Insert = 65379
  fromEnum Kb_Menu = 65383
  fromEnum Kb_Help = 65384
  fromEnum Kb_Kp = 65408
  fromEnum Kb_KpEnter = 65421
  fromEnum Kb_F = 65469
  fromEnum Kb_Flast = 65504
  fromEnum Kb_ShiftL = 65505
  fromEnum Kb_ShiftR = 65506
  fromEnum Kb_ControlL = 65507
  fromEnum Kb_ControlR = 65508
  fromEnum Kb_CapsLock = 65509
  fromEnum Kb_MetaL = 65511
  fromEnum Kb_MetaR = 65512
  fromEnum Kb_AltL = 65513
  fromEnum Kb_AltR = 65514
  fromEnum Kb_Delete = 65535

  toEnum 61201 = Kb_VolumeDown
  toEnum 61202 = Kb_VolumeMute
  toEnum 61203 = Kb_VolumeUp
  toEnum 61204 = Kb_MediaPlay
  toEnum 61205 = Kb_MediaStop
  toEnum 61206 = Kb_MediaPrev
  toEnum 61207 = Kb_MediaNext
  toEnum 61208 = Kb_HomePage
  toEnum 61209 = Kb_Mail
  toEnum 61211 = Kb_Search
  toEnum 61222 = Kb_Back
  toEnum 61223 = Kb_Forward
  toEnum 61224 = Kb_Stop
  toEnum 61225 = Kb_Refresh
  toEnum 61231 = Kb_Sleep
  toEnum 61232 = Kb_Favorites
  toEnum 65256 = Button
  toEnum 65288 = Kb_Backspace
  toEnum 65289 = Kb_Tab
  toEnum 65291 = Kb_Clear
  toEnum 65292 = Kb_IsoKey
  toEnum 65293 = Kb_Enter
  toEnum 65299 = Kb_Pause
  toEnum 65307 = Kb_Escape
  toEnum 65326 = Kb_Kana
  toEnum 65327 = Kb_Eisu
  toEnum 65328 = Kb_Yen
  toEnum 65329 = Kb_JisUnderscore
  toEnum 65360 = Kb_Home
  toEnum 65361 = Kb_Left
  toEnum 65362 = Kb_Up
  toEnum 65363 = Kb_Right
  toEnum 65364 = Kb_Down
  toEnum 65365 = Kb_PageUp
  toEnum 65366 = Kb_PageDown
  toEnum 65367 = Kb_End
  toEnum 65377 = Kb_Print
  toEnum 65379 = Kb_Insert
  toEnum 65383 = Kb_Menu
  toEnum 65384 = Kb_Help
  toEnum 65408 = Kb_Kp
  toEnum 65421 = Kb_KpEnter
  toEnum 65469 = Kb_F
  toEnum 65504 = Kb_Flast
  toEnum 65505 = Kb_ShiftL
  toEnum 65506 = Kb_ShiftR
  toEnum 65507 = Kb_ControlL
  toEnum 65508 = Kb_ControlR
  toEnum 65509 = Kb_CapsLock
  toEnum 65511 = Kb_MetaL
  toEnum 65512 = Kb_MetaR
  toEnum 65513 = Kb_AltL
  toEnum 65514 = Kb_AltR
  toEnum 65535 = Kb_Delete
  toEnum unmatched = error ("SpecialKey.toEnum: Cannot match " ++ show unmatched)

{-# LINE 522 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}


allShortcutSpecialKeys :: [CInt]
allShortcutSpecialKeys = [
  fromIntegral $ fromEnum (Kb_Backspace),
  fromIntegral $ fromEnum (Kb_Tab),
  fromIntegral $ fromEnum (Kb_Clear),
  fromIntegral $ fromEnum (Kb_Enter),
  fromIntegral $ fromEnum (Kb_Pause),
  fromIntegral $ fromEnum (Kb_ScrollLockState),
  fromIntegral $ fromEnum (Kb_Escape),
  fromIntegral $ fromEnum (Kb_Home),
  fromIntegral $ fromEnum (Kb_Left),
  fromIntegral $ fromEnum (Kb_Up),
  fromIntegral $ fromEnum (Kb_Right),
  fromIntegral $ fromEnum (Kb_Down),
  fromIntegral $ fromEnum (Kb_PageUp),
  fromIntegral $ fromEnum (Kb_PageDown),
  fromIntegral $ fromEnum (Kb_End),
  fromIntegral $ fromEnum (Kb_Print),
  fromIntegral $ fromEnum (Kb_Insert),
  fromIntegral $ fromEnum (Kb_Menu),
  fromIntegral $ fromEnum (Kb_NumLockState),
  fromIntegral $ fromEnum (Kb_KpEnter),
  fromIntegral $ fromEnum (Kb_ShiftL),
  fromIntegral $ fromEnum (Kb_ShiftR),
  fromIntegral $ fromEnum (Kb_ControlL),
  fromIntegral $ fromEnum (Kb_ControlR),
  fromIntegral $ fromEnum (Kb_CapsLock),
  fromIntegral $ fromEnum (Kb_MetaL),
  fromIntegral $ fromEnum (Kb_MetaR),
  fromIntegral $ fromEnum (Kb_AltL),
  fromIntegral $ fromEnum (Kb_AltR),
  fromIntegral $ fromEnum (Kb_Delete)
  ]

allSpecialKeys :: [SpecialKey]
allSpecialKeys = [
    Button,
    Kb_Backspace,
    Kb_Clear,
    Kb_Tab,
    Kb_IsoKey,
    Kb_Enter,
    Kb_Pause,
    Kb_Escape,
    Kb_Kana,
    Kb_Eisu,
    Kb_Yen,
    Kb_JisUnderscore,
    Kb_Home,
    Kb_Left,
    Kb_Up,
    Kb_Right,
    Kb_Down,
    Kb_PageUp,
    Kb_PageDown,
    Kb_End,
    Kb_Print,
    Kb_Insert,
    Kb_Menu,
    Kb_Help,
    Kb_Kp,
    Kb_KpEnter,
    Kb_F,
    Kb_Flast,
    Kb_ShiftL,
    Kb_ShiftR,
    Kb_ControlL,
    Kb_ControlR,
    Kb_CapsLock,
    Kb_MetaL,
    Kb_MetaR,
    Kb_AltL,
    Kb_AltR,
    Kb_Delete,
    Kb_VolumeDown,
    Kb_VolumeMute,
    Kb_VolumeUp,
    Kb_MediaPlay,
    Kb_MediaStop,
    Kb_MediaPrev,
    Kb_MediaNext,
    Kb_HomePage,
    Kb_Mail,
    Kb_Search,
    Kb_Back,
    Kb_Forward,
    Kb_Stop,
    Kb_Refresh,
    Kb_Sleep,
    Kb_Favorites
  ]

data MouseButton = Mouse_Left
                 | Mouse_Middle
                 | Mouse_Right
  deriving (Show,Eq)
instance Enum MouseButton where
  succ Mouse_Left = Mouse_Middle
  succ Mouse_Middle = Mouse_Right
  succ Mouse_Right = error "MouseButton.succ: Mouse_Right has no successor"

  pred Mouse_Middle = Mouse_Left
  pred Mouse_Right = Mouse_Middle
  pred Mouse_Left = error "MouseButton.pred: Mouse_Left has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from Mouse_Right

  fromEnum Mouse_Left = 1
  fromEnum Mouse_Middle = 2
  fromEnum Mouse_Right = 3

  toEnum 1 = Mouse_Left
  toEnum 2 = Mouse_Middle
  toEnum 3 = Mouse_Right
  toEnum unmatched = error ("MouseButton.toEnum: Cannot match " ++ show unmatched)

{-# LINE 616 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data EventState = Kb_ShiftState
                | Kb_CapsLockState
                | Kb_CtrlState
                | Kb_AltState
                | Kb_NumLockState
                | Kb_MetaState
                | Kb_ScrollLockState
                | Mouse_Button1State
                | Mouse_Button2State
                | Mouse_Button3State
  deriving (Show,Eq,Ord)
instance Enum EventState where
  succ Kb_ShiftState = Kb_CapsLockState
  succ Kb_CapsLockState = Kb_CtrlState
  succ Kb_CtrlState = Kb_AltState
  succ Kb_AltState = Kb_NumLockState
  succ Kb_NumLockState = Kb_MetaState
  succ Kb_MetaState = Kb_ScrollLockState
  succ Kb_ScrollLockState = Mouse_Button1State
  succ Mouse_Button1State = Mouse_Button2State
  succ Mouse_Button2State = Mouse_Button3State
  succ Mouse_Button3State = error "EventState.succ: Mouse_Button3State has no successor"

  pred Kb_CapsLockState = Kb_ShiftState
  pred Kb_CtrlState = Kb_CapsLockState
  pred Kb_AltState = Kb_CtrlState
  pred Kb_NumLockState = Kb_AltState
  pred Kb_MetaState = Kb_NumLockState
  pred Kb_ScrollLockState = Kb_MetaState
  pred Mouse_Button1State = Kb_ScrollLockState
  pred Mouse_Button2State = Mouse_Button1State
  pred Mouse_Button3State = Mouse_Button2State
  pred Kb_ShiftState = error "EventState.pred: Kb_ShiftState has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from Mouse_Button3State

  fromEnum Kb_ShiftState = 65536
  fromEnum Kb_CapsLockState = 131072
  fromEnum Kb_CtrlState = 262144
  fromEnum Kb_AltState = 524288
  fromEnum Kb_NumLockState = 1048576
  fromEnum Kb_MetaState = 4194304
  fromEnum Kb_ScrollLockState = 8388608
  fromEnum Mouse_Button1State = 16777216
  fromEnum Mouse_Button2State = 33554432
  fromEnum Mouse_Button3State = 67108864

  toEnum 65536 = Kb_ShiftState
  toEnum 131072 = Kb_CapsLockState
  toEnum 262144 = Kb_CtrlState
  toEnum 524288 = Kb_AltState
  toEnum 1048576 = Kb_NumLockState
  toEnum 4194304 = Kb_MetaState
  toEnum 8388608 = Kb_ScrollLockState
  toEnum 16777216 = Mouse_Button1State
  toEnum 33554432 = Mouse_Button2State
  toEnum 67108864 = Mouse_Button3State
  toEnum unmatched = error ("EventState.toEnum: Cannot match " ++ show unmatched)

{-# LINE 617 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data KeyboardKeyMask = Kb_KeyMask
  deriving (Show,Eq,Ord)
instance Enum KeyboardKeyMask where
  succ Kb_KeyMask = error "KeyboardKeyMask.succ: Kb_KeyMask has no successor"

  pred Kb_KeyMask = error "KeyboardKeyMask.pred: Kb_KeyMask has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from Kb_KeyMask

  fromEnum Kb_KeyMask = 65535

  toEnum 65535 = Kb_KeyMask
  toEnum unmatched = error ("KeyboardKeyMask.toEnum: Cannot match " ++ show unmatched)

{-# LINE 618 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data MouseButtonsMask = Mouse_ButtonsMask
  deriving (Show,Eq,Ord)
instance Enum MouseButtonsMask where
  succ Mouse_ButtonsMask = error "MouseButtonsMask.succ: Mouse_ButtonsMask has no successor"

  pred Mouse_ButtonsMask = error "MouseButtonsMask.pred: Mouse_ButtonsMask has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from Mouse_ButtonsMask

  fromEnum Mouse_ButtonsMask = 2130706432

  toEnum 2130706432 = Mouse_ButtonsMask
  toEnum unmatched = error ("MouseButtonsMask.toEnum: Cannot match " ++ show unmatched)

{-# LINE 619 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

kb_CommandState, kb_ControlState :: EventState
kb_CommandState = Kb_CtrlState
kb_ControlState = Kb_MetaState
kb_KpLast :: SpecialKey
kb_KpLast = Kb_F
data Damage = DamageChild
            | DamageExpose
            | DamageScroll
            | DamageOverlay
            | DamageUser1
            | DamageUser2
            | DamageAll
  deriving (Show)
instance Enum Damage where
  succ DamageChild = DamageExpose
  succ DamageExpose = DamageScroll
  succ DamageScroll = DamageOverlay
  succ DamageOverlay = DamageUser1
  succ DamageUser1 = DamageUser2
  succ DamageUser2 = DamageAll
  succ DamageAll = error "Damage.succ: DamageAll has no successor"

  pred DamageExpose = DamageChild
  pred DamageScroll = DamageExpose
  pred DamageOverlay = DamageScroll
  pred DamageUser1 = DamageOverlay
  pred DamageUser2 = DamageUser1
  pred DamageAll = DamageUser2
  pred DamageChild = error "Damage.pred: DamageChild has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from DamageAll

  fromEnum DamageChild = 1
  fromEnum DamageExpose = 2
  fromEnum DamageScroll = 4
  fromEnum DamageOverlay = 8
  fromEnum DamageUser1 = 16
  fromEnum DamageUser2 = 32
  fromEnum DamageAll = 128

  toEnum 1 = DamageChild
  toEnum 2 = DamageExpose
  toEnum 4 = DamageScroll
  toEnum 8 = DamageOverlay
  toEnum 16 = DamageUser1
  toEnum 32 = DamageUser2
  toEnum 128 = DamageAll
  toEnum unmatched = error ("Damage.toEnum: Cannot match " ++ show unmatched)

{-# LINE 630 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data GlutDraw = GlutNormal
              | GlutOverlay
  deriving (Show)
instance Enum GlutDraw where
  succ GlutNormal = GlutOverlay
  succ GlutOverlay = error "GlutDraw.succ: GlutOverlay has no successor"

  pred GlutOverlay = GlutNormal
  pred GlutNormal = error "GlutDraw.pred: GlutNormal has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from GlutOverlay

  fromEnum GlutNormal = 0
  fromEnum GlutOverlay = 1

  toEnum 0 = GlutNormal
  toEnum 1 = GlutOverlay
  toEnum unmatched = error ("GlutDraw.toEnum: Cannot match " ++ show unmatched)

{-# LINE 631 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data GlutMouseCodes = GlutLeftButton
                    | GlutMiddleButton
                    | GlutRightButton
  deriving (Show)
instance Enum GlutMouseCodes where
  succ GlutLeftButton = GlutMiddleButton
  succ GlutMiddleButton = GlutRightButton
  succ GlutRightButton = error "GlutMouseCodes.succ: GlutRightButton has no successor"

  pred GlutMiddleButton = GlutLeftButton
  pred GlutRightButton = GlutMiddleButton
  pred GlutLeftButton = error "GlutMouseCodes.pred: GlutLeftButton has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from GlutRightButton

  fromEnum GlutLeftButton = 0
  fromEnum GlutMiddleButton = 1
  fromEnum GlutRightButton = 2

  toEnum 0 = GlutLeftButton
  toEnum 1 = GlutMiddleButton
  toEnum 2 = GlutRightButton
  toEnum unmatched = error ("GlutMouseCodes.toEnum: Cannot match " ++ show unmatched)

{-# LINE 632 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data GlutUpDown = GlutDown
                | GlutUp
  deriving (Show)
instance Enum GlutUpDown where
  succ GlutDown = GlutUp
  succ GlutUp = error "GlutUpDown.succ: GlutUp has no successor"

  pred GlutUp = GlutDown
  pred GlutDown = error "GlutUpDown.pred: GlutDown has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from GlutUp

  fromEnum GlutDown = 0
  fromEnum GlutUp = 1

  toEnum 0 = GlutDown
  toEnum 1 = GlutUp
  toEnum unmatched = error ("GlutUpDown.toEnum: Cannot match " ++ show unmatched)

{-# LINE 633 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data GlutVisibility = GlutNotVisible
                    | GlutVisible
  deriving (Show)
instance Enum GlutVisibility where
  succ GlutNotVisible = GlutVisible
  succ GlutVisible = error "GlutVisibility.succ: GlutVisible has no successor"

  pred GlutVisible = GlutNotVisible
  pred GlutNotVisible = error "GlutVisibility.pred: GlutNotVisible has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from GlutVisible

  fromEnum GlutNotVisible = 0
  fromEnum GlutVisible = 1

  toEnum 0 = GlutNotVisible
  toEnum 1 = GlutVisible
  toEnum unmatched = error ("GlutVisibility.toEnum: Cannot match " ++ show unmatched)

{-# LINE 634 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data GlutMenuProperties = GlutMenuNotInUse
                        | GlutMenuInUse
                        | GlutMenuNumItems
  deriving (Show)
instance Enum GlutMenuProperties where
  succ GlutMenuNotInUse = GlutMenuInUse
  succ GlutMenuInUse = GlutMenuNumItems
  succ GlutMenuNumItems = error "GlutMenuProperties.succ: GlutMenuNumItems has no successor"

  pred GlutMenuInUse = GlutMenuNotInUse
  pred GlutMenuNumItems = GlutMenuInUse
  pred GlutMenuNotInUse = error "GlutMenuProperties.pred: GlutMenuNotInUse has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from GlutMenuNumItems

  fromEnum GlutMenuNotInUse = 0
  fromEnum GlutMenuInUse = 1
  fromEnum GlutMenuNumItems = 8

  toEnum 0 = GlutMenuNotInUse
  toEnum 1 = GlutMenuInUse
  toEnum 8 = GlutMenuNumItems
  toEnum unmatched = error ("GlutMenuProperties.toEnum: Cannot match " ++ show unmatched)

{-# LINE 635 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data GlutEnteredLeft = GlutLeft
                     | GlutEntered
  deriving (Show)
instance Enum GlutEnteredLeft where
  succ GlutLeft = GlutEntered
  succ GlutEntered = error "GlutEnteredLeft.succ: GlutEntered has no successor"

  pred GlutEntered = GlutLeft
  pred GlutLeft = error "GlutEnteredLeft.pred: GlutLeft has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from GlutEntered

  fromEnum GlutLeft = 0
  fromEnum GlutEntered = 1

  toEnum 0 = GlutLeft
  toEnum 1 = GlutEntered
  toEnum unmatched = error ("GlutEnteredLeft.toEnum: Cannot match " ++ show unmatched)

{-# LINE 636 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data GlutKeyboardCodes = GlutKeyF1
                       | GlutKeyF2
                       | GlutKeyF3
                       | GlutKeyF4
                       | GlutKeyF5
                       | GlutKeyF6
                       | GlutKeyF7
                       | GlutKeyF8
                       | GlutKeyF9
                       | GlutKeyF10
                       | GlutKeyF11
                       | GlutKeyF12
                       | GlutKeyHome
                       | GlutKeyLeft
                       | GlutKeyUp
                       | GlutKeyRight
                       | GlutKeyDown
                       | GlutKeyPageUp
                       | GlutKeyPageDown
                       | GlutKeyEnd
                       | GlutKeyInsert
                       | GlutActiveShift
                       | GlutActiveCtrl
                       | GlutActiveAlt
  deriving (Show)
instance Enum GlutKeyboardCodes where
  succ GlutKeyF1 = GlutKeyF2
  succ GlutKeyF2 = GlutKeyF3
  succ GlutKeyF3 = GlutKeyF4
  succ GlutKeyF4 = GlutKeyF5
  succ GlutKeyF5 = GlutKeyF6
  succ GlutKeyF6 = GlutKeyF7
  succ GlutKeyF7 = GlutKeyF8
  succ GlutKeyF8 = GlutKeyF9
  succ GlutKeyF9 = GlutKeyF10
  succ GlutKeyF10 = GlutKeyF11
  succ GlutKeyF11 = GlutKeyF12
  succ GlutKeyF12 = GlutKeyHome
  succ GlutKeyHome = GlutKeyLeft
  succ GlutKeyLeft = GlutKeyUp
  succ GlutKeyUp = GlutKeyRight
  succ GlutKeyRight = GlutKeyDown
  succ GlutKeyDown = GlutKeyPageUp
  succ GlutKeyPageUp = GlutKeyPageDown
  succ GlutKeyPageDown = GlutKeyEnd
  succ GlutKeyEnd = GlutKeyInsert
  succ GlutKeyInsert = GlutActiveShift
  succ GlutActiveShift = GlutActiveCtrl
  succ GlutActiveCtrl = GlutActiveAlt
  succ GlutActiveAlt = error "GlutKeyboardCodes.succ: GlutActiveAlt has no successor"

  pred GlutKeyF2 = GlutKeyF1
  pred GlutKeyF3 = GlutKeyF2
  pred GlutKeyF4 = GlutKeyF3
  pred GlutKeyF5 = GlutKeyF4
  pred GlutKeyF6 = GlutKeyF5
  pred GlutKeyF7 = GlutKeyF6
  pred GlutKeyF8 = GlutKeyF7
  pred GlutKeyF9 = GlutKeyF8
  pred GlutKeyF10 = GlutKeyF9
  pred GlutKeyF11 = GlutKeyF10
  pred GlutKeyF12 = GlutKeyF11
  pred GlutKeyHome = GlutKeyF12
  pred GlutKeyLeft = GlutKeyHome
  pred GlutKeyUp = GlutKeyLeft
  pred GlutKeyRight = GlutKeyUp
  pred GlutKeyDown = GlutKeyRight
  pred GlutKeyPageUp = GlutKeyDown
  pred GlutKeyPageDown = GlutKeyPageUp
  pred GlutKeyEnd = GlutKeyPageDown
  pred GlutKeyInsert = GlutKeyEnd
  pred GlutActiveShift = GlutKeyInsert
  pred GlutActiveCtrl = GlutActiveShift
  pred GlutActiveAlt = GlutActiveCtrl
  pred GlutKeyF1 = error "GlutKeyboardCodes.pred: GlutKeyF1 has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from GlutActiveAlt

  fromEnum GlutKeyF1 = 1
  fromEnum GlutKeyF2 = 2
  fromEnum GlutKeyF3 = 3
  fromEnum GlutKeyF4 = 4
  fromEnum GlutKeyF5 = 5
  fromEnum GlutKeyF6 = 6
  fromEnum GlutKeyF7 = 7
  fromEnum GlutKeyF8 = 8
  fromEnum GlutKeyF9 = 9
  fromEnum GlutKeyF10 = 10
  fromEnum GlutKeyF11 = 11
  fromEnum GlutKeyF12 = 12
  fromEnum GlutKeyHome = 65360
  fromEnum GlutKeyLeft = 65361
  fromEnum GlutKeyUp = 65362
  fromEnum GlutKeyRight = 65363
  fromEnum GlutKeyDown = 65364
  fromEnum GlutKeyPageUp = 65365
  fromEnum GlutKeyPageDown = 65366
  fromEnum GlutKeyEnd = 65367
  fromEnum GlutKeyInsert = 65379
  fromEnum GlutActiveShift = 65536
  fromEnum GlutActiveCtrl = 262144
  fromEnum GlutActiveAlt = 524288

  toEnum 1 = GlutKeyF1
  toEnum 2 = GlutKeyF2
  toEnum 3 = GlutKeyF3
  toEnum 4 = GlutKeyF4
  toEnum 5 = GlutKeyF5
  toEnum 6 = GlutKeyF6
  toEnum 7 = GlutKeyF7
  toEnum 8 = GlutKeyF8
  toEnum 9 = GlutKeyF9
  toEnum 10 = GlutKeyF10
  toEnum 11 = GlutKeyF11
  toEnum 12 = GlutKeyF12
  toEnum 65360 = GlutKeyHome
  toEnum 65361 = GlutKeyLeft
  toEnum 65362 = GlutKeyUp
  toEnum 65363 = GlutKeyRight
  toEnum 65364 = GlutKeyDown
  toEnum 65365 = GlutKeyPageUp
  toEnum 65366 = GlutKeyPageDown
  toEnum 65367 = GlutKeyEnd
  toEnum 65379 = GlutKeyInsert
  toEnum 65536 = GlutActiveShift
  toEnum 262144 = GlutActiveCtrl
  toEnum 524288 = GlutActiveAlt
  toEnum unmatched = error ("GlutKeyboardCodes.toEnum: Cannot match " ++ show unmatched)

{-# LINE 637 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data GlutConstants = GlutReturnZero
                   | GlutDisplayModePossible
                   | GlutVersion
                   | GlutOverlayPossible
                   | GlutTransparentIndex
                   | GlutNormalDamaged
                   | GlutOverlayDamaged
  deriving (Show)
instance Enum GlutConstants where
  succ GlutReturnZero = GlutDisplayModePossible
  succ GlutDisplayModePossible = GlutVersion
  succ GlutVersion = GlutOverlayPossible
  succ GlutOverlayPossible = GlutTransparentIndex
  succ GlutTransparentIndex = GlutNormalDamaged
  succ GlutNormalDamaged = GlutOverlayDamaged
  succ GlutOverlayDamaged = error "GlutConstants.succ: GlutOverlayDamaged has no successor"

  pred GlutDisplayModePossible = GlutReturnZero
  pred GlutVersion = GlutDisplayModePossible
  pred GlutOverlayPossible = GlutVersion
  pred GlutTransparentIndex = GlutOverlayPossible
  pred GlutNormalDamaged = GlutTransparentIndex
  pred GlutOverlayDamaged = GlutNormalDamaged
  pred GlutReturnZero = error "GlutConstants.pred: GlutReturnZero has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from GlutOverlayDamaged

  fromEnum GlutReturnZero = 0
  fromEnum GlutDisplayModePossible = 9
  fromEnum GlutVersion = 16
  fromEnum GlutOverlayPossible = 800
  fromEnum GlutTransparentIndex = 803
  fromEnum GlutNormalDamaged = 804
  fromEnum GlutOverlayDamaged = 805

  toEnum 0 = GlutReturnZero
  toEnum 9 = GlutDisplayModePossible
  toEnum 16 = GlutVersion
  toEnum 800 = GlutOverlayPossible
  toEnum 803 = GlutTransparentIndex
  toEnum 804 = GlutNormalDamaged
  toEnum 805 = GlutOverlayDamaged
  toEnum unmatched = error ("GlutConstants.toEnum: Cannot match " ++ show unmatched)

{-# LINE 638 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data GlutWindowProperties = GlutWindowX
                          | GlutWindowY
                          | GlutWindowWidth
                          | GlutWindowHeight
                          | GlutWindowParent
                          | GlutScreenWidth
                          | GlutScreenHeight
                          | GlutInitWindowX
                          | GlutInitWindowY
                          | GlutInitWindowWidth
                          | GlutInitWindowHeight
                          | GlutInitDisplayMode
                          | GlutWindowBufferSize
                          | GlutWindowDoublebuffer
                          | GlutWindowStereo
                          | GlutWindowColormapSize
                          | GlutWindowRedSize
                          | GlutWindowGreenSize
                          | GlutWindowBlueSize
                          | GlutWindowAlphaSize
                          | GlutWindowDepthSize
                          | GlutWindowStencilSize
                          | GlutWindowAccumRedSize
                          | GlutWindowAccumGreenSize
                          | GlutWindowAccumBlueSize
                          | GlutWindowAccumAlphaSize
                          | GlutWindowRgba
                          | GlutWindowNumSamples
  deriving (Show)
instance Enum GlutWindowProperties where
  succ GlutWindowX = GlutWindowY
  succ GlutWindowY = GlutWindowWidth
  succ GlutWindowWidth = GlutWindowHeight
  succ GlutWindowHeight = GlutWindowParent
  succ GlutWindowParent = GlutScreenWidth
  succ GlutScreenWidth = GlutScreenHeight
  succ GlutScreenHeight = GlutInitWindowX
  succ GlutInitWindowX = GlutInitWindowY
  succ GlutInitWindowY = GlutInitWindowWidth
  succ GlutInitWindowWidth = GlutInitWindowHeight
  succ GlutInitWindowHeight = GlutInitDisplayMode
  succ GlutInitDisplayMode = GlutWindowBufferSize
  succ GlutWindowBufferSize = GlutWindowDoublebuffer
  succ GlutWindowDoublebuffer = GlutWindowStereo
  succ GlutWindowStereo = GlutWindowColormapSize
  succ GlutWindowColormapSize = GlutWindowRedSize
  succ GlutWindowRedSize = GlutWindowGreenSize
  succ GlutWindowGreenSize = GlutWindowBlueSize
  succ GlutWindowBlueSize = GlutWindowAlphaSize
  succ GlutWindowAlphaSize = GlutWindowDepthSize
  succ GlutWindowDepthSize = GlutWindowStencilSize
  succ GlutWindowStencilSize = GlutWindowAccumRedSize
  succ GlutWindowAccumRedSize = GlutWindowAccumGreenSize
  succ GlutWindowAccumGreenSize = GlutWindowAccumBlueSize
  succ GlutWindowAccumBlueSize = GlutWindowAccumAlphaSize
  succ GlutWindowAccumAlphaSize = GlutWindowRgba
  succ GlutWindowRgba = GlutWindowNumSamples
  succ GlutWindowNumSamples = error "GlutWindowProperties.succ: GlutWindowNumSamples has no successor"

  pred GlutWindowY = GlutWindowX
  pred GlutWindowWidth = GlutWindowY
  pred GlutWindowHeight = GlutWindowWidth
  pred GlutWindowParent = GlutWindowHeight
  pred GlutScreenWidth = GlutWindowParent
  pred GlutScreenHeight = GlutScreenWidth
  pred GlutInitWindowX = GlutScreenHeight
  pred GlutInitWindowY = GlutInitWindowX
  pred GlutInitWindowWidth = GlutInitWindowY
  pred GlutInitWindowHeight = GlutInitWindowWidth
  pred GlutInitDisplayMode = GlutInitWindowHeight
  pred GlutWindowBufferSize = GlutInitDisplayMode
  pred GlutWindowDoublebuffer = GlutWindowBufferSize
  pred GlutWindowStereo = GlutWindowDoublebuffer
  pred GlutWindowColormapSize = GlutWindowStereo
  pred GlutWindowRedSize = GlutWindowColormapSize
  pred GlutWindowGreenSize = GlutWindowRedSize
  pred GlutWindowBlueSize = GlutWindowGreenSize
  pred GlutWindowAlphaSize = GlutWindowBlueSize
  pred GlutWindowDepthSize = GlutWindowAlphaSize
  pred GlutWindowStencilSize = GlutWindowDepthSize
  pred GlutWindowAccumRedSize = GlutWindowStencilSize
  pred GlutWindowAccumGreenSize = GlutWindowAccumRedSize
  pred GlutWindowAccumBlueSize = GlutWindowAccumGreenSize
  pred GlutWindowAccumAlphaSize = GlutWindowAccumBlueSize
  pred GlutWindowRgba = GlutWindowAccumAlphaSize
  pred GlutWindowNumSamples = GlutWindowRgba
  pred GlutWindowX = error "GlutWindowProperties.pred: GlutWindowX has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from GlutWindowNumSamples

  fromEnum GlutWindowX = 1
  fromEnum GlutWindowY = 2
  fromEnum GlutWindowWidth = 3
  fromEnum GlutWindowHeight = 4
  fromEnum GlutWindowParent = 5
  fromEnum GlutScreenWidth = 6
  fromEnum GlutScreenHeight = 7
  fromEnum GlutInitWindowX = 10
  fromEnum GlutInitWindowY = 11
  fromEnum GlutInitWindowWidth = 12
  fromEnum GlutInitWindowHeight = 13
  fromEnum GlutInitDisplayMode = 14
  fromEnum GlutWindowBufferSize = 15
  fromEnum GlutWindowDoublebuffer = 3122
  fromEnum GlutWindowStereo = 3123
  fromEnum GlutWindowColormapSize = 3409
  fromEnum GlutWindowRedSize = 3410
  fromEnum GlutWindowGreenSize = 3411
  fromEnum GlutWindowBlueSize = 3412
  fromEnum GlutWindowAlphaSize = 3413
  fromEnum GlutWindowDepthSize = 3414
  fromEnum GlutWindowStencilSize = 3415
  fromEnum GlutWindowAccumRedSize = 3416
  fromEnum GlutWindowAccumGreenSize = 3417
  fromEnum GlutWindowAccumBlueSize = 3418
  fromEnum GlutWindowAccumAlphaSize = 3419
  fromEnum GlutWindowRgba = 6408
  fromEnum GlutWindowNumSamples = 32937

  toEnum 1 = GlutWindowX
  toEnum 2 = GlutWindowY
  toEnum 3 = GlutWindowWidth
  toEnum 4 = GlutWindowHeight
  toEnum 5 = GlutWindowParent
  toEnum 6 = GlutScreenWidth
  toEnum 7 = GlutScreenHeight
  toEnum 10 = GlutInitWindowX
  toEnum 11 = GlutInitWindowY
  toEnum 12 = GlutInitWindowWidth
  toEnum 13 = GlutInitWindowHeight
  toEnum 14 = GlutInitDisplayMode
  toEnum 15 = GlutWindowBufferSize
  toEnum 3122 = GlutWindowDoublebuffer
  toEnum 3123 = GlutWindowStereo
  toEnum 3409 = GlutWindowColormapSize
  toEnum 3410 = GlutWindowRedSize
  toEnum 3411 = GlutWindowGreenSize
  toEnum 3412 = GlutWindowBlueSize
  toEnum 3413 = GlutWindowAlphaSize
  toEnum 3414 = GlutWindowDepthSize
  toEnum 3415 = GlutWindowStencilSize
  toEnum 3416 = GlutWindowAccumRedSize
  toEnum 3417 = GlutWindowAccumGreenSize
  toEnum 3418 = GlutWindowAccumBlueSize
  toEnum 3419 = GlutWindowAccumAlphaSize
  toEnum 6408 = GlutWindowRgba
  toEnum 32937 = GlutWindowNumSamples
  toEnum unmatched = error ("GlutWindowProperties.toEnum: Cannot match " ++ show unmatched)

{-# LINE 639 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data GlutCursor = GlutCursorInherit
                | GlutCursorRightArrow
                | GlutCursorBottomLeftCorner
                | GlutCursorBottomRightCorner
                | GlutCursorBottomSide
                | GlutCursorCycle
                | GlutCursorInfo
                | GlutCursorLeftSide
                | GlutCursorDestroy
                | GlutCursorHelp
                | GlutCursorRightSide
                | GlutCursorSpray
                | GlutCursorCrosshair
                | GlutCursorLeftArrow
                | GlutCursorTopLeftCorner
                | GlutCursorTopRightCorner
                | GlutCursorTopSide
                | GlutCursorWait
                | GlutCursorText
                | GlutCursorUpDown
                | GlutCursorLeftRight
                | GlutCursorNone
  deriving (Show)
instance Enum GlutCursor where
  succ GlutCursorInherit = GlutCursorRightArrow
  succ GlutCursorRightArrow = GlutCursorBottomLeftCorner
  succ GlutCursorBottomLeftCorner = GlutCursorBottomRightCorner
  succ GlutCursorBottomRightCorner = GlutCursorBottomSide
  succ GlutCursorBottomSide = GlutCursorCycle
  succ GlutCursorCycle = GlutCursorInfo
  succ GlutCursorInfo = GlutCursorLeftSide
  succ GlutCursorLeftSide = GlutCursorDestroy
  succ GlutCursorDestroy = GlutCursorHelp
  succ GlutCursorHelp = GlutCursorRightSide
  succ GlutCursorRightSide = GlutCursorSpray
  succ GlutCursorSpray = GlutCursorCrosshair
  succ GlutCursorCrosshair = GlutCursorLeftArrow
  succ GlutCursorLeftArrow = GlutCursorTopLeftCorner
  succ GlutCursorTopLeftCorner = GlutCursorTopRightCorner
  succ GlutCursorTopRightCorner = GlutCursorTopSide
  succ GlutCursorTopSide = GlutCursorWait
  succ GlutCursorWait = GlutCursorText
  succ GlutCursorText = GlutCursorUpDown
  succ GlutCursorUpDown = GlutCursorLeftRight
  succ GlutCursorLeftRight = GlutCursorNone
  succ GlutCursorNone = error "GlutCursor.succ: GlutCursorNone has no successor"

  pred GlutCursorRightArrow = GlutCursorInherit
  pred GlutCursorBottomLeftCorner = GlutCursorRightArrow
  pred GlutCursorBottomRightCorner = GlutCursorBottomLeftCorner
  pred GlutCursorBottomSide = GlutCursorBottomRightCorner
  pred GlutCursorCycle = GlutCursorBottomSide
  pred GlutCursorInfo = GlutCursorCycle
  pred GlutCursorLeftSide = GlutCursorInfo
  pred GlutCursorDestroy = GlutCursorLeftSide
  pred GlutCursorHelp = GlutCursorDestroy
  pred GlutCursorRightSide = GlutCursorHelp
  pred GlutCursorSpray = GlutCursorRightSide
  pred GlutCursorCrosshair = GlutCursorSpray
  pred GlutCursorLeftArrow = GlutCursorCrosshair
  pred GlutCursorTopLeftCorner = GlutCursorLeftArrow
  pred GlutCursorTopRightCorner = GlutCursorTopLeftCorner
  pred GlutCursorTopSide = GlutCursorTopRightCorner
  pred GlutCursorWait = GlutCursorTopSide
  pred GlutCursorText = GlutCursorWait
  pred GlutCursorUpDown = GlutCursorText
  pred GlutCursorLeftRight = GlutCursorUpDown
  pred GlutCursorNone = GlutCursorLeftRight
  pred GlutCursorInherit = error "GlutCursor.pred: GlutCursorInherit has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from GlutCursorNone

  fromEnum GlutCursorInherit = 0
  fromEnum GlutCursorRightArrow = 2
  fromEnum GlutCursorBottomLeftCorner = 7
  fromEnum GlutCursorBottomRightCorner = 8
  fromEnum GlutCursorBottomSide = 9
  fromEnum GlutCursorCycle = 26
  fromEnum GlutCursorInfo = 31
  fromEnum GlutCursorLeftSide = 36
  fromEnum GlutCursorDestroy = 45
  fromEnum GlutCursorHelp = 47
  fromEnum GlutCursorRightSide = 49
  fromEnum GlutCursorSpray = 63
  fromEnum GlutCursorCrosshair = 66
  fromEnum GlutCursorLeftArrow = 67
  fromEnum GlutCursorTopLeftCorner = 68
  fromEnum GlutCursorTopRightCorner = 69
  fromEnum GlutCursorTopSide = 70
  fromEnum GlutCursorWait = 76
  fromEnum GlutCursorText = 77
  fromEnum GlutCursorUpDown = 78
  fromEnum GlutCursorLeftRight = 79
  fromEnum GlutCursorNone = 255

  toEnum 0 = GlutCursorInherit
  toEnum 2 = GlutCursorRightArrow
  toEnum 7 = GlutCursorBottomLeftCorner
  toEnum 8 = GlutCursorBottomRightCorner
  toEnum 9 = GlutCursorBottomSide
  toEnum 26 = GlutCursorCycle
  toEnum 31 = GlutCursorInfo
  toEnum 36 = GlutCursorLeftSide
  toEnum 45 = GlutCursorDestroy
  toEnum 47 = GlutCursorHelp
  toEnum 49 = GlutCursorRightSide
  toEnum 63 = GlutCursorSpray
  toEnum 66 = GlutCursorCrosshair
  toEnum 67 = GlutCursorLeftArrow
  toEnum 68 = GlutCursorTopLeftCorner
  toEnum 69 = GlutCursorTopRightCorner
  toEnum 70 = GlutCursorTopSide
  toEnum 76 = GlutCursorWait
  toEnum 77 = GlutCursorText
  toEnum 78 = GlutCursorUpDown
  toEnum 79 = GlutCursorLeftRight
  toEnum 255 = GlutCursorNone
  toEnum unmatched = error ("GlutCursor.toEnum: Cannot match " ++ show unmatched)

{-# LINE 640 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

glutCursorFullCrossHair :: GlutCursor
glutCursorFullCrossHair = GlutCursorCrosshair
data Cursor = CursorDefault
            | CursorSW
            | CursorSE
            | CursorS
            | CursorMove
            | CursorHand
            | CursorArrow
            | CursorW
            | CursorHelp
            | CursorE
            | CursorCross
            | CursorNW
            | CursorNE
            | CursorN
            | CursorWait
            | CursorInsert
            | CursorNS
            | CursorWE
            | CursorNWSE
            | CursorNesw
            | CursorNone
  deriving (Show)
instance Enum Cursor where
  succ CursorDefault = CursorSW
  succ CursorSW = CursorSE
  succ CursorSE = CursorS
  succ CursorS = CursorMove
  succ CursorMove = CursorHand
  succ CursorHand = CursorArrow
  succ CursorArrow = CursorW
  succ CursorW = CursorHelp
  succ CursorHelp = CursorE
  succ CursorE = CursorCross
  succ CursorCross = CursorNW
  succ CursorNW = CursorNE
  succ CursorNE = CursorN
  succ CursorN = CursorWait
  succ CursorWait = CursorInsert
  succ CursorInsert = CursorNS
  succ CursorNS = CursorWE
  succ CursorWE = CursorNWSE
  succ CursorNWSE = CursorNesw
  succ CursorNesw = CursorNone
  succ CursorNone = error "Cursor.succ: CursorNone has no successor"

  pred CursorSW = CursorDefault
  pred CursorSE = CursorSW
  pred CursorS = CursorSE
  pred CursorMove = CursorS
  pred CursorHand = CursorMove
  pred CursorArrow = CursorHand
  pred CursorW = CursorArrow
  pred CursorHelp = CursorW
  pred CursorE = CursorHelp
  pred CursorCross = CursorE
  pred CursorNW = CursorCross
  pred CursorNE = CursorNW
  pred CursorN = CursorNE
  pred CursorWait = CursorN
  pred CursorInsert = CursorWait
  pred CursorNS = CursorInsert
  pred CursorWE = CursorNS
  pred CursorNWSE = CursorWE
  pred CursorNesw = CursorNWSE
  pred CursorNone = CursorNesw
  pred CursorDefault = error "Cursor.pred: CursorDefault has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from CursorNone

  fromEnum CursorDefault = 0
  fromEnum CursorSW = 7
  fromEnum CursorSE = 8
  fromEnum CursorS = 9
  fromEnum CursorMove = 27
  fromEnum CursorHand = 31
  fromEnum CursorArrow = 35
  fromEnum CursorW = 36
  fromEnum CursorHelp = 47
  fromEnum CursorE = 49
  fromEnum CursorCross = 66
  fromEnum CursorNW = 68
  fromEnum CursorNE = 69
  fromEnum CursorN = 70
  fromEnum CursorWait = 76
  fromEnum CursorInsert = 77
  fromEnum CursorNS = 78
  fromEnum CursorWE = 79
  fromEnum CursorNWSE = 80
  fromEnum CursorNesw = 81
  fromEnum CursorNone = 255

  toEnum 0 = CursorDefault
  toEnum 7 = CursorSW
  toEnum 8 = CursorSE
  toEnum 9 = CursorS
  toEnum 27 = CursorMove
  toEnum 31 = CursorHand
  toEnum 35 = CursorArrow
  toEnum 36 = CursorW
  toEnum 47 = CursorHelp
  toEnum 49 = CursorE
  toEnum 66 = CursorCross
  toEnum 68 = CursorNW
  toEnum 69 = CursorNE
  toEnum 70 = CursorN
  toEnum 76 = CursorWait
  toEnum 77 = CursorInsert
  toEnum 78 = CursorNS
  toEnum 79 = CursorWE
  toEnum 80 = CursorNWSE
  toEnum 81 = CursorNesw
  toEnum 255 = CursorNone
  toEnum unmatched = error ("Cursor.toEnum: Cannot match " ++ show unmatched)

{-# LINE 643 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data Mode = ModeRGB
          | ModeIndex
          | ModeDouble
          | ModeAccum
          | ModeAlpha
          | ModeDepth
          | ModeStencil
          | ModeRGB8
          | ModeMultisample
          | ModeStereo
          | ModeFakeSingle
  deriving (Show)
instance Enum Mode where
  succ ModeRGB = ModeIndex
  succ ModeIndex = ModeDouble
  succ ModeDouble = ModeAccum
  succ ModeAccum = ModeAlpha
  succ ModeAlpha = ModeDepth
  succ ModeDepth = ModeStencil
  succ ModeStencil = ModeRGB8
  succ ModeRGB8 = ModeMultisample
  succ ModeMultisample = ModeStereo
  succ ModeStereo = ModeFakeSingle
  succ ModeFakeSingle = error "Mode.succ: ModeFakeSingle has no successor"

  pred ModeIndex = ModeRGB
  pred ModeDouble = ModeIndex
  pred ModeAccum = ModeDouble
  pred ModeAlpha = ModeAccum
  pred ModeDepth = ModeAlpha
  pred ModeStencil = ModeDepth
  pred ModeRGB8 = ModeStencil
  pred ModeMultisample = ModeRGB8
  pred ModeStereo = ModeMultisample
  pred ModeFakeSingle = ModeStereo
  pred ModeRGB = error "Mode.pred: ModeRGB has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from ModeFakeSingle

  fromEnum ModeRGB = 0
  fromEnum ModeIndex = 1
  fromEnum ModeDouble = 2
  fromEnum ModeAccum = 4
  fromEnum ModeAlpha = 8
  fromEnum ModeDepth = 16
  fromEnum ModeStencil = 32
  fromEnum ModeRGB8 = 64
  fromEnum ModeMultisample = 128
  fromEnum ModeStereo = 256
  fromEnum ModeFakeSingle = 512

  toEnum 0 = ModeRGB
  toEnum 1 = ModeIndex
  toEnum 2 = ModeDouble
  toEnum 4 = ModeAccum
  toEnum 8 = ModeAlpha
  toEnum 16 = ModeDepth
  toEnum 32 = ModeStencil
  toEnum 64 = ModeRGB8
  toEnum 128 = ModeMultisample
  toEnum 256 = ModeStereo
  toEnum 512 = ModeFakeSingle
  toEnum unmatched = error ("Mode.toEnum: Cannot match " ++ show unmatched)

{-# LINE 644 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

data AlignType = AlignTypeCenter
               | AlignTypeTop
               | AlignTypeBottom
               | AlignTypeLeft
               | AlignTypeLeftTop
               | AlignTypeRight
               | AlignTypeRightTop
               | AlignTypeLeftBottom
               | AlignTypeRightBottom
               | AlignTypeInside
               | AlignTypeTextOverImage
               | AlignTypeClip
               | AlignTypeWrap
               | AlignTypeImageNextToText
               | AlignTypeTextNextToImage
               | AlignTypeImageBackdrop
  deriving (Show,Eq,Ord)
instance Enum AlignType where
  succ AlignTypeCenter = AlignTypeTop
  succ AlignTypeTop = AlignTypeBottom
  succ AlignTypeBottom = AlignTypeLeft
  succ AlignTypeLeft = AlignTypeLeftTop
  succ AlignTypeLeftTop = AlignTypeRight
  succ AlignTypeRight = AlignTypeRightTop
  succ AlignTypeRightTop = AlignTypeLeftBottom
  succ AlignTypeLeftBottom = AlignTypeRightBottom
  succ AlignTypeRightBottom = AlignTypeInside
  succ AlignTypeInside = AlignTypeTextOverImage
  succ AlignTypeTextOverImage = AlignTypeClip
  succ AlignTypeClip = AlignTypeWrap
  succ AlignTypeWrap = AlignTypeImageNextToText
  succ AlignTypeImageNextToText = AlignTypeTextNextToImage
  succ AlignTypeTextNextToImage = AlignTypeImageBackdrop
  succ AlignTypeImageBackdrop = error "AlignType.succ: AlignTypeImageBackdrop has no successor"

  pred AlignTypeTop = AlignTypeCenter
  pred AlignTypeBottom = AlignTypeTop
  pred AlignTypeLeft = AlignTypeBottom
  pred AlignTypeLeftTop = AlignTypeLeft
  pred AlignTypeRight = AlignTypeLeftTop
  pred AlignTypeRightTop = AlignTypeRight
  pred AlignTypeLeftBottom = AlignTypeRightTop
  pred AlignTypeRightBottom = AlignTypeLeftBottom
  pred AlignTypeInside = AlignTypeRightBottom
  pred AlignTypeTextOverImage = AlignTypeInside
  pred AlignTypeClip = AlignTypeTextOverImage
  pred AlignTypeWrap = AlignTypeClip
  pred AlignTypeImageNextToText = AlignTypeWrap
  pred AlignTypeTextNextToImage = AlignTypeImageNextToText
  pred AlignTypeImageBackdrop = AlignTypeTextNextToImage
  pred AlignTypeCenter = error "AlignType.pred: AlignTypeCenter has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from AlignTypeImageBackdrop

  fromEnum AlignTypeCenter = 0
  fromEnum AlignTypeTop = 1
  fromEnum AlignTypeBottom = 2
  fromEnum AlignTypeLeft = 4
  fromEnum AlignTypeLeftTop = 7
  fromEnum AlignTypeRight = 8
  fromEnum AlignTypeRightTop = 11
  fromEnum AlignTypeLeftBottom = 13
  fromEnum AlignTypeRightBottom = 14
  fromEnum AlignTypeInside = 16
  fromEnum AlignTypeTextOverImage = 32
  fromEnum AlignTypeClip = 64
  fromEnum AlignTypeWrap = 128
  fromEnum AlignTypeImageNextToText = 256
  fromEnum AlignTypeTextNextToImage = 288
  fromEnum AlignTypeImageBackdrop = 512

  toEnum 0 = AlignTypeCenter
  toEnum 1 = AlignTypeTop
  toEnum 2 = AlignTypeBottom
  toEnum 4 = AlignTypeLeft
  toEnum 7 = AlignTypeLeftTop
  toEnum 8 = AlignTypeRight
  toEnum 11 = AlignTypeRightTop
  toEnum 13 = AlignTypeLeftBottom
  toEnum 14 = AlignTypeRightBottom
  toEnum 16 = AlignTypeInside
  toEnum 32 = AlignTypeTextOverImage
  toEnum 64 = AlignTypeClip
  toEnum 128 = AlignTypeWrap
  toEnum 256 = AlignTypeImageNextToText
  toEnum 288 = AlignTypeTextNextToImage
  toEnum 512 = AlignTypeImageBackdrop
  toEnum unmatched = error ("AlignType.toEnum: Cannot match " ++ show unmatched)

{-# LINE 645 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

newtype Alignments = Alignments [AlignType] deriving Show
alignCenter :: Alignments
alignCenter = Alignments [AlignTypeCenter]
alignTop :: Alignments
alignTop = Alignments [AlignTypeTop]
alignBottom :: Alignments
alignBottom = Alignments [AlignTypeBottom]
alignLeft :: Alignments
alignLeft = Alignments [AlignTypeLeft]
alignRight :: Alignments
alignRight = Alignments [AlignTypeRight]
alignInside :: Alignments
alignInside = Alignments [AlignTypeInside]
alignTextOverImage :: Alignments
alignTextOverImage = Alignments [AlignTypeTextOverImage]
alignClip :: Alignments
alignClip = Alignments [AlignTypeClip]
alignWrap :: Alignments
alignWrap = Alignments [AlignTypeWrap]
alignImageNextToText :: Alignments
alignImageNextToText = Alignments [AlignTypeImageNextToText]
alignTextNextToImage :: Alignments
alignTextNextToImage = Alignments [AlignTypeTextNextToImage]
alignImageBackdrop :: Alignments
alignImageBackdrop = Alignments [AlignTypeImageBackdrop]
alignLeftTop :: Alignments
alignLeftTop = Alignments [AlignTypeLeftTop]
alignRightTop :: Alignments
alignRightTop = Alignments [AlignTypeRightTop]
alignLeftBottom :: Alignments
alignLeftBottom = Alignments [AlignTypeLeftBottom]
alignRightBottom :: Alignments
alignRightBottom = Alignments [AlignTypeRightBottom]
alignPositionMask :: Alignments
alignPositionMask = Alignments [AlignTypeLeft, AlignTypeRight, AlignTypeTop, AlignTypeBottom]
alignImageMask :: Alignments
alignImageMask = Alignments [AlignTypeImageBackdrop, AlignTypeImageNextToText, AlignTypeTextOverImage]
alignNoWrap :: Alignments
alignNoWrap = alignCenter
alignImageOverText :: Alignments
alignImageOverText = alignCenter
alignTopLeft :: Alignments
alignTopLeft = Alignments [AlignTypeTop, AlignTypeLeft]
alignTopRight :: Alignments
alignTopRight = Alignments [AlignTypeTop, AlignTypeRight]
alignBottomLeft :: Alignments
alignBottomLeft = Alignments [AlignTypeBottom, AlignTypeLeft]
alignBottomRight :: Alignments
alignBottomRight = Alignments [AlignTypeBottom, AlignTypeRight]
allAlignTypes :: [AlignType]
allAlignTypes = [
      AlignTypeCenter,
      AlignTypeTop,
      AlignTypeBottom,
      AlignTypeLeft,
      AlignTypeRight,
      AlignTypeInside,
      AlignTypeTextOverImage,
      AlignTypeClip,
      AlignTypeWrap,
      AlignTypeImageNextToText,
      AlignTypeTextNextToImage,
      AlignTypeImageBackdrop,
      AlignTypeLeftTop,
      AlignTypeRightTop,
      AlignTypeLeftBottom,
      AlignTypeRightBottom
      ]
allWhen :: [When]
allWhen = [
    WhenNever,
    WhenChanged,
    WhenNotChanged,
    WhenRelease,
    WhenReleaseAlways,
    WhenEnterKey,
    WhenEnterKeyAlways,
    WhenEnterKeyChanged
  ]

allEventStates :: [EventState]
allEventStates = [
    Kb_ShiftState,
    Kb_CapsLockState,
    Kb_CtrlState,
    Kb_AltState,
    Kb_NumLockState,
    Kb_MetaState,
    Kb_ScrollLockState,
    Mouse_Button1State,
    Mouse_Button2State,
    Mouse_Button3State
  ]
data Boxtype = NoBox
             | FlatBox
             | UpBox
             | DownBox
             | UpFrame
             | DownFrame
             | ThinUpBox
             | ThinDownBox
             | ThinUpFrame
             | ThinDownFrame
             | EngravedBox
             | EmbossedBox
             | EngravedFrame
             | EmbossedFrame
             | BorderBox
             | ShadowBox
             | BorderFrame
             | ShadowFrame
             | RoundedBox
             | RshadowBox
             | RoundedFrame
             | RFlatBox
             | RoundUpBox
             | RoundDownBox
             | DiamondUpBox
             | DiamondDownBox
             | OvalBox
             | OshadowBox
             | OvalFrame
             | FloatBox
             | PlasticUpBox
             | PlasticDownBox
             | PlasticUpFrame
             | PlasticDownFrame
             | PlasticThinUpBox
             | PlasticThinDownBox
             | PlasticRoundUpBox
             | PlasticRoundDownBox
             | GtkUpBox
             | GtkDownBox
             | GtkUpFrame
             | GtkDownFrame
             | GtkThinUpBox
             | GtkThinDownBox
             | GtkThinUpFrame
             | GtkThinDownFrame
             | GtkRoundUpBox
             | GtkRoundDownBox
             | GleamUpBox
             | GleamDownBox
             | GleamUpFrame
             | GleamDownFrame
             | GleamThinUpBox
             | GleamThinDownBox
             | GleamRoundUpBox
             | GleamRoundDownBox
             | FreeBoxtype
             deriving (Show)
instance Enum Boxtype where
  fromEnum NoBox = 0
  fromEnum FlatBox = 1
  fromEnum UpBox = 2
  fromEnum DownBox = 3
  fromEnum UpFrame = 4
  fromEnum DownFrame = 5
  fromEnum ThinUpBox = 6
  fromEnum ThinDownBox = 7
  fromEnum ThinUpFrame = 8
  fromEnum ThinDownFrame = 9
  fromEnum EngravedBox = 10
  fromEnum EmbossedBox = 11
  fromEnum EngravedFrame = 12
  fromEnum EmbossedFrame = 13
  fromEnum BorderBox = 14
  fromEnum ShadowBox = defineShadowBox_
  fromEnum BorderFrame = 16
  fromEnum ShadowFrame = defineShadowBox_ + 2
  fromEnum RoundedBox = defineRoundedBox_
  fromEnum RshadowBox = defineRshadowBox_
  fromEnum RoundedFrame = defineRoundedBox_ + 2
  fromEnum RFlatBox = defineRflatBox_
  fromEnum RoundUpBox = defineRoundUpBox_
  fromEnum RoundDownBox = defineRoundUpBox_ + 1
  fromEnum DiamondUpBox = defineDiamondBox_
  fromEnum DiamondDownBox = defineDiamondBox_ + 1
  fromEnum OvalBox = defineOvalBox_
  fromEnum OshadowBox = defineOvalBox_ + 1
  fromEnum OvalFrame = defineOvalBox_ + 2
  fromEnum FloatBox = defineOvalBox_ + 3
  fromEnum PlasticUpBox = definePlasticUpBox_
  fromEnum PlasticDownBox = definePlasticUpBox_ + 1
  fromEnum PlasticUpFrame = definePlasticUpBox_ + 2
  fromEnum PlasticDownFrame = definePlasticUpBox_ + 3
  fromEnum PlasticThinUpBox = definePlasticUpBox_ + 4
  fromEnum PlasticThinDownBox = definePlasticUpBox_ + 5
  fromEnum PlasticRoundUpBox = definePlasticUpBox_ + 6
  fromEnum PlasticRoundDownBox = definePlasticUpBox_ + 7
  fromEnum GtkUpBox = defineGtkUpBox_
  fromEnum GtkDownBox = defineGtkUpBox_ + 1
  fromEnum GtkUpFrame = defineGtkUpBox_ + 2
  fromEnum GtkDownFrame = defineGtkUpBox_ + 3
  fromEnum GtkThinUpBox = defineGtkUpBox_ + 4
  fromEnum GtkThinDownBox = defineGtkUpBox_ + 5
  fromEnum GtkThinUpFrame = defineGtkUpBox_ + 6
  fromEnum GtkThinDownFrame = defineGtkUpBox_ + 7
  fromEnum GtkRoundUpBox = defineGtkUpBox_ + 8
  fromEnum GtkRoundDownBox = defineGtkUpBox_ + 9
  fromEnum GleamUpBox = defineGleamUpBox_
  fromEnum GleamDownBox = defineGleamUpBox_ + 1
  fromEnum GleamUpFrame = defineGleamUpBox_ + 2
  fromEnum GleamDownFrame = defineGleamUpBox_ + 3
  fromEnum GleamThinUpBox = defineGleamUpBox_ + 4
  fromEnum GleamThinDownBox = defineGleamUpBox_ + 5
  fromEnum GleamRoundUpBox = defineGleamUpBox_ + 6
  fromEnum GleamRoundDownBox = defineGleamUpBox_ + 7
  fromEnum FreeBoxtype = 48

  toEnum 0 = NoBox
  toEnum 1 = FlatBox
  toEnum 2 = UpBox
  toEnum 3 = DownBox
  toEnum 4 = UpFrame
  toEnum 5 = DownFrame
  toEnum 6 = ThinUpBox
  toEnum 7 = ThinDownBox
  toEnum 8 = ThinUpFrame
  toEnum 9 = ThinDownFrame
  toEnum 10 = EngravedBox
  toEnum 11 = EmbossedBox
  toEnum 12 = EngravedFrame
  toEnum 13 = EmbossedFrame
  toEnum 14 = BorderBox
  toEnum 16 = BorderFrame
  toEnum 48 = FreeBoxtype
  toEnum x | x == defineShadowBox_ = ShadowBox
           | x == defineShadowBox_ + 2 = ShadowFrame
           | x == defineRoundedBox_  = RoundedBox
           | x == defineRshadowBox_ = RshadowBox
           | x == defineRoundedBox_ + 2 = RoundedFrame
           | x == defineRflatBox_ = RFlatBox
           | x == defineRoundUpBox_ = RoundUpBox
           | x == defineRoundUpBox_ + 1 = RoundDownBox
           | x == defineDiamondBox_ = DiamondUpBox
           | x == defineDiamondBox_ + 1 = DiamondDownBox
           | x == defineOvalBox_ = OvalBox
           | x == defineOvalBox_ + 1 = OshadowBox
           | x == defineOvalBox_ + 2 = OvalFrame
           | x == defineOvalBox_ + 3 = FloatBox
           | x == definePlasticUpBox_ = PlasticUpBox
           | x == definePlasticUpBox_ + 1 = PlasticDownBox
           | x == definePlasticUpBox_ + 2 = PlasticUpFrame
           | x == definePlasticUpBox_ + 3 = PlasticDownFrame
           | x == definePlasticUpBox_ + 4 = PlasticThinUpBox
           | x == definePlasticUpBox_ + 5 = PlasticThinDownBox
           | x == definePlasticUpBox_ + 6 = PlasticRoundUpBox
           | x == definePlasticUpBox_ + 7 = PlasticRoundDownBox
           | x == defineGtkUpBox_  = GtkUpBox
           | x == defineGtkUpBox_ + 1 = GtkDownBox
           | x == defineGtkUpBox_ + 2 = GtkUpFrame
           | x == defineGtkUpBox_ + 3 = GtkDownFrame
           | x == defineGtkUpBox_ + 4 = GtkThinUpBox
           | x == defineGtkUpBox_ + 5 = GtkThinDownBox
           | x == defineGtkUpBox_ + 6 = GtkThinUpFrame
           | x == defineGtkUpBox_ + 7 = GtkThinDownFrame
           | x == defineGtkUpBox_ + 8 = GtkRoundUpBox
           | x == defineGtkUpBox_ + 9 = GtkRoundDownBox
           | x == defineGleamUpBox_  = GleamUpBox
           | x == defineGleamUpBox_ + 1 = GleamDownBox
           | x == defineGleamUpBox_ + 2 = GleamUpFrame
           | x == defineGleamUpBox_ + 3 = GleamDownFrame
           | x == defineGleamUpBox_ + 4 = GleamThinUpBox
           | x == defineGleamUpBox_ + 5 = GleamThinDownBox
           | x == defineGleamUpBox_ + 6 = GleamRoundUpBox
           | x == defineGleamUpBox_ + 7 = GleamRoundDownBox
           | otherwise = error ("Boxtype.toEnum: Cannot match " ++
	                                         show otherwise)
frame,frameBox, circleBox, diamondBox :: Boxtype
frame = EngravedFrame
frameBox = EngravedBox
circleBox = RoundDownBox
diamondBox = DiamondDownBox


-- Fonts
newtype Font = Font Int deriving Show
data FontAttribute = Bold | Italic | BoldItalic deriving (Show, Enum)
cFromFont :: Font -> CInt
cFromFont (Font f) = fromIntegral f
cToFont :: CInt -> Font
cToFont f = Font (fromIntegral f)

cFromFontAttribute :: FontAttribute -> CInt
cFromFontAttribute Bold = cFromFont helveticaBold
cFromFontAttribute Italic = cFromFont helveticaItalic
cFromFontAttribute BoldItalic = cFromFont helveticaBoldItalic

cToFontAttribute :: CInt -> Maybe FontAttribute
cToFontAttribute attributeCode =
      case (attributeCode `has` helveticaBold, attributeCode `has` helveticaItalic) of
        (True,True) -> Just BoldItalic
        (True,False) -> Just Bold
        (False,True) -> Just Italic
        (False,False) -> Nothing
      where
        has :: CInt -> Font -> Bool
        has code (Font f) = code .&. (fromIntegral f) /= 0
helvetica :: Font
helvetica = Font 0
helveticaBold :: Font
helveticaBold = Font 1
helveticaItalic :: Font
helveticaItalic = Font 2
helveticaBoldItalic :: Font
helveticaBoldItalic = Font 3
courier :: Font
courier = Font 4
courierBold :: Font
courierBold = Font 5
courierItalic :: Font
courierItalic = Font 6
courierBoldItalic :: Font
courierBoldItalic = Font 7
times :: Font
times = Font 8
timesBold :: Font
timesBold = Font 9
timesItalic :: Font
timesItalic = Font 10
timesBoldItalic :: Font
timesBoldItalic = Font 11
symbol :: Font
symbol = Font 12
screen :: Font
screen = Font 13
screenBold :: Font
screenBold = Font 14
zapfDingbats :: Font
zapfDingbats = Font 15
freeFont :: Font
freeFont = Font 16

-- Colors

newtype Color = Color CUInt deriving Show
foregroundColor :: Color
foregroundColor = Color 0
background2Color :: Color
background2Color = Color 7
inactiveColor :: Color
inactiveColor = Color 8
selectionColor :: Color
selectionColor = Color 15
gray0Color :: Color
gray0Color = Color 32
dark3Color :: Color
dark3Color = Color 39
dark2Color :: Color
dark2Color = Color 45
dark1Color :: Color
dark1Color = Color 47
backgroundColor :: Color
backgroundColor = Color 49
light1Color :: Color
light1Color = Color 50
light2Color :: Color
light2Color = Color 52
light3Color :: Color
light3Color = Color 54
blackColor :: Color
blackColor = Color 56
redColor :: Color
redColor = Color 88
greenColor :: Color
greenColor = Color 63
yellowColor :: Color
yellowColor = Color 95
blueColor :: Color
blueColor = Color 216
magentaColor :: Color
magentaColor = Color 248
cyanColor :: Color
cyanColor = Color 223
darkRedColor :: Color
darkRedColor = Color 72
darkGreenColor :: Color
darkGreenColor = Color 60
darkYellowColor :: Color
darkYellowColor = Color 76
darkBlueColor :: Color
darkBlueColor = Color 136
darkMagentaColor :: Color
darkMagentaColor = Color 152
darkCyanColor :: Color
darkCyanColor = Color 140
whiteColor :: Color
whiteColor = Color 255
freeColor :: Color
freeColor = Color 16
numFreeColor :: Color
numFreeColor =Color 16
grayRampColor :: Color
grayRampColor = Color 32
numGray:: Color
numGray= Color 24
grayColor :: Color
grayColor = backgroundColor
colorCubeColor :: Color
colorCubeColor = Color 56
numRed :: Color
numRed = Color 5
numGreen :: Color
numGreen = Color 8
numBlue :: Color
numBlue = Color 5

-- Fl_Mode Aliases

single :: Mode
single = ModeRGB


-- Fl_LabelType

data Labeltype = NormalLabel
               | NoLabel
               | ShadowLabel
               | EngravedLabel
               | EmbossedLabel
               | FreeLabelType deriving Show

instance Enum Labeltype where
    fromEnum NormalLabel = 0
    fromEnum NoLabel = 1
    fromEnum ShadowLabel = defineShadowLabel_
    fromEnum EngravedLabel = defineEngravedLabel_
    fromEnum EmbossedLabel = defineEmbossedLabel_
    fromEnum FreeLabelType = 8

    toEnum 0 = NormalLabel
    toEnum 1 = NoLabel
    toEnum x | x == defineShadowLabel_ = ShadowLabel
             | x == defineEngravedLabel_ = EngravedLabel
             | x == defineEmbossedLabel_ = EmbossedLabel
    toEnum 8 = FreeLabelType

symbolLabel :: Labeltype
symbolLabel = NormalLabel

defineRoundUpBox_ :: (Num a) => a
defineRoundUpBox_ =
    fromIntegral $ (C2HSImp.unsafePerformIO fl_define_FL_ROUND_UP_BOXC)
{-# LINE 1089 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}


defineRoundUpBox :: Boxtype
defineRoundUpBox =
    toEnum defineRoundUpBox_

defineShadowBox_ :: (Num a) => a
defineShadowBox_ =
    fromIntegral $ (C2HSImp.unsafePerformIO fl_define_FL_SHADOW_BOXC)
{-# LINE 1097 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}


defineShadowBox :: Boxtype
defineShadowBox =
    toEnum defineShadowBox_

defineRoundedBox_ :: (Num a) => a
defineRoundedBox_ =
    fromIntegral $ (C2HSImp.unsafePerformIO fl_define_FL_ROUNDED_BOXC)
{-# LINE 1105 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

defineRoundedBox :: Boxtype
defineRoundedBox = toEnum defineRoundedBox_

defineRflatBox_ :: (Num a) => a
defineRflatBox_ =
    fromIntegral $ (C2HSImp.unsafePerformIO fl_define_FL_RFLAT_BOXC)
{-# LINE 1111 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

defineRflatBox :: Boxtype
defineRflatBox = toEnum defineRflatBox_

defineRshadowBox_ :: (Num a) => a
defineRshadowBox_ =
    fromIntegral $ (C2HSImp.unsafePerformIO fl_define_FL_RSHADOW_BOXC)
{-# LINE 1117 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

defineRshadowBox :: Boxtype
defineRshadowBox = toEnum defineRshadowBox_

defineDiamondBox_ :: (Num a) => a
defineDiamondBox_ =
    fromIntegral $ (C2HSImp.unsafePerformIO fl_define_FL_DIAMOND_BOXC)
{-# LINE 1123 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

defineDiamondBox :: Boxtype
defineDiamondBox = toEnum defineDiamondBox_

defineOvalBox_ :: (Num a) => a
defineOvalBox_ =
    fromIntegral $ (C2HSImp.unsafePerformIO fl_define_FL_OVAL_BOXC)
{-# LINE 1129 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

defineOvalBox :: Boxtype
defineOvalBox = toEnum defineOvalBox_

definePlasticUpBox_ :: (Num a) => a
definePlasticUpBox_ =
    fromIntegral $ (C2HSImp.unsafePerformIO fl_define_FL_PLASTIC_UP_BOXC)
{-# LINE 1135 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

definePlasticUpBox :: Boxtype
definePlasticUpBox = toEnum definePlasticUpBox_

defineGtkUpBox_ :: (Num a) => a
defineGtkUpBox_ =
    fromIntegral $ (C2HSImp.unsafePerformIO fl_define_FL_GTK_UP_BOXC)
{-# LINE 1141 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

defineGtkUpBox :: Boxtype
defineGtkUpBox = toEnum defineGtkUpBox_

defineGleamUpBox_ :: (Num a ) => a
defineGleamUpBox_ =
  fromIntegral $ (C2HSImp.unsafePerformIO fl_define_FL_GLEAM_UP_BOXC)
{-# LINE 1147 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}


defineShadowLabel_ :: (Num a) => a
defineShadowLabel_ =
   fromIntegral $ (C2HSImp.unsafePerformIO fl_define_FL_SHADOW_LABELC)
{-# LINE 1151 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

defineShadowLabel :: Labeltype
defineShadowLabel = toEnum defineShadowLabel_

defineEngravedLabel_ :: (Num a) => a
defineEngravedLabel_ =
   fromIntegral $ (C2HSImp.unsafePerformIO fl_define_FL_ENGRAVED_LABELC)
{-# LINE 1157 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}


defineEngravedLabel :: Labeltype
defineEngravedLabel = toEnum defineEngravedLabel_

defineEmbossedLabel_ :: (Num a) => a
defineEmbossedLabel_ =
   fromIntegral $ (C2HSImp.unsafePerformIO fl_define_FL_EMBOSSED_LABELC)
{-# LINE 1164 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}


defineEmbossedLabel :: Labeltype
defineEmbossedLabel = toEnum defineEmbossedLabel_

cFromColor :: Color -> CUInt
cFromColor (Color c) = fromIntegral c
cToColor :: CUInt-> Color
cToColor c = Color (fromIntegral c)

type RGB = (CUChar, CUChar, CUChar)

inactive :: (Color) -> (Color)
inactive a1 =
  C2HSImp.unsafePerformIO $
  let {a1' = cFromColor a1} in 
  inactive'_ a1' >>= \res ->
  let {res' = cToColor res} in
  return (res')

{-# LINE 1177 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

contrast :: (Color) -> (Color) -> (Color)
contrast a1 a2 =
  C2HSImp.unsafePerformIO $
  let {a1' = cFromColor a1} in 
  let {a2' = cFromColor a2} in 
  contrast'_ a1' a2' >>= \res ->
  let {res' = cToColor res} in
  return (res')

{-# LINE 1180 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

color_average :: (Color) -> (Color) -> (Double) -> (Color)
color_average a1 a2 a3 =
  C2HSImp.unsafePerformIO $
  let {a1' = cFromColor a1} in 
  let {a2' = cFromColor a2} in 
  let {a3' = realToFrac a3} in 
  color_average'_ a1' a2' a3' >>= \res ->
  let {res' = cToColor res} in
  return (res')

{-# LINE 1185 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

lighter :: (Color) -> (Color)
lighter a1 =
  C2HSImp.unsafePerformIO $
  let {a1' = cFromColor a1} in 
  lighter'_ a1' >>= \res ->
  let {res' = cToColor res} in
  return (res')

{-# LINE 1187 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

darker :: (Color) -> (Color)
darker a1 =
  C2HSImp.unsafePerformIO $
  let {a1' = cFromColor a1} in 
  darker'_ a1' >>= \res ->
  let {res' = cToColor res} in
  return (res')

{-# LINE 1189 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

rgbColorWithRgb' :: (CUChar) -> (CUChar) -> (CUChar) -> IO ((CUInt))
rgbColorWithRgb' a1 a2 a3 =
  let {a1' = id a1} in 
  let {a2' = id a2} in 
  let {a3' = id a3} in 
  rgbColorWithRgb''_ a1' a2' a3' >>= \res ->
  let {res' = fromIntegral res} in
  return (res')

{-# LINE 1194 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

rgbColorWithRgb :: RGB -> IO Color
rgbColorWithRgb (r,g,b) = rgbColorWithRgb' r g b >>= return . Color

rgbColorWithGrayscale :: (Char) -> (Color)
rgbColorWithGrayscale a1 =
  C2HSImp.unsafePerformIO $
  let {a1' = castCharToCUChar a1} in 
  rgbColorWithGrayscale'_ a1' >>= \res ->
  let {res' = cToColor res} in
  return (res')

{-# LINE 1200 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

grayRamp :: (Int) -> (Color)
grayRamp a1 =
  C2HSImp.unsafePerformIO $
  let {a1' = fromIntegral a1} in 
  grayRamp'_ a1' >>= \res ->
  let {res' = cToColor res} in
  return (res')

{-# LINE 1201 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}

colorCube :: (Int) -> (Int) -> (Int) -> (Color)
colorCube a1 a2 a3 =
  C2HSImp.unsafePerformIO $
  let {a1' = fromIntegral a1} in 
  let {a2' = fromIntegral a2} in 
  let {a3' = fromIntegral a3} in 
  colorCube'_ a1' a2' a3' >>= \res ->
  let {res' = cToColor res} in
  return (res')

{-# LINE 1203 "src/Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs" #-}


foreign import ccall unsafe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_define_FL_ROUND_UP_BOXC"
  fl_define_FL_ROUND_UP_BOXC :: (IO C2HSImp.CInt)

foreign import ccall unsafe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_define_FL_SHADOW_BOXC"
  fl_define_FL_SHADOW_BOXC :: (IO C2HSImp.CInt)

foreign import ccall unsafe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_define_FL_ROUNDED_BOXC"
  fl_define_FL_ROUNDED_BOXC :: (IO C2HSImp.CInt)

foreign import ccall unsafe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_define_FL_RFLAT_BOXC"
  fl_define_FL_RFLAT_BOXC :: (IO C2HSImp.CInt)

foreign import ccall unsafe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_define_FL_RSHADOW_BOXC"
  fl_define_FL_RSHADOW_BOXC :: (IO C2HSImp.CInt)

foreign import ccall unsafe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_define_FL_DIAMOND_BOXC"
  fl_define_FL_DIAMOND_BOXC :: (IO C2HSImp.CInt)

foreign import ccall unsafe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_define_FL_OVAL_BOXC"
  fl_define_FL_OVAL_BOXC :: (IO C2HSImp.CInt)

foreign import ccall unsafe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_define_FL_PLASTIC_UP_BOXC"
  fl_define_FL_PLASTIC_UP_BOXC :: (IO C2HSImp.CInt)

foreign import ccall unsafe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_define_FL_GTK_UP_BOXC"
  fl_define_FL_GTK_UP_BOXC :: (IO C2HSImp.CInt)

foreign import ccall unsafe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_define_FL_GLEAM_UP_BOXC"
  fl_define_FL_GLEAM_UP_BOXC :: (IO C2HSImp.CInt)

foreign import ccall unsafe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_define_FL_SHADOW_LABELC"
  fl_define_FL_SHADOW_LABELC :: (IO C2HSImp.CInt)

foreign import ccall unsafe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_define_FL_ENGRAVED_LABELC"
  fl_define_FL_ENGRAVED_LABELC :: (IO C2HSImp.CInt)

foreign import ccall unsafe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_define_FL_EMBOSSED_LABELC"
  fl_define_FL_EMBOSSED_LABELC :: (IO C2HSImp.CInt)

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_inactiveC"
  inactive'_ :: (C2HSImp.CUInt -> (IO C2HSImp.CUInt))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_contrastC"
  contrast'_ :: (C2HSImp.CUInt -> (C2HSImp.CUInt -> (IO C2HSImp.CUInt)))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_color_averageC"
  color_average'_ :: (C2HSImp.CUInt -> (C2HSImp.CUInt -> (C2HSImp.CFloat -> (IO C2HSImp.CUInt))))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_lighterC"
  lighter'_ :: (C2HSImp.CUInt -> (IO C2HSImp.CUInt))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_darkerC"
  darker'_ :: (C2HSImp.CUInt -> (IO C2HSImp.CUInt))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_rgb_color_with_rgbC"
  rgbColorWithRgb''_ :: (C2HSImp.CUChar -> (C2HSImp.CUChar -> (C2HSImp.CUChar -> (IO C2HSImp.CUInt))))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_rgb_color_with_grayscaleC"
  rgbColorWithGrayscale'_ :: (C2HSImp.CUChar -> (IO C2HSImp.CUInt))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_gray_rampC"
  grayRamp'_ :: (C2HSImp.CInt -> (IO C2HSImp.CUInt))

foreign import ccall safe "Graphics/UI/FLTK/LowLevel/Fl_Enumerations.chs.h fl_color_cubeC"
  colorCube'_ :: (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO C2HSImp.CUInt))))