termbox 2.0.0 → 2.0.0.1
raw patch · 7 files changed
+77/−62 lines, 7 filesdep ~basedep ~termbox-bindings-hsPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, termbox-bindings-hs
API changes (from Hackage documentation)
Files
- CHANGELOG.md +4/−0
- src/Termbox/Internal/Color.hs +17/−15
- src/Termbox/Internal/Main.hs +9/−9
- src/Termbox/Internal/Mouse.hs +17/−8
- src/Termbox/Internal/Scene.hs +1/−1
- src/Termbox/Internal/Style.hs +26/−26
- termbox.cabal +3/−3
CHANGELOG.md view
@@ -1,3 +1,7 @@+## [2.0.0.1] - November 14, 2023++- Update to `termbox-bindings-hs-1.0.0`+ ## [2.0.0] - November 5, 2023 - Overhaul `Cell`+`Scene` API; now it's `Image`+`Scene`
src/Termbox/Internal/Color.hs view
@@ -33,47 +33,49 @@ -- * Miscellaneous colors, such as @'color' 33@. -- * Monochrome colors that range from black (@'gray' 0@) to white (@'gray' 23@). newtype Color- = Color Tb_color+ = Color Tb_attrs deriving newtype (Eq) +-- These intentionally don't use e.g. TB_RED, 'cause they're all off-by-one in TB_OUTPUT_256+ defaultColor :: Color defaultColor =- Color 0+ Color (Tb_attrs 0) red :: Color red =- Color 1+ Color (Tb_attrs 1) green :: Color green =- Color 2+ Color (Tb_attrs 2) yellow :: Color yellow =- Color 3+ Color (Tb_attrs 3) blue :: Color blue =- Color 4+ Color (Tb_attrs 4) magenta :: Color magenta =- Color 5+ Color (Tb_attrs 5) cyan :: Color cyan =- Color 6+ Color (Tb_attrs 6) white :: Color white =- Color 7+ Color (Tb_attrs 7) -- | Make a basic color bright. bright :: Color -> Color bright = coerce bright_ -bright_ :: Tb_color -> Tb_color+bright_ :: Word16 -> Word16 bright_ c | c <= 7 = c + 8 | otherwise = c@@ -97,14 +99,14 @@ = MaybeColor Color deriving stock (Eq) -unMaybeColor :: MaybeColor -> Tb_color-unMaybeColor (MaybeColor (Color (Tb_color c)))- | c == maxBound = TB_DEFAULT- | otherwise = Tb_color c+unMaybeColor :: MaybeColor -> Tb_attrs+unMaybeColor c+ | c == nothingColor = _TB_DEFAULT+ | otherwise = coerce @_ @Tb_attrs c nothingColor :: MaybeColor nothingColor =- MaybeColor (Color (Tb_color maxBound))+ coerce @Word16 maxBound justColor :: Color -> MaybeColor justColor =
src/Termbox/Internal/Main.hs view
@@ -7,7 +7,7 @@ where import Control.Exception (Exception, mask, onException)-import qualified Termbox.Bindings.Hs+import Termbox.Bindings.Hs -- | @termbox@ initialization errors. data InitError@@ -33,19 +33,19 @@ -- If @initialize@ succeeds, it must be paired with a call to 'finalize'. initialize :: IO (Either InitError ()) initialize =- Termbox.Bindings.Hs.tb_init >>= \case+ tb_init >>= \case Left err -> (pure . Left) case err of- Termbox.Bindings.Hs.TB_EFAILED_TO_OPEN_TTY -> FailedToOpenTTY- Termbox.Bindings.Hs.TB_EPIPE_TRAP_ERROR -> PipeTrapError- Termbox.Bindings.Hs.TB_EUNSUPPORTED_TERMINAL -> UnsupportedTerminal+ TB_EFAILED_TO_OPEN_TTY -> FailedToOpenTTY+ TB_EPIPE_TRAP_ERROR -> PipeTrapError+ TB_EUNSUPPORTED_TERMINAL -> UnsupportedTerminal Right () -> do- _ <- Termbox.Bindings.Hs.tb_select_input_mode Termbox.Bindings.Hs.TB_INPUT_MOUSE- _ <- Termbox.Bindings.Hs.tb_select_output_mode Termbox.Bindings.Hs.TB_OUTPUT_256+ tb_select_input_mode _TB_INPUT_MOUSE+ tb_select_output_mode TB_OUTPUT_256 pure (Right ()) -- | Shut down a @termbox@ program. finalize :: IO () finalize = do- _ <- Termbox.Bindings.Hs.tb_select_output_mode Termbox.Bindings.Hs.TB_OUTPUT_NORMAL- Termbox.Bindings.Hs.tb_shutdown+ tb_select_output_mode TB_OUTPUT_NORMAL+ tb_shutdown
src/Termbox/Internal/Mouse.hs view
@@ -13,7 +13,16 @@ where import GHC.Generics (Generic)-import qualified Termbox.Bindings.Hs+import Termbox.Bindings.Hs+ ( Tb_key+ ( TB_KEY_MOUSE_LEFT,+ TB_KEY_MOUSE_MIDDLE,+ TB_KEY_MOUSE_RELEASE,+ TB_KEY_MOUSE_RIGHT,+ TB_KEY_MOUSE_WHEEL_DOWN,+ TB_KEY_MOUSE_WHEEL_UP+ ),+ ) import Termbox.Internal.Pos (Pos) -- | A mouse event.@@ -25,7 +34,7 @@ -- | A mouse button. newtype MouseButton- = MouseButton Termbox.Bindings.Hs.Tb_key+ = MouseButton Tb_key deriving stock (Eq, Ord) instance Show MouseButton where@@ -38,21 +47,21 @@ WheelUp -> "WheelUp" pattern LeftClick :: MouseButton-pattern LeftClick = MouseButton Termbox.Bindings.Hs.TB_KEY_MOUSE_LEFT+pattern LeftClick = MouseButton TB_KEY_MOUSE_LEFT pattern MiddleClick :: MouseButton-pattern MiddleClick = MouseButton Termbox.Bindings.Hs.TB_KEY_MOUSE_MIDDLE+pattern MiddleClick = MouseButton TB_KEY_MOUSE_MIDDLE pattern RightClick :: MouseButton-pattern RightClick = MouseButton Termbox.Bindings.Hs.TB_KEY_MOUSE_RIGHT+pattern RightClick = MouseButton TB_KEY_MOUSE_RIGHT pattern ReleaseClick :: MouseButton-pattern ReleaseClick = MouseButton Termbox.Bindings.Hs.TB_KEY_MOUSE_RELEASE+pattern ReleaseClick = MouseButton TB_KEY_MOUSE_RELEASE pattern WheelDown :: MouseButton-pattern WheelDown = MouseButton Termbox.Bindings.Hs.TB_KEY_MOUSE_WHEEL_DOWN+pattern WheelDown = MouseButton TB_KEY_MOUSE_WHEEL_DOWN pattern WheelUp :: MouseButton-pattern WheelUp = MouseButton Termbox.Bindings.Hs.TB_KEY_MOUSE_WHEEL_UP+pattern WheelUp = MouseButton TB_KEY_MOUSE_WHEEL_UP {-# COMPLETE LeftClick, MiddleClick, ReleaseClick, RightClick, WheelDown, WheelUp #-}
src/Termbox/Internal/Scene.hs view
@@ -27,7 +27,7 @@ render :: Scene -> IO () render Scene {sceneFill, sceneDraw} = do tb_set_cursor Nothing- tb_set_clear_attributes TB_DEFAULT (unMaybeColor sceneFill)+ tb_set_clear_attributes _TB_DEFAULT (unMaybeColor sceneFill) tb_clear sceneDraw sceneFill tb_present
src/Termbox/Internal/Style.hs view
@@ -15,8 +15,8 @@ import Termbox.Internal.Color (Color, MaybeColor, justColor, nothingColor, unMaybeColor) data Style = Style- { foreground :: {-# UNPACK #-} !ColorAndAttr,- background :: {-# UNPACK #-} !ColorAndAttr+ { foreground :: {-# UNPACK #-} !ColorAndAttrs,+ background :: {-# UNPACK #-} !ColorAndAttrs } instance Monoid Style where@@ -28,27 +28,27 @@ Style a1 b1 <> Style a2 b2 = Style (a2 <> a1) (b2 <> b1) --- Render a style as a foreground `tb_color`.-asForeground :: Style -> Tb_color+-- Render a style as a foreground `Tb_attrs`.+asForeground :: Style -> Tb_attrs asForeground Style {foreground} = renderColorAndAttr foreground --- Render a style as a background `tb_color`.-asBackground :: Style -> Tb_color+-- Render a style as a background `Tb_attrs`.+asBackground :: Style -> Tb_attrs asBackground Style {background} = renderColorAndAttr background -onlyForeground :: ColorAndAttr -> Style+onlyForeground :: ColorAndAttrs -> Style onlyForeground style = mempty {foreground = style} -onlyBackground :: ColorAndAttr -> Style+onlyBackground :: ColorAndAttrs -> Style onlyBackground style = mempty {background = style} maybeFill :: MaybeColor -> Style maybeFill color =- onlyBackground ColorAndAttr {color, attr = mempty}+ onlyBackground ColorAndAttrs {color, attrs = mempty} fg :: Color -> Style fg =@@ -60,40 +60,40 @@ bold :: Style bold =- onlyForeground (onlyAttr TB_BOLD)+ onlyForeground (onlyAttr _TB_BOLD) underline :: Style underline =- onlyForeground (onlyAttr TB_UNDERLINE)+ onlyForeground (onlyAttr _TB_UNDERLINE) blink :: Style blink =- onlyBackground (onlyAttr TB_BOLD)+ onlyBackground (onlyAttr _TB_BOLD) -data ColorAndAttr = ColorAndAttr+data ColorAndAttrs = ColorAndAttrs { color :: {-# UNPACK #-} !MaybeColor,- attr :: {-# UNPACK #-} !Tb_attr+ attrs :: {-# UNPACK #-} !Tb_attrs } -instance Monoid ColorAndAttr where+instance Monoid ColorAndAttrs where mempty =- ColorAndAttr nothingColor mempty+ ColorAndAttrs nothingColor mempty -- right-biased-instance Semigroup ColorAndAttr where- ColorAndAttr color1 attr1 <> ColorAndAttr color2 attr2 =- ColorAndAttr+instance Semigroup ColorAndAttrs where+ ColorAndAttrs color1 attr1 <> ColorAndAttrs color2 attr2 =+ ColorAndAttrs (if color2 == nothingColor then color1 else color2) (attr1 <> attr2) -renderColorAndAttr :: ColorAndAttr -> Tb_color-renderColorAndAttr ColorAndAttr {color, attr} =- tb_attr attr (unMaybeColor color)+renderColorAndAttr :: ColorAndAttrs -> Tb_attrs+renderColorAndAttr ColorAndAttrs {color, attrs} =+ attrs <> unMaybeColor color -onlyColor :: Color -> ColorAndAttr+onlyColor :: Color -> ColorAndAttrs onlyColor color = mempty {color = justColor color} -onlyAttr :: Tb_attr -> ColorAndAttr-onlyAttr attr =- mempty {attr}+onlyAttr :: Tb_attrs -> ColorAndAttrs+onlyAttr attrs =+ mempty {attrs}
termbox.cabal view
@@ -18,14 +18,14 @@ . * @<https://hackage.haskell.org/package/termbox-bindings-hs termbox-bindings-hs>@, direct Haskell-flavored bindings. * @<https://hackage.haskell.org/package/termbox-bindings-c termbox-bindings-c>@, direct C-flavored bindings.-homepage: https://github.com/termbox/termbox-haskell+homepage: https://github.com/awkward-squad/termbox license: BSD-3-Clause license-file: LICENSE maintainer: Mitchell Rosen <mitchellwrosen@gmail.com>, Travis Staton <hello@travisstaton.com> name: termbox synopsis: termbox tested-with: GHC == 9.4.7, GHC == 9.6.3, GHC == 9.8.1-version: 2.0.0+version: 2.0.0.1 extra-doc-files: CHANGELOG.md@@ -80,7 +80,7 @@ import: component build-depends: base ^>= 4.13 || ^>= 4.14 || ^>= 4.15 || ^>= 4.16 || ^>= 4.17 || ^>= 4.18 || ^>= 4.19,- termbox-bindings-hs ^>= 0.1.1,+ termbox-bindings-hs ^>= 1.0.0, exposed-modules: Termbox hs-source-dirs: src other-modules: