packages feed

termbox-bindings-hs-0.1.1: src/Termbox/Bindings/Hs/Internal/Attr.hs

module Termbox.Bindings.Hs.Internal.Attr
  ( Tb_attr
      ( Tb_attr,
        TB_BOLD,
        TB_REVERSE,
        TB_UNDERLINE
      ),
  )
where

import Data.Bits ((.|.))
import Data.Word (Word16)
import qualified Termbox.Bindings.C

-- | An attribute.
newtype Tb_attr
  = Tb_attr Word16
  deriving stock (Eq, Ord, Show)

instance Monoid Tb_attr where
  mempty =
    Tb_attr 0

instance Semigroup Tb_attr where
  Tb_attr cx <> Tb_attr cy =
    Tb_attr (cx .|. cy)

pattern TB_BOLD :: Tb_attr
pattern TB_BOLD <-
  ((== Tb_attr Termbox.Bindings.C._TB_BOLD) -> True)
  where
    TB_BOLD = Tb_attr Termbox.Bindings.C._TB_BOLD

pattern TB_REVERSE :: Tb_attr
pattern TB_REVERSE <-
  ((== Tb_attr Termbox.Bindings.C._TB_REVERSE) -> True)
  where
    TB_REVERSE = Tb_attr Termbox.Bindings.C._TB_REVERSE

pattern TB_UNDERLINE :: Tb_attr
pattern TB_UNDERLINE <-
  ((== Tb_attr Termbox.Bindings.C._TB_UNDERLINE) -> True)
  where
    TB_UNDERLINE = Tb_attr Termbox.Bindings.C._TB_UNDERLINE