content: -- |This module provides ''skins'' for line-drawing widgets such as
  -- borders.  Different skins may be suitable for terminals with
  -- different capabilities, but they are provided for greatest
  -- flexibility.  Unicode skins must be used with care, as not all
  -- terminals support unicode characters (but most do, these days).
  module Graphics.Vty.Widgets.Skins
      ( Skin(..)
      , asciiSkin
      , unicodeSkin
      , unicodeBoldSkin
      , unicodeRoundedSkin
      )
  where
  
  -- Corners start from top left and go clockwise.  Intersections are:
  -- full, left, right, top, bottom.
  data Skin = Skin { skinCornerTL :: Char
                   , skinCornerTR :: Char
                   , skinCornerBR :: Char
                   , skinCornerBL :: Char
                   , skinIntersectionFull :: Char
                   , skinIntersectionL :: Char
                   , skinIntersectionR :: Char
                   , skinIntersectionT :: Char
                   , skinIntersectionB :: Char
                   , skinHorizontal :: Char
                   , skinVertical :: Char
                   }
  
  -- |An ASCII skin which will work in any terminal.
  asciiSkin :: Skin
  asciiSkin = Skin { skinCornerTL = '+'
                   , skinCornerTR = '+'
                   , skinCornerBR = '+'
                   , skinCornerBL = '+'
                   , skinIntersectionFull = '+'
                   , skinIntersectionL = '+'
                   , skinIntersectionR = '+'
                   , skinIntersectionT = '+'
                   , skinIntersectionB = '+'
                   , skinHorizontal = '-'
                   , skinVertical = '|'
                   }
  
  unicodeSkin :: Skin
  unicodeSkin = Skin { skinCornerTL = '┌'
                     , skinCornerTR = '┐'
                     , skinCornerBR = '┘'
                     , skinCornerBL = '└'
                     , skinIntersectionFull = '┼'
                     , skinIntersectionL = '├'
                     , skinIntersectionR = '┤'
                     , skinIntersectionT = '┬'
                     , skinIntersectionB = '┴'
                     , skinHorizontal = '─'
                     , skinVertical = '│'
                     }
  
  unicodeBoldSkin :: Skin
  unicodeBoldSkin = Skin { skinCornerTL = '┏'
                         , skinCornerTR = '┓'
                         , skinCornerBR = '┛'
                         , skinCornerBL = '┗'
                         , skinIntersectionFull = '╋'
                         , skinIntersectionL = '┣'
                         , skinIntersectionR = '┫'
                         , skinIntersectionT = '┳'
                         , skinIntersectionB = '┻'
                         , skinHorizontal = '━'
                         , skinVertical = '┃'
                         }
  
  unicodeRoundedSkin :: Skin
  unicodeRoundedSkin = Skin { skinCornerTL = '╭'
                            , skinCornerTR = '╮'
                            , skinCornerBR = '╯'
                            , skinCornerBL = '╰'
                            , skinIntersectionFull = '┼'
                            , skinIntersectionL = '├'
                            , skinIntersectionR = '┤'
                            , skinIntersectionT = '┬'
                            , skinIntersectionB = '┴'
                            , skinHorizontal = '─'
                            , skinVertical = '│'
                            }
  