module Visual where
import HbcWord

data DisplayClass
  = StaticGray | GrayScale
  | StaticColor | PseudoColor
  | TrueColor | DirectColor
  deriving (DisplayClass -> DisplayClass -> Bool
(DisplayClass -> DisplayClass -> Bool)
-> (DisplayClass -> DisplayClass -> Bool) -> Eq DisplayClass
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DisplayClass -> DisplayClass -> Bool
$c/= :: DisplayClass -> DisplayClass -> Bool
== :: DisplayClass -> DisplayClass -> Bool
$c== :: DisplayClass -> DisplayClass -> Bool
Eq,Int -> DisplayClass -> ShowS
[DisplayClass] -> ShowS
DisplayClass -> String
(Int -> DisplayClass -> ShowS)
-> (DisplayClass -> String)
-> ([DisplayClass] -> ShowS)
-> Show DisplayClass
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DisplayClass] -> ShowS
$cshowList :: [DisplayClass] -> ShowS
show :: DisplayClass -> String
$cshow :: DisplayClass -> String
showsPrec :: Int -> DisplayClass -> ShowS
$cshowsPrec :: Int -> DisplayClass -> ShowS
Show,ReadPrec [DisplayClass]
ReadPrec DisplayClass
Int -> ReadS DisplayClass
ReadS [DisplayClass]
(Int -> ReadS DisplayClass)
-> ReadS [DisplayClass]
-> ReadPrec DisplayClass
-> ReadPrec [DisplayClass]
-> Read DisplayClass
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DisplayClass]
$creadListPrec :: ReadPrec [DisplayClass]
readPrec :: ReadPrec DisplayClass
$creadPrec :: ReadPrec DisplayClass
readList :: ReadS [DisplayClass]
$creadList :: ReadS [DisplayClass]
readsPrec :: Int -> ReadS DisplayClass
$creadsPrec :: Int -> ReadS DisplayClass
Read,DisplayClass
DisplayClass -> DisplayClass -> Bounded DisplayClass
forall a. a -> a -> Bounded a
maxBound :: DisplayClass
$cmaxBound :: DisplayClass
minBound :: DisplayClass
$cminBound :: DisplayClass
Bounded,Int -> DisplayClass
DisplayClass -> Int
DisplayClass -> [DisplayClass]
DisplayClass -> DisplayClass
DisplayClass -> DisplayClass -> [DisplayClass]
DisplayClass -> DisplayClass -> DisplayClass -> [DisplayClass]
(DisplayClass -> DisplayClass)
-> (DisplayClass -> DisplayClass)
-> (Int -> DisplayClass)
-> (DisplayClass -> Int)
-> (DisplayClass -> [DisplayClass])
-> (DisplayClass -> DisplayClass -> [DisplayClass])
-> (DisplayClass -> DisplayClass -> [DisplayClass])
-> (DisplayClass -> DisplayClass -> DisplayClass -> [DisplayClass])
-> Enum DisplayClass
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: DisplayClass -> DisplayClass -> DisplayClass -> [DisplayClass]
$cenumFromThenTo :: DisplayClass -> DisplayClass -> DisplayClass -> [DisplayClass]
enumFromTo :: DisplayClass -> DisplayClass -> [DisplayClass]
$cenumFromTo :: DisplayClass -> DisplayClass -> [DisplayClass]
enumFromThen :: DisplayClass -> DisplayClass -> [DisplayClass]
$cenumFromThen :: DisplayClass -> DisplayClass -> [DisplayClass]
enumFrom :: DisplayClass -> [DisplayClass]
$cenumFrom :: DisplayClass -> [DisplayClass]
fromEnum :: DisplayClass -> Int
$cfromEnum :: DisplayClass -> Int
toEnum :: Int -> DisplayClass
$ctoEnum :: Int -> DisplayClass
pred :: DisplayClass -> DisplayClass
$cpred :: DisplayClass -> DisplayClass
succ :: DisplayClass -> DisplayClass
$csucc :: DisplayClass -> DisplayClass
Enum)

newtype VisualID = VisualID Int deriving (VisualID -> VisualID -> Bool
(VisualID -> VisualID -> Bool)
-> (VisualID -> VisualID -> Bool) -> Eq VisualID
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VisualID -> VisualID -> Bool
$c/= :: VisualID -> VisualID -> Bool
== :: VisualID -> VisualID -> Bool
$c== :: VisualID -> VisualID -> Bool
Eq,Int -> VisualID -> ShowS
[VisualID] -> ShowS
VisualID -> String
(Int -> VisualID -> ShowS)
-> (VisualID -> String) -> ([VisualID] -> ShowS) -> Show VisualID
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VisualID] -> ShowS
$cshowList :: [VisualID] -> ShowS
show :: VisualID -> String
$cshow :: VisualID -> String
showsPrec :: Int -> VisualID -> ShowS
$cshowsPrec :: Int -> VisualID -> ShowS
Show,ReadPrec [VisualID]
ReadPrec VisualID
Int -> ReadS VisualID
ReadS [VisualID]
(Int -> ReadS VisualID)
-> ReadS [VisualID]
-> ReadPrec VisualID
-> ReadPrec [VisualID]
-> Read VisualID
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [VisualID]
$creadListPrec :: ReadPrec [VisualID]
readPrec :: ReadPrec VisualID
$creadPrec :: ReadPrec VisualID
readList :: ReadS [VisualID]
$creadList :: ReadS [VisualID]
readsPrec :: Int -> ReadS VisualID
$creadsPrec :: Int -> ReadS VisualID
Read)

data Visual
  = Visual { Visual -> VisualID
visualid :: VisualID,
	     Visual -> DisplayClass
visualClass :: DisplayClass,
	     Visual -> Word
red_mask,Visual -> Word
green_mask,Visual -> Word
blue_mask :: Word,
	     Visual -> Int
bits_per_rgb :: Int,
	     Visual -> Int
map_entries :: Int
	   }
  deriving (Int -> Visual -> ShowS
[Visual] -> ShowS
Visual -> String
(Int -> Visual -> ShowS)
-> (Visual -> String) -> ([Visual] -> ShowS) -> Show Visual
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Visual] -> ShowS
$cshowList :: [Visual] -> ShowS
show :: Visual -> String
$cshow :: Visual -> String
showsPrec :: Int -> Visual -> ShowS
$cshowsPrec :: Int -> Visual -> ShowS
Show,ReadPrec [Visual]
ReadPrec Visual
Int -> ReadS Visual
ReadS [Visual]
(Int -> ReadS Visual)
-> ReadS [Visual]
-> ReadPrec Visual
-> ReadPrec [Visual]
-> Read Visual
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Visual]
$creadListPrec :: ReadPrec [Visual]
readPrec :: ReadPrec Visual
$creadPrec :: ReadPrec Visual
readList :: ReadS [Visual]
$creadList :: ReadS [Visual]
readsPrec :: Int -> ReadS Visual
$creadsPrec :: Int -> ReadS Visual
Read)