vty 4.7.3 → 4.7.4
raw patch · 5 files changed
+325/−49 lines, 5 files
Files
- CHANGELOG +3/−0
- src/Graphics/Vty/Attributes.hs +7/−48
- src/Graphics/Vty/Attributes/Color.hs +51/−0
- src/Graphics/Vty/Attributes/Color240.hs +261/−0
- vty.cabal +3/−1
CHANGELOG view
@@ -1,3 +1,6 @@+4.7.4+ * backported rgb_color from 5.0. Maps from 8 bit integer RGB to Color+ 4.7.0.0 * API changes: * Added Graphics.Vty.Image.crop: Ensure an image is no larger than the specified size.
src/Graphics/Vty/Attributes.hs view
@@ -34,9 +34,15 @@ -- Then the foreground color encoded into 8 bits. -- Then the background color encoded into 8 bits. ---module Graphics.Vty.Attributes+module Graphics.Vty.Attributes ( module Graphics.Vty.Attributes+ , module Graphics.Vty.Attributes.Color+ , module Graphics.Vty.Attributes.Color240+ ) where +import Graphics.Vty.Attributes.Color+import Graphics.Vty.Attributes.Color240+ import Data.Bits import Data.Monoid import Data.Word@@ -90,53 +96,6 @@ mappend ( SetTo _v ) Default = Default mappend ( SetTo v ) KeepCurrent = SetTo v mappend ( SetTo _ ) ( SetTo v ) = SetTo v---- | Abstract data type representing a color.--- --- Currently the foreground and background color are specified as points in either a:------ * 16 color palette. Where the first 8 colors are equal to the 8 colors of the ISO 6429 (ANSI) 8--- color palette and the second 8 colors are bright/vivid versions of the first 8 colors.------ * 240 color palette. This palette is a regular sampling of the full RGB colorspace. --- --- The 8 ISO 6429 (ANSI) colors are as follows:------ 0. black------ 1. red------ 2. green------ 3. yellow------ 4. blue------ 5. magenta------ 6. cyan------ 7. white------ The mapping from points in the 240 color palette to colors actually displayable by the terminal--- depends on the number of colors the terminal claims to support. Which is usually determined by--- the terminfo "colors" property. If this property is not being accurately reported then the color--- reproduction will be incorrect.------ If the terminal reports <= 16 colors then the 240 color palette points are only mapped to the 8--- color pallete. I'm not sure of the RGB points for the "bright" colors which is why they are not--- addressable via the 240 color palette. ------ If the terminal reports > 16 colors then the 240 color palette points are mapped to the nearest--- points in a ("color count" - 16) subsampling of the 240 color palette.------ All of this assumes the terminals are behaving similarly to xterm and rxvt when handling colors.--- And that the individual colors have not been remapped by the user. There may be a way to verify--- this through terminfo but I don't know it.------ Seriously, terminal color support is INSANE.-data Color = ISOColor !Word8 | Color240 !Word8- deriving ( Eq, Show ) -- | Standard 8-color ANSI terminal color codes. black, red, green, yellow, blue, magenta, cyan, white :: Color
+ src/Graphics/Vty/Attributes/Color.hs view
@@ -0,0 +1,51 @@+module Graphics.Vty.Attributes.Color where+import Data.Word++-- | Abstract data type representing a color.+-- +-- Currently the foreground and background color are specified as points in either a:+--+-- * 16 color palette. Where the first 8 colors are equal to the 8 colors of the ISO 6429 (ANSI) 8+-- color palette and the second 8 colors are bright/vivid versions of the first 8 colors.+--+-- * 240 color palette. This palette is a regular sampling of the full RGB colorspace for the first+-- 224 colors. The remaining 16 colors is a greyscale palette.+-- +-- The 8 ISO 6429 (ANSI) colors are as follows:+--+-- 0. black+--+-- 1. red+--+-- 2. green+--+-- 3. yellow+--+-- 4. blue+--+-- 5. magenta+--+-- 6. cyan+--+-- 7. white+--+-- The mapping from points in the 240 color palette to colors actually displayable by the terminal+-- depends on the number of colors the terminal claims to support. Which is usually determined by+-- the terminfo "colors" property. If this property is not being accurately reported then the color+-- reproduction will be incorrect.+--+-- If the terminal reports <= 16 colors then the 240 color palette points are only mapped to the 8+-- color pallete. I'm not sure of the RGB points for the "bright" colors which is why they are not+-- addressable via the 240 color palette. +--+-- If the terminal reports > 16 colors then the 240 color palette points are mapped to the nearest+-- points in a ("color count" - 16) subsampling of the 240 color palette.+--+-- All of this assumes the terminals are behaving similarly to xterm and rxvt when handling colors.+-- And that the individual colors have not been remapped by the user. There may be a way to verify+-- this through terminfo but I don't know it.+--+-- Seriously, terminal color support is INSANE.+data Color = ISOColor !Word8 | Color240 !Word8+ deriving ( Eq, Show )+
+ src/Graphics/Vty/Attributes/Color240.hs view
@@ -0,0 +1,261 @@+{-+ - This header file was generated by ./256colres.pl+ -}+module Graphics.Vty.Attributes.Color240 where++import Graphics.Vty.Attributes.Color++import Text.Printf++-- | 8 bit RGB color to 240 color palette.+--+-- generated from 256colres.pl which is forked from xterm 256colres.pl+-- todo: all values get clamped high.+rgb_color :: Integral i => i -> i -> i -> Color+rgb_color r g b+ | r < 0 && g < 0 && b < 0 = error "rgb_color with negative color component intensity"+ | r == 8 && g == 8 && b == 8 = Color240 216+ | r == 18 && g == 18 && b == 18 = Color240 217+ | r == 28 && g == 28 && b == 28 = Color240 218+ | r == 38 && g == 38 && b == 38 = Color240 219+ | r == 48 && g == 48 && b == 48 = Color240 220+ | r == 58 && g == 58 && b == 58 = Color240 221+ | r == 68 && g == 68 && b == 68 = Color240 222+ | r == 78 && g == 78 && b == 78 = Color240 223+ | r == 88 && g == 88 && b == 88 = Color240 224+ | r == 98 && g == 98 && b == 98 = Color240 225+ | r == 108 && g == 108 && b == 108 = Color240 226+ | r == 118 && g == 118 && b == 118 = Color240 227+ | r == 128 && g == 128 && b == 128 = Color240 228+ | r == 138 && g == 138 && b == 138 = Color240 229+ | r == 148 && g == 148 && b == 148 = Color240 230+ | r == 158 && g == 158 && b == 158 = Color240 231+ | r == 168 && g == 168 && b == 168 = Color240 232+ | r == 178 && g == 178 && b == 178 = Color240 233+ | r == 188 && g == 188 && b == 188 = Color240 234+ | r == 198 && g == 198 && b == 198 = Color240 235+ | r == 208 && g == 208 && b == 208 = Color240 236+ | r == 218 && g == 218 && b == 218 = Color240 237+ | r == 228 && g == 228 && b == 228 = Color240 238+ | r == 238 && g == 238 && b == 238 = Color240 239+ | r <= 0 && g <= 0 && b <= 0 = Color240 0+ | r <= 0 && g <= 0 && b <= 95 = Color240 1+ | r <= 0 && g <= 0 && b <= 135 = Color240 2+ | r <= 0 && g <= 0 && b <= 175 = Color240 3+ | r <= 0 && g <= 0 && b <= 215 = Color240 4+ | r <= 0 && g <= 0 && b <= 255 = Color240 5+ | r <= 0 && g <= 95 && b <= 0 = Color240 6+ | r <= 0 && g <= 95 && b <= 95 = Color240 7+ | r <= 0 && g <= 95 && b <= 135 = Color240 8+ | r <= 0 && g <= 95 && b <= 175 = Color240 9+ | r <= 0 && g <= 95 && b <= 215 = Color240 10+ | r <= 0 && g <= 95 && b <= 255 = Color240 11+ | r <= 0 && g <= 135 && b <= 0 = Color240 12+ | r <= 0 && g <= 135 && b <= 95 = Color240 13+ | r <= 0 && g <= 135 && b <= 135 = Color240 14+ | r <= 0 && g <= 135 && b <= 175 = Color240 15+ | r <= 0 && g <= 135 && b <= 215 = Color240 16+ | r <= 0 && g <= 135 && b <= 255 = Color240 17+ | r <= 0 && g <= 175 && b <= 0 = Color240 18+ | r <= 0 && g <= 175 && b <= 95 = Color240 19+ | r <= 0 && g <= 175 && b <= 135 = Color240 20+ | r <= 0 && g <= 175 && b <= 175 = Color240 21+ | r <= 0 && g <= 175 && b <= 215 = Color240 22+ | r <= 0 && g <= 175 && b <= 255 = Color240 23+ | r <= 0 && g <= 215 && b <= 0 = Color240 24+ | r <= 0 && g <= 215 && b <= 95 = Color240 25+ | r <= 0 && g <= 215 && b <= 135 = Color240 26+ | r <= 0 && g <= 215 && b <= 175 = Color240 27+ | r <= 0 && g <= 215 && b <= 215 = Color240 28+ | r <= 0 && g <= 215 && b <= 255 = Color240 29+ | r <= 0 && g <= 255 && b <= 0 = Color240 30+ | r <= 0 && g <= 255 && b <= 95 = Color240 31+ | r <= 0 && g <= 255 && b <= 135 = Color240 32+ | r <= 0 && g <= 255 && b <= 175 = Color240 33+ | r <= 0 && g <= 255 && b <= 215 = Color240 34+ | r <= 0 && g <= 255 && b <= 255 = Color240 35+ | r <= 95 && g <= 0 && b <= 0 = Color240 36+ | r <= 95 && g <= 0 && b <= 95 = Color240 37+ | r <= 95 && g <= 0 && b <= 135 = Color240 38+ | r <= 95 && g <= 0 && b <= 175 = Color240 39+ | r <= 95 && g <= 0 && b <= 215 = Color240 40+ | r <= 95 && g <= 0 && b <= 255 = Color240 41+ | r <= 95 && g <= 95 && b <= 0 = Color240 42+ | r <= 95 && g <= 95 && b <= 95 = Color240 43+ | r <= 95 && g <= 95 && b <= 135 = Color240 44+ | r <= 95 && g <= 95 && b <= 175 = Color240 45+ | r <= 95 && g <= 95 && b <= 215 = Color240 46+ | r <= 95 && g <= 95 && b <= 255 = Color240 47+ | r <= 95 && g <= 135 && b <= 0 = Color240 48+ | r <= 95 && g <= 135 && b <= 95 = Color240 49+ | r <= 95 && g <= 135 && b <= 135 = Color240 50+ | r <= 95 && g <= 135 && b <= 175 = Color240 51+ | r <= 95 && g <= 135 && b <= 215 = Color240 52+ | r <= 95 && g <= 135 && b <= 255 = Color240 53+ | r <= 95 && g <= 175 && b <= 0 = Color240 54+ | r <= 95 && g <= 175 && b <= 95 = Color240 55+ | r <= 95 && g <= 175 && b <= 135 = Color240 56+ | r <= 95 && g <= 175 && b <= 175 = Color240 57+ | r <= 95 && g <= 175 && b <= 215 = Color240 58+ | r <= 95 && g <= 175 && b <= 255 = Color240 59+ | r <= 95 && g <= 215 && b <= 0 = Color240 60+ | r <= 95 && g <= 215 && b <= 95 = Color240 61+ | r <= 95 && g <= 215 && b <= 135 = Color240 62+ | r <= 95 && g <= 215 && b <= 175 = Color240 63+ | r <= 95 && g <= 215 && b <= 215 = Color240 64+ | r <= 95 && g <= 215 && b <= 255 = Color240 65+ | r <= 95 && g <= 255 && b <= 0 = Color240 66+ | r <= 95 && g <= 255 && b <= 95 = Color240 67+ | r <= 95 && g <= 255 && b <= 135 = Color240 68+ | r <= 95 && g <= 255 && b <= 175 = Color240 69+ | r <= 95 && g <= 255 && b <= 215 = Color240 70+ | r <= 95 && g <= 255 && b <= 255 = Color240 71+ | r <= 135 && g <= 0 && b <= 0 = Color240 72+ | r <= 135 && g <= 0 && b <= 95 = Color240 73+ | r <= 135 && g <= 0 && b <= 135 = Color240 74+ | r <= 135 && g <= 0 && b <= 175 = Color240 75+ | r <= 135 && g <= 0 && b <= 215 = Color240 76+ | r <= 135 && g <= 0 && b <= 255 = Color240 77+ | r <= 135 && g <= 95 && b <= 0 = Color240 78+ | r <= 135 && g <= 95 && b <= 95 = Color240 79+ | r <= 135 && g <= 95 && b <= 135 = Color240 80+ | r <= 135 && g <= 95 && b <= 175 = Color240 81+ | r <= 135 && g <= 95 && b <= 215 = Color240 82+ | r <= 135 && g <= 95 && b <= 255 = Color240 83+ | r <= 135 && g <= 135 && b <= 0 = Color240 84+ | r <= 135 && g <= 135 && b <= 95 = Color240 85+ | r <= 135 && g <= 135 && b <= 135 = Color240 86+ | r <= 135 && g <= 135 && b <= 175 = Color240 87+ | r <= 135 && g <= 135 && b <= 215 = Color240 88+ | r <= 135 && g <= 135 && b <= 255 = Color240 89+ | r <= 135 && g <= 175 && b <= 0 = Color240 90+ | r <= 135 && g <= 175 && b <= 95 = Color240 91+ | r <= 135 && g <= 175 && b <= 135 = Color240 92+ | r <= 135 && g <= 175 && b <= 175 = Color240 93+ | r <= 135 && g <= 175 && b <= 215 = Color240 94+ | r <= 135 && g <= 175 && b <= 255 = Color240 95+ | r <= 135 && g <= 215 && b <= 0 = Color240 96+ | r <= 135 && g <= 215 && b <= 95 = Color240 97+ | r <= 135 && g <= 215 && b <= 135 = Color240 98+ | r <= 135 && g <= 215 && b <= 175 = Color240 99+ | r <= 135 && g <= 215 && b <= 215 = Color240 100+ | r <= 135 && g <= 215 && b <= 255 = Color240 101+ | r <= 135 && g <= 255 && b <= 0 = Color240 102+ | r <= 135 && g <= 255 && b <= 95 = Color240 103+ | r <= 135 && g <= 255 && b <= 135 = Color240 104+ | r <= 135 && g <= 255 && b <= 175 = Color240 105+ | r <= 135 && g <= 255 && b <= 215 = Color240 106+ | r <= 135 && g <= 255 && b <= 255 = Color240 107+ | r <= 175 && g <= 0 && b <= 0 = Color240 108+ | r <= 175 && g <= 0 && b <= 95 = Color240 109+ | r <= 175 && g <= 0 && b <= 135 = Color240 110+ | r <= 175 && g <= 0 && b <= 175 = Color240 111+ | r <= 175 && g <= 0 && b <= 215 = Color240 112+ | r <= 175 && g <= 0 && b <= 255 = Color240 113+ | r <= 175 && g <= 95 && b <= 0 = Color240 114+ | r <= 175 && g <= 95 && b <= 95 = Color240 115+ | r <= 175 && g <= 95 && b <= 135 = Color240 116+ | r <= 175 && g <= 95 && b <= 175 = Color240 117+ | r <= 175 && g <= 95 && b <= 215 = Color240 118+ | r <= 175 && g <= 95 && b <= 255 = Color240 119+ | r <= 175 && g <= 135 && b <= 0 = Color240 120+ | r <= 175 && g <= 135 && b <= 95 = Color240 121+ | r <= 175 && g <= 135 && b <= 135 = Color240 122+ | r <= 175 && g <= 135 && b <= 175 = Color240 123+ | r <= 175 && g <= 135 && b <= 215 = Color240 124+ | r <= 175 && g <= 135 && b <= 255 = Color240 125+ | r <= 175 && g <= 175 && b <= 0 = Color240 126+ | r <= 175 && g <= 175 && b <= 95 = Color240 127+ | r <= 175 && g <= 175 && b <= 135 = Color240 128+ | r <= 175 && g <= 175 && b <= 175 = Color240 129+ | r <= 175 && g <= 175 && b <= 215 = Color240 130+ | r <= 175 && g <= 175 && b <= 255 = Color240 131+ | r <= 175 && g <= 215 && b <= 0 = Color240 132+ | r <= 175 && g <= 215 && b <= 95 = Color240 133+ | r <= 175 && g <= 215 && b <= 135 = Color240 134+ | r <= 175 && g <= 215 && b <= 175 = Color240 135+ | r <= 175 && g <= 215 && b <= 215 = Color240 136+ | r <= 175 && g <= 215 && b <= 255 = Color240 137+ | r <= 175 && g <= 255 && b <= 0 = Color240 138+ | r <= 175 && g <= 255 && b <= 95 = Color240 139+ | r <= 175 && g <= 255 && b <= 135 = Color240 140+ | r <= 175 && g <= 255 && b <= 175 = Color240 141+ | r <= 175 && g <= 255 && b <= 215 = Color240 142+ | r <= 175 && g <= 255 && b <= 255 = Color240 143+ | r <= 215 && g <= 0 && b <= 0 = Color240 144+ | r <= 215 && g <= 0 && b <= 95 = Color240 145+ | r <= 215 && g <= 0 && b <= 135 = Color240 146+ | r <= 215 && g <= 0 && b <= 175 = Color240 147+ | r <= 215 && g <= 0 && b <= 215 = Color240 148+ | r <= 215 && g <= 0 && b <= 255 = Color240 149+ | r <= 215 && g <= 95 && b <= 0 = Color240 150+ | r <= 215 && g <= 95 && b <= 95 = Color240 151+ | r <= 215 && g <= 95 && b <= 135 = Color240 152+ | r <= 215 && g <= 95 && b <= 175 = Color240 153+ | r <= 215 && g <= 95 && b <= 215 = Color240 154+ | r <= 215 && g <= 95 && b <= 255 = Color240 155+ | r <= 215 && g <= 135 && b <= 0 = Color240 156+ | r <= 215 && g <= 135 && b <= 95 = Color240 157+ | r <= 215 && g <= 135 && b <= 135 = Color240 158+ | r <= 215 && g <= 135 && b <= 175 = Color240 159+ | r <= 215 && g <= 135 && b <= 215 = Color240 160+ | r <= 215 && g <= 135 && b <= 255 = Color240 161+ | r <= 215 && g <= 175 && b <= 0 = Color240 162+ | r <= 215 && g <= 175 && b <= 95 = Color240 163+ | r <= 215 && g <= 175 && b <= 135 = Color240 164+ | r <= 215 && g <= 175 && b <= 175 = Color240 165+ | r <= 215 && g <= 175 && b <= 215 = Color240 166+ | r <= 215 && g <= 175 && b <= 255 = Color240 167+ | r <= 215 && g <= 215 && b <= 0 = Color240 168+ | r <= 215 && g <= 215 && b <= 95 = Color240 169+ | r <= 215 && g <= 215 && b <= 135 = Color240 170+ | r <= 215 && g <= 215 && b <= 175 = Color240 171+ | r <= 215 && g <= 215 && b <= 215 = Color240 172+ | r <= 215 && g <= 215 && b <= 255 = Color240 173+ | r <= 215 && g <= 255 && b <= 0 = Color240 174+ | r <= 215 && g <= 255 && b <= 95 = Color240 175+ | r <= 215 && g <= 255 && b <= 135 = Color240 176+ | r <= 215 && g <= 255 && b <= 175 = Color240 177+ | r <= 215 && g <= 255 && b <= 215 = Color240 178+ | r <= 215 && g <= 255 && b <= 255 = Color240 179+ | r <= 255 && g <= 0 && b <= 0 = Color240 180+ | r <= 255 && g <= 0 && b <= 95 = Color240 181+ | r <= 255 && g <= 0 && b <= 135 = Color240 182+ | r <= 255 && g <= 0 && b <= 175 = Color240 183+ | r <= 255 && g <= 0 && b <= 215 = Color240 184+ | r <= 255 && g <= 0 && b <= 255 = Color240 185+ | r <= 255 && g <= 95 && b <= 0 = Color240 186+ | r <= 255 && g <= 95 && b <= 95 = Color240 187+ | r <= 255 && g <= 95 && b <= 135 = Color240 188+ | r <= 255 && g <= 95 && b <= 175 = Color240 189+ | r <= 255 && g <= 95 && b <= 215 = Color240 190+ | r <= 255 && g <= 95 && b <= 255 = Color240 191+ | r <= 255 && g <= 135 && b <= 0 = Color240 192+ | r <= 255 && g <= 135 && b <= 95 = Color240 193+ | r <= 255 && g <= 135 && b <= 135 = Color240 194+ | r <= 255 && g <= 135 && b <= 175 = Color240 195+ | r <= 255 && g <= 135 && b <= 215 = Color240 196+ | r <= 255 && g <= 135 && b <= 255 = Color240 197+ | r <= 255 && g <= 175 && b <= 0 = Color240 198+ | r <= 255 && g <= 175 && b <= 95 = Color240 199+ | r <= 255 && g <= 175 && b <= 135 = Color240 200+ | r <= 255 && g <= 175 && b <= 175 = Color240 201+ | r <= 255 && g <= 175 && b <= 215 = Color240 202+ | r <= 255 && g <= 175 && b <= 255 = Color240 203+ | r <= 255 && g <= 215 && b <= 0 = Color240 204+ | r <= 255 && g <= 215 && b <= 95 = Color240 205+ | r <= 255 && g <= 215 && b <= 135 = Color240 206+ | r <= 255 && g <= 215 && b <= 175 = Color240 207+ | r <= 255 && g <= 215 && b <= 215 = Color240 208+ | r <= 255 && g <= 215 && b <= 255 = Color240 209+ | r <= 255 && g <= 255 && b <= 0 = Color240 210+ | r <= 255 && g <= 255 && b <= 95 = Color240 211+ | r <= 255 && g <= 255 && b <= 135 = Color240 212+ | r <= 255 && g <= 255 && b <= 175 = Color240 213+ | r <= 255 && g <= 255 && b <= 215 = Color240 214+ | r <= 255 && g <= 255 && b <= 255 = Color240 215+ | otherwise = error (printf "RGB color %d %d %d does not map to 240 palette." + (fromIntegral r :: Int)+ (fromIntegral g :: Int)+ (fromIntegral b :: Int))+
vty.cabal view
@@ -1,5 +1,5 @@ name: vty-version: 4.7.3+version: 4.7.4 license: BSD3 license-file: LICENSE author: AUTHORS@@ -64,6 +64,8 @@ other-modules: Data.Marshalling Data.Terminfo.Parse Data.Terminfo.Eval+ Graphics.Vty.Attributes.Color+ Graphics.Vty.Attributes.Color240 Graphics.Vty.DisplayAttributes Graphics.Vty.Span Graphics.Vty.Terminal.Generic