{-# LANGUAGE CPP #-} #include "Fl_C.h" #include "Fl_EnumerationsC.h" module Graphics.UI.FLTK.LowLevel.Fl_Enumerations ( -- * Events Event(..), When(..), FdWhen(..), -- * Tree Attributes TreeSort(..), TreeConnector(..), TreeSelect(..), SearchDirection(..), #if FLTK_ABI_VERSION >= 10302 TreeItemReselectMode(..), TreeItemDrawMode(..), #endif -- * Keyboard and mouse codes SpecialKey(..), allSpecialKeys, allShortcutSpecialKeys, MouseButton(..), EventState(..), KeyboardKeyMask(..), MouseButtonsMask(..), allEventStates, kb_CommandState, kb_ControlState, kb_KpLast, -- * Widget damage types Damage(..), allDamages, -- * Cursor type Cursor(..), -- * Various modes Mode(..), Modes(..), single, allModes, -- * 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 C2HS #c enum VersionInfo { MajorVersion = FL_MAJOR_VERSION, MinorVersion = FL_MINOR_VERSION, PatchVersion = FL_PATCH_VERSION, Version = FL_VERSION }; enum Event { NoEvent = FL_NO_EVENT, Push = FL_PUSH, Release = FL_RELEASE, Enter = FL_ENTER, Leave = FL_LEAVE, Drag = FL_DRAG, Focus = FL_FOCUS, Unfocus = FL_UNFOCUS, Keydown = FL_KEYDOWN, // FL_KEYBOARD same as above, Keyup = FL_KEYUP, Close = FL_CLOSE, Move = FL_MOVE, Shortcut = FL_SHORTCUT, Deactivate = FL_DEACTIVATE, Activate = FL_ACTIVATE, Hide = FL_HIDE, Show = FL_SHOW, Paste = FL_PASTE, Selectionclear = FL_SELECTIONCLEAR, Mousewheel = FL_MOUSEWHEEL, DndEnter = FL_DND_ENTER, DndDrag = FL_DND_DRAG, DndLeave = FL_DND_LEAVE, DndRelease = FL_DND_RELEASE, ScreenConfigurationChanged = FL_SCREEN_CONFIGURATION_CHANGED, Fullscreen = FL_FULLSCREEN }; enum When { WhenNever = FL_WHEN_NEVER, WhenChanged = FL_WHEN_CHANGED, WhenNotChanged = FL_WHEN_NOT_CHANGED, WhenRelease = FL_WHEN_RELEASE, WhenReleaseAlways= FL_WHEN_RELEASE_ALWAYS, WhenEnterKey = FL_WHEN_ENTER_KEY, WhenEnterKeyAlways = FL_WHEN_ENTER_KEY_ALWAYS, WhenEnterKeyChanged = FL_WHEN_ENTER_KEY_CHANGED }; enum TabsWhen { TabsWhenNever = FL_WHEN_NEVER, TabsWhenChanged = FL_WHEN_CHANGED, TabsWhenNotChanged = FL_WHEN_NOT_CHANGED, TabsWhenRelease = FL_WHEN_RELEASE }; enum FdWhen { CanRead = FL_READ, CanWrite = FL_WRITE, OnExcept = FL_EXCEPT }; enum TreeSort{ TreeSortNone = FL_TREE_SORT_NONE, TreeSortAscending = FL_TREE_SORT_ASCENDING, TreeSortDescending = FL_TREE_SORT_DESCENDING }; enum TreeConnector{ TreeConnectorNone = FL_TREE_CONNECTOR_NONE, TreeConnectorDotted = FL_TREE_CONNECTOR_DOTTED, TreeConnectorSolid = FL_TREE_CONNECTOR_SOLID }; enum TreeSelect{ TreeSelectNone = FL_TREE_SELECT_NONE, TreeSelectSingle = FL_TREE_SELECT_SINGLE, TreeSelectMulti = FL_TREE_SELECT_MULTI, TreeSelectSingleDraggable = FL_TREE_SELECT_SINGLE_DRAGGABLE }; enum SearchDirection { SearchDirectionDown = FL_Down, SearchDirectionUp = FL_Up }; #if FLTK_ABI_VERSION >= 10302 enum TreeItemReselectMode{ TreeSelectableOnce = FL_TREE_SELECTABLE_ONCE, TreeSelectableAlways = FL_TREE_SELECTABLE_ALWAYS }; enum TreeItemDrawMode{ TreeItemDrawDefault = FL_TREE_ITEM_DRAW_DEFAULT, TreeItemDrawLabelAndWidget = FL_TREE_ITEM_DRAW_LABEL_AND_WIDGET, TreeItemHeightFromWidget = FL_TREE_ITEM_HEIGHT_FROM_WIDGET }; #endif enum SpecialKey { Button = FL_Button, Kb_Clear = FL_Clear, Kb_Backspace = FL_BackSpace, Kb_Tab = FL_Tab, Kb_IsoKey = FL_Iso_Key, Kb_Enter = FL_Enter, Kb_Pause = FL_Pause, Kb_Escape = FL_Escape, Kb_Kana = FL_Kana, Kb_Eisu = FL_Eisu, Kb_Yen = FL_Yen, Kb_JisUnderscore = FL_JIS_Underscore, Kb_Home = FL_Home, Kb_Left = FL_Left, Kb_Up = FL_Up, Kb_Right = FL_Right, Kb_Down = FL_Down, Kb_PageUp = FL_Page_Up, Kb_PageDown = FL_Page_Down, Kb_End = FL_End, Kb_Print = FL_Print, Kb_Insert = FL_Insert, Kb_Menu = FL_Menu, Kb_Help = FL_Help, Kb_Kp = FL_KP, Kb_KpEnter = FL_KP_Enter, Kb_F = FL_F, Kb_Flast = FL_F_Last, Kb_ShiftL = FL_Shift_L, Kb_ShiftR = FL_Shift_R, Kb_ControlL = FL_Control_L, Kb_ControlR = FL_Control_R, Kb_CapsLock = FL_Caps_Lock, Kb_MetaL = FL_Meta_L, Kb_MetaR = FL_Meta_R, Kb_AltL = FL_Alt_L, Kb_AltR = FL_Alt_R, Kb_Delete = FL_Delete, Kb_VolumeDown = FL_Volume_Down, Kb_VolumeMute = FL_Volume_Mute, Kb_VolumeUp = FL_Volume_Up, Kb_MediaPlay = FL_Media_Play, Kb_MediaStop = FL_Media_Stop, Kb_MediaPrev = FL_Media_Prev, Kb_MediaNext = FL_Media_Next, Kb_HomePage = FL_Home_Page, Kb_Mail = FL_Mail, Kb_Search = FL_Search, Kb_Back = FL_Back, Kb_Forward = FL_Forward, Kb_Stop = FL_Stop, Kb_Refresh = FL_Refresh, Kb_Sleep = FL_Sleep, Kb_Favorites = FL_Favorites, }; enum MouseButton { Mouse_Left = FL_LEFT_MOUSE, Mouse_Middle = FL_MIDDLE_MOUSE, Mouse_Right = FL_RIGHT_MOUSE, }; enum EventState { Kb_ShiftState = FL_SHIFT, Kb_CapsLockState = FL_CAPS_LOCK, Kb_CtrlState = FL_CTRL, Kb_AltState = FL_ALT, Kb_NumLockState = FL_NUM_LOCK, Kb_MetaState = FL_META, Kb_ScrollLockState = FL_SCROLL_LOCK, Mouse_Button1State = FL_BUTTON1, Mouse_Button2State = FL_BUTTON2, Mouse_Button3State= FL_BUTTON3, }; enum KeyboardKeyMask { Kb_KeyMask = FL_KEY_MASK }; enum MouseButtonsMask { Mouse_ButtonsMask = FL_BUTTONS, }; enum Damage { DamageChild = FL_DAMAGE_CHILD, DamageExpose = FL_DAMAGE_EXPOSE, DamageScroll = FL_DAMAGE_SCROLL, DamageOverlay = FL_DAMAGE_OVERLAY, DamageUser1 = FL_DAMAGE_USER1, DamageUser2 = FL_DAMAGE_USER2, DamageAll = FL_DAMAGE_ALL }; enum Cursor { CursorDefault = FL_CURSOR_DEFAULT, CursorArrow = FL_CURSOR_ARROW, CursorCross = FL_CURSOR_CROSS, CursorWait = FL_CURSOR_WAIT, CursorInsert = FL_CURSOR_INSERT, CursorHand = FL_CURSOR_HAND, CursorHelp = FL_CURSOR_HELP, CursorMove = FL_CURSOR_MOVE, CursorNS = FL_CURSOR_NS, CursorWE = FL_CURSOR_WE, CursorNWSE = FL_CURSOR_NWSE, CursorNesw = FL_CURSOR_NESW, CursorNone = FL_CURSOR_NONE, CursorN = FL_CURSOR_N, CursorNE = FL_CURSOR_NE, CursorE = FL_CURSOR_E, CursorSE = FL_CURSOR_SE, CursorS = FL_CURSOR_S, CursorSW = FL_CURSOR_SW, CursorW = FL_CURSOR_W, CursorNW = FL_CURSOR_NW }; enum Mode { ModeRGB = FL_RGB, ModeRGB8 = FL_RGB8, ModeIndex = FL_INDEX, ModeDouble = FL_DOUBLE, ModeAccum = FL_ACCUM, ModeAlpha = FL_ALPHA, ModeDepth = FL_DEPTH, ModeStencil = FL_STENCIL, ModeMultisample = FL_MULTISAMPLE, ModeStereo = FL_STEREO, ModeFakeSingle = FL_FAKE_SINGLE #ifdef GLSUPPORT #if FLTK_API_VERSION >= 10304 , ModeOpenGL3 = FL_OPENGL3 #endif #endif }; enum AlignType { AlignTypeCenter = 0, AlignTypeTop = 1, AlignTypeBottom = 2, AlignTypeLeft = 4, AlignTypeRight = 8, AlignTypeInside = 16, AlignTypeTextOverImage = 0x0020, AlignTypeClip = 64, AlignTypeWrap = 128, AlignTypeImageNextToText = 0x0100, AlignTypeTextNextToImage = 0x0120, AlignTypeImageBackdrop = 0x0200, AlignTypeLeftTop = 0x0007, AlignTypeRightTop = 0x000b, AlignTypeLeftBottom = 0x000d, AlignTypeRightBottom = 0x000e, }; #endc {#enum Event {} deriving (Show, Eq) #} {#enum When {} deriving (Show, Eq, Ord) #} {#enum FdWhen {} deriving (Show, Eq, Ord) #} {#enum TreeSort {} deriving (Show, Eq) #} {#enum TreeConnector {} deriving (Show, Eq) #} {#enum TreeSelect {} deriving (Show, Eq) #} {#enum SearchDirection {} deriving (Show, Eq) #} #if FLTK_ABI_VERSION >= 10302 {#enum TreeItemReselectMode {} deriving (Show, Eq) #} {#enum TreeItemDrawMode {} deriving (Show, Eq) #} #endif {#enum SpecialKey {} deriving (Show, Eq) #} 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 ] {#enum MouseButton {} deriving (Show, Eq) #} {#enum EventState {} deriving (Show, Eq, Ord) #} {#enum KeyboardKeyMask {} deriving (Show, Eq, Ord) #} {#enum MouseButtonsMask {} deriving (Show, Eq, Ord) #} kb_CommandState, kb_ControlState :: EventState #ifdef __APPLE__ kb_CommandState = Kb_MetaState kb_ControlState = Kb_CtrlState #else kb_CommandState = Kb_CtrlState kb_ControlState = Kb_MetaState #endif kb_KpLast :: SpecialKey kb_KpLast = Kb_F {#enum Damage {} deriving (Show, Eq, Ord) #} allDamages :: [Damage] allDamages = [ DamageChild , DamageExpose , DamageScroll , DamageOverlay , DamageUser1 , DamageUser2 , DamageAll ] {#enum Cursor {} deriving (Show, Eq, Ord) #} {#enum Mode {} deriving (Show,Eq,Ord) #} -- Fl_Mode Aliases single :: Mode single = ModeRGB newtype Modes = Modes [Mode] deriving (Show,Eq,Ord) allModes :: [Mode] allModes = [ ModeRGB, ModeIndex, ModeDouble, ModeAccum, ModeAlpha, ModeDepth, ModeStencil, ModeRGB8, ModeMultisample, ModeStereo, ModeFakeSingle #if FLTK_API_VERSION >= 10304 #ifdef GLSUPPORT , ModeOpenGL3 #endif #endif ] {#enum AlignType {} deriving (Show, Eq, Ord) #} 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_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 $ {#call pure unsafe fl_define_FL_ROUND_UP_BOXC #} defineRoundUpBox :: Boxtype defineRoundUpBox = toEnum defineRoundUpBox_ defineShadowBox_ :: (Num a) => a defineShadowBox_ = fromIntegral $ {#call pure unsafe fl_define_FL_SHADOW_BOXC #} defineShadowBox :: Boxtype defineShadowBox = toEnum defineShadowBox_ defineRoundedBox_ :: (Num a) => a defineRoundedBox_ = fromIntegral $ {#call pure unsafe fl_define_FL_ROUNDED_BOXC #} defineRoundedBox :: Boxtype defineRoundedBox = toEnum defineRoundedBox_ defineRflatBox_ :: (Num a) => a defineRflatBox_ = fromIntegral $ {#call pure unsafe fl_define_FL_RFLAT_BOXC #} defineRflatBox :: Boxtype defineRflatBox = toEnum defineRflatBox_ defineRshadowBox_ :: (Num a) => a defineRshadowBox_ = fromIntegral $ {#call pure unsafe fl_define_FL_RSHADOW_BOXC #} defineRshadowBox :: Boxtype defineRshadowBox = toEnum defineRshadowBox_ defineDiamondBox_ :: (Num a) => a defineDiamondBox_ = fromIntegral $ {#call pure unsafe fl_define_FL_DIAMOND_BOXC #} defineDiamondBox :: Boxtype defineDiamondBox = toEnum defineDiamondBox_ defineOvalBox_ :: (Num a) => a defineOvalBox_ = fromIntegral $ {#call pure unsafe fl_define_FL_OVAL_BOXC #} defineOvalBox :: Boxtype defineOvalBox = toEnum defineOvalBox_ definePlasticUpBox_ :: (Num a) => a definePlasticUpBox_ = fromIntegral $ {#call pure unsafe fl_define_FL_PLASTIC_UP_BOXC #} definePlasticUpBox :: Boxtype definePlasticUpBox = toEnum definePlasticUpBox_ defineGtkUpBox_ :: (Num a) => a defineGtkUpBox_ = fromIntegral $ {#call pure unsafe fl_define_FL_GTK_UP_BOXC #} defineGtkUpBox :: Boxtype defineGtkUpBox = toEnum defineGtkUpBox_ defineGleamUpBox_ :: (Num a ) => a defineGleamUpBox_ = fromIntegral $ {#call pure unsafe fl_define_FL_GLEAM_UP_BOXC #} defineShadowLabel_ :: (Num a) => a defineShadowLabel_ = fromIntegral $ {#call pure unsafe fl_define_FL_SHADOW_LABELC #} defineShadowLabel :: Labeltype defineShadowLabel = toEnum defineShadowLabel_ defineEngravedLabel_ :: (Num a) => a defineEngravedLabel_ = fromIntegral $ {#call pure unsafe fl_define_FL_ENGRAVED_LABELC #} defineEngravedLabel :: Labeltype defineEngravedLabel = toEnum defineEngravedLabel_ defineEmbossedLabel_ :: (Num a) => a defineEmbossedLabel_ = fromIntegral $ {#call pure unsafe fl_define_FL_EMBOSSED_LABELC #} 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) {#fun pure fl_inactiveC as inactive {cFromColor `Color' } -> `Color' cToColor#} {#fun pure fl_contrastC as contrast {cFromColor `Color',cFromColor `Color'} -> `Color' cToColor#} {#fun pure fl_color_averageC as color_average {cFromColor `Color', cFromColor `Color', realToFrac `Double'} -> `Color' cToColor#} {#fun pure fl_lighterC as lighter {cFromColor `Color'} -> `Color' cToColor#} {#fun pure fl_darkerC as darker {cFromColor `Color'} -> `Color' cToColor#} {#fun fl_rgb_color_with_rgbC as rgbColorWithRgb' {id `CUChar', id `CUChar', id `CUChar'} -> `CUInt' #} rgbColorWithRgb :: RGB -> IO Color rgbColorWithRgb (r,g,b) = rgbColorWithRgb' r g b >>= return . Color {#fun pure fl_rgb_color_with_grayscaleC as rgbColorWithGrayscale {castCharToCUChar `Char'} -> `Color' cToColor#} {#fun pure fl_gray_rampC as grayRamp {`Int'} -> `Color' cToColor#} {#fun pure fl_color_cubeC as colorCube {`Int',`Int',`Int'} -> `Color' cToColor#}