module Ribosome.Data.FloatOptions where import qualified Data.Map as Map import Ribosome.Msgpack.Encode (MsgpackEncode(toMsgpack)) data FloatRelative = Editor | Win | Cursor deriving (FloatRelative -> FloatRelative -> Bool (FloatRelative -> FloatRelative -> Bool) -> (FloatRelative -> FloatRelative -> Bool) -> Eq FloatRelative forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: FloatRelative -> FloatRelative -> Bool $c/= :: FloatRelative -> FloatRelative -> Bool == :: FloatRelative -> FloatRelative -> Bool $c== :: FloatRelative -> FloatRelative -> Bool Eq, Int -> FloatRelative -> ShowS [FloatRelative] -> ShowS FloatRelative -> String (Int -> FloatRelative -> ShowS) -> (FloatRelative -> String) -> ([FloatRelative] -> ShowS) -> Show FloatRelative forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [FloatRelative] -> ShowS $cshowList :: [FloatRelative] -> ShowS show :: FloatRelative -> String $cshow :: FloatRelative -> String showsPrec :: Int -> FloatRelative -> ShowS $cshowsPrec :: Int -> FloatRelative -> ShowS Show) instance MsgpackEncode FloatRelative where toMsgpack :: FloatRelative -> Object toMsgpack FloatRelative Editor = Text -> Object forall a. MsgpackEncode a => a -> Object toMsgpack (Text "editor" :: Text) toMsgpack FloatRelative Win = Text -> Object forall a. MsgpackEncode a => a -> Object toMsgpack (Text "win" :: Text) toMsgpack FloatRelative Cursor = Text -> Object forall a. MsgpackEncode a => a -> Object toMsgpack (Text "cursor" :: Text) instance Default FloatRelative where def :: FloatRelative def = FloatRelative Cursor data FloatAnchor = NW | NE | SW | SE deriving (FloatAnchor -> FloatAnchor -> Bool (FloatAnchor -> FloatAnchor -> Bool) -> (FloatAnchor -> FloatAnchor -> Bool) -> Eq FloatAnchor forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: FloatAnchor -> FloatAnchor -> Bool $c/= :: FloatAnchor -> FloatAnchor -> Bool == :: FloatAnchor -> FloatAnchor -> Bool $c== :: FloatAnchor -> FloatAnchor -> Bool Eq, Int -> FloatAnchor -> ShowS [FloatAnchor] -> ShowS FloatAnchor -> String (Int -> FloatAnchor -> ShowS) -> (FloatAnchor -> String) -> ([FloatAnchor] -> ShowS) -> Show FloatAnchor forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [FloatAnchor] -> ShowS $cshowList :: [FloatAnchor] -> ShowS show :: FloatAnchor -> String $cshow :: FloatAnchor -> String showsPrec :: Int -> FloatAnchor -> ShowS $cshowsPrec :: Int -> FloatAnchor -> ShowS Show) instance MsgpackEncode FloatAnchor where toMsgpack :: FloatAnchor -> Object toMsgpack FloatAnchor NW = Text -> Object forall a. MsgpackEncode a => a -> Object toMsgpack (Text "NW" :: Text) toMsgpack FloatAnchor NE = Text -> Object forall a. MsgpackEncode a => a -> Object toMsgpack (Text "NE" :: Text) toMsgpack FloatAnchor SW = Text -> Object forall a. MsgpackEncode a => a -> Object toMsgpack (Text "SW" :: Text) toMsgpack FloatAnchor SE = Text -> Object forall a. MsgpackEncode a => a -> Object toMsgpack (Text "SE" :: Text) instance Default FloatAnchor where def :: FloatAnchor def = FloatAnchor NW data FloatOptions = FloatOptions { FloatOptions -> FloatRelative relative :: FloatRelative, FloatOptions -> Int width :: Int, FloatOptions -> Int height :: Int, FloatOptions -> Int row :: Int, FloatOptions -> Int col :: Int, FloatOptions -> Bool focusable :: Bool, FloatOptions -> FloatAnchor anchor :: FloatAnchor, FloatOptions -> Maybe (Int, Int) bufpos :: Maybe (Int, Int) } deriving (FloatOptions -> FloatOptions -> Bool (FloatOptions -> FloatOptions -> Bool) -> (FloatOptions -> FloatOptions -> Bool) -> Eq FloatOptions forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: FloatOptions -> FloatOptions -> Bool $c/= :: FloatOptions -> FloatOptions -> Bool == :: FloatOptions -> FloatOptions -> Bool $c== :: FloatOptions -> FloatOptions -> Bool Eq, Int -> FloatOptions -> ShowS [FloatOptions] -> ShowS FloatOptions -> String (Int -> FloatOptions -> ShowS) -> (FloatOptions -> String) -> ([FloatOptions] -> ShowS) -> Show FloatOptions forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [FloatOptions] -> ShowS $cshowList :: [FloatOptions] -> ShowS show :: FloatOptions -> String $cshow :: FloatOptions -> String showsPrec :: Int -> FloatOptions -> ShowS $cshowsPrec :: Int -> FloatOptions -> ShowS Show, (forall x. FloatOptions -> Rep FloatOptions x) -> (forall x. Rep FloatOptions x -> FloatOptions) -> Generic FloatOptions forall x. Rep FloatOptions x -> FloatOptions forall x. FloatOptions -> Rep FloatOptions x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep FloatOptions x -> FloatOptions $cfrom :: forall x. FloatOptions -> Rep FloatOptions x Generic) instance MsgpackEncode FloatOptions where toMsgpack :: FloatOptions -> Object toMsgpack FloatOptions {Bool Int Maybe (Int, Int) FloatAnchor FloatRelative bufpos :: Maybe (Int, Int) anchor :: FloatAnchor focusable :: Bool col :: Int row :: Int height :: Int width :: Int relative :: FloatRelative $sel:bufpos:FloatOptions :: FloatOptions -> Maybe (Int, Int) $sel:anchor:FloatOptions :: FloatOptions -> FloatAnchor $sel:focusable:FloatOptions :: FloatOptions -> Bool $sel:col:FloatOptions :: FloatOptions -> Int $sel:row:FloatOptions :: FloatOptions -> Int $sel:height:FloatOptions :: FloatOptions -> Int $sel:width:FloatOptions :: FloatOptions -> Int $sel:relative:FloatOptions :: FloatOptions -> FloatRelative ..} = Map Text Object -> Object forall a. MsgpackEncode a => a -> Object toMsgpack (Map Text Object -> Object) -> Map Text Object -> Object forall a b. (a -> b) -> a -> b $ [(Text, Object)] -> Map Text Object forall k a. Ord k => [(k, a)] -> Map k a Map.fromList ([(Text, Object)] simple [(Text, Object)] -> [(Text, Object)] -> [(Text, Object)] forall a. [a] -> [a] -> [a] ++ [(Text, Object)] -> ((Int, Int) -> [(Text, Object)]) -> Maybe (Int, Int) -> [(Text, Object)] forall b a. b -> (a -> b) -> Maybe a -> b maybe [] ((Text, Object) -> [(Text, Object)] forall (f :: * -> *) a. Applicative f => a -> f a pure ((Text, Object) -> [(Text, Object)]) -> ((Int, Int) -> (Text, Object)) -> (Int, Int) -> [(Text, Object)] forall b c a. (b -> c) -> (a -> b) -> a -> c . (Text "bufpos",) (Object -> (Text, Object)) -> ((Int, Int) -> Object) -> (Int, Int) -> (Text, Object) forall b c a. (b -> c) -> (a -> b) -> a -> c . (Int, Int) -> Object forall a. MsgpackEncode a => a -> Object toMsgpack) Maybe (Int, Int) bufpos) where simple :: [(Text, Object)] simple = [ (Text "relative" :: Text, FloatRelative -> Object forall a. MsgpackEncode a => a -> Object toMsgpack FloatRelative relative), (Text "width", Int -> Object forall a. MsgpackEncode a => a -> Object toMsgpack Int width), (Text "height", Int -> Object forall a. MsgpackEncode a => a -> Object toMsgpack Int height), (Text "row", Int -> Object forall a. MsgpackEncode a => a -> Object toMsgpack Int row), (Text "col", Int -> Object forall a. MsgpackEncode a => a -> Object toMsgpack Int col), (Text "focusable", Bool -> Object forall a. MsgpackEncode a => a -> Object toMsgpack Bool focusable), (Text "anchor", FloatAnchor -> Object forall a. MsgpackEncode a => a -> Object toMsgpack FloatAnchor anchor), (Text "relative", FloatRelative -> Object forall a. MsgpackEncode a => a -> Object toMsgpack FloatRelative relative) ] instance Default FloatOptions where def :: FloatOptions def = FloatRelative -> Int -> Int -> Int -> Int -> Bool -> FloatAnchor -> Maybe (Int, Int) -> FloatOptions FloatOptions FloatRelative forall a. Default a => a def Int 30 Int 10 Int 1 Int 1 Bool False FloatAnchor forall a. Default a => a def Maybe (Int, Int) forall a. Default a => a def