module Graphics.Vty.UnicodeWidthTable.Types
  ( UnicodeWidthTable(..)
  , WidthTableRange(..)
  )
where

import Data.Word (Word8, Word32)

-- | A range of code points in a width table.
data WidthTableRange =
    WidthTableRange { rangeStart :: Word32
                    -- ^ The range's starting code point.
                    , rangeSize :: Word32
                    -- ^ The number of code points in the contiguous
                    -- range, beginning with the starting code point
                    -- ('rangeStart').
                    , rangeColumns :: Word8
                    -- ^ The terminal width, in columns, of all of the
                    -- characters corresponding to the code points in
                    -- this range.
                    }
    deriving (Eq, Show)

-- | A run-length-encoded table of Unicode character widths.
data UnicodeWidthTable =
    UnicodeWidthTable { unicodeWidthTableRanges :: [WidthTableRange]
                      -- ^ The ranges in the table.
                      }
    deriving (Show)