-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.HarfBuzz.Enums
    ( 

 -- * Enumerations


-- ** BufferClusterLevelT #enum:BufferClusterLevelT#

    BufferClusterLevelT(..)                 ,


-- ** BufferContentTypeT #enum:BufferContentTypeT#

    BufferContentTypeT(..)                  ,


-- ** DirectionT #enum:DirectionT#

    DirectionT(..)                          ,


-- ** MemoryModeT #enum:MemoryModeT#

    MemoryModeT(..)                         ,


-- ** OtLayoutGlyphClassT #enum:OtLayoutGlyphClassT#

    OtLayoutGlyphClassT(..)                 ,


-- ** OtMathConstantT #enum:OtMathConstantT#

    OtMathConstantT(..)                     ,


-- ** OtMathKernT #enum:OtMathKernT#

    OtMathKernT(..)                         ,


-- ** OtNameIdPredefinedT #enum:OtNameIdPredefinedT#

    OtNameIdPredefinedT(..)                 ,


-- ** PaintCompositeModeT #enum:PaintCompositeModeT#

    PaintCompositeModeT(..)                 ,


-- ** PaintExtendT #enum:PaintExtendT#

    PaintExtendT(..)                        ,


-- ** UnicodeCombiningClassT #enum:UnicodeCombiningClassT#

    UnicodeCombiningClassT(..)              ,


-- ** UnicodeGeneralCategoryT #enum:UnicodeGeneralCategoryT#

    UnicodeGeneralCategoryT(..)             ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R


-- Enum unicode_general_category_t
-- | Data type for the \"General_Category\" (gc) property from
-- the Unicode Character Database.
data UnicodeGeneralCategoryT = 
      UnicodeGeneralCategoryTControl
    -- ^ [Cc]
    | UnicodeGeneralCategoryTFormat
    -- ^ [Cf]
    | UnicodeGeneralCategoryTUnassigned
    -- ^ [Cn]
    | UnicodeGeneralCategoryTPrivateUse
    -- ^ [Co]
    | UnicodeGeneralCategoryTSurrogate
    -- ^ [Cs]
    | UnicodeGeneralCategoryTLowercaseLetter
    -- ^ [Ll]
    | UnicodeGeneralCategoryTModifierLetter
    -- ^ [Lm]
    | UnicodeGeneralCategoryTOtherLetter
    -- ^ [Lo]
    | UnicodeGeneralCategoryTTitlecaseLetter
    -- ^ [Lt]
    | UnicodeGeneralCategoryTUppercaseLetter
    -- ^ [Lu]
    | UnicodeGeneralCategoryTSpacingMark
    -- ^ [Mc]
    | UnicodeGeneralCategoryTEnclosingMark
    -- ^ [Me]
    | UnicodeGeneralCategoryTNonSpacingMark
    -- ^ [Mn]
    | UnicodeGeneralCategoryTDecimalNumber
    -- ^ [Nd]
    | UnicodeGeneralCategoryTLetterNumber
    -- ^ [Nl]
    | UnicodeGeneralCategoryTOtherNumber
    -- ^ [No]
    | UnicodeGeneralCategoryTConnectPunctuation
    -- ^ [Pc]
    | UnicodeGeneralCategoryTDashPunctuation
    -- ^ [Pd]
    | UnicodeGeneralCategoryTClosePunctuation
    -- ^ [Pe]
    | UnicodeGeneralCategoryTFinalPunctuation
    -- ^ [Pf]
    | UnicodeGeneralCategoryTInitialPunctuation
    -- ^ [Pi]
    | UnicodeGeneralCategoryTOtherPunctuation
    -- ^ [Po]
    | UnicodeGeneralCategoryTOpenPunctuation
    -- ^ [Ps]
    | UnicodeGeneralCategoryTCurrencySymbol
    -- ^ [Sc]
    | UnicodeGeneralCategoryTModifierSymbol
    -- ^ [Sk]
    | UnicodeGeneralCategoryTMathSymbol
    -- ^ [Sm]
    | UnicodeGeneralCategoryTOtherSymbol
    -- ^ [So]
    | UnicodeGeneralCategoryTLineSeparator
    -- ^ [Zl]
    | UnicodeGeneralCategoryTParagraphSeparator
    -- ^ [Zp]
    | UnicodeGeneralCategoryTSpaceSeparator
    -- ^ [Zs]
    | AnotherUnicodeGeneralCategoryT Int
    -- ^ Catch-all for unknown values
    deriving (Int -> UnicodeGeneralCategoryT -> ShowS
[UnicodeGeneralCategoryT] -> ShowS
UnicodeGeneralCategoryT -> String
(Int -> UnicodeGeneralCategoryT -> ShowS)
-> (UnicodeGeneralCategoryT -> String)
-> ([UnicodeGeneralCategoryT] -> ShowS)
-> Show UnicodeGeneralCategoryT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> UnicodeGeneralCategoryT -> ShowS
showsPrec :: Int -> UnicodeGeneralCategoryT -> ShowS
$cshow :: UnicodeGeneralCategoryT -> String
show :: UnicodeGeneralCategoryT -> String
$cshowList :: [UnicodeGeneralCategoryT] -> ShowS
showList :: [UnicodeGeneralCategoryT] -> ShowS
Show, UnicodeGeneralCategoryT -> UnicodeGeneralCategoryT -> Bool
(UnicodeGeneralCategoryT -> UnicodeGeneralCategoryT -> Bool)
-> (UnicodeGeneralCategoryT -> UnicodeGeneralCategoryT -> Bool)
-> Eq UnicodeGeneralCategoryT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: UnicodeGeneralCategoryT -> UnicodeGeneralCategoryT -> Bool
== :: UnicodeGeneralCategoryT -> UnicodeGeneralCategoryT -> Bool
$c/= :: UnicodeGeneralCategoryT -> UnicodeGeneralCategoryT -> Bool
/= :: UnicodeGeneralCategoryT -> UnicodeGeneralCategoryT -> Bool
Eq)

instance P.Enum UnicodeGeneralCategoryT where
    fromEnum :: UnicodeGeneralCategoryT -> Int
fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTControl = Int
0
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTFormat = Int
1
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTUnassigned = Int
2
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTPrivateUse = Int
3
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTSurrogate = Int
4
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTLowercaseLetter = Int
5
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTModifierLetter = Int
6
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTOtherLetter = Int
7
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTTitlecaseLetter = Int
8
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTUppercaseLetter = Int
9
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTSpacingMark = Int
10
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTEnclosingMark = Int
11
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTNonSpacingMark = Int
12
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTDecimalNumber = Int
13
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTLetterNumber = Int
14
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTOtherNumber = Int
15
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTConnectPunctuation = Int
16
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTDashPunctuation = Int
17
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTClosePunctuation = Int
18
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTFinalPunctuation = Int
19
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTInitialPunctuation = Int
20
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTOtherPunctuation = Int
21
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTOpenPunctuation = Int
22
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTCurrencySymbol = Int
23
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTModifierSymbol = Int
24
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTMathSymbol = Int
25
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTOtherSymbol = Int
26
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTLineSeparator = Int
27
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTParagraphSeparator = Int
28
    fromEnum UnicodeGeneralCategoryT
UnicodeGeneralCategoryTSpaceSeparator = Int
29
    fromEnum (AnotherUnicodeGeneralCategoryT Int
k) = Int
k

    toEnum :: Int -> UnicodeGeneralCategoryT
toEnum Int
0 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTControl
    toEnum Int
1 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTFormat
    toEnum Int
2 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTUnassigned
    toEnum Int
3 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTPrivateUse
    toEnum Int
4 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTSurrogate
    toEnum Int
5 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTLowercaseLetter
    toEnum Int
6 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTModifierLetter
    toEnum Int
7 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTOtherLetter
    toEnum Int
8 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTTitlecaseLetter
    toEnum Int
9 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTUppercaseLetter
    toEnum Int
10 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTSpacingMark
    toEnum Int
11 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTEnclosingMark
    toEnum Int
12 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTNonSpacingMark
    toEnum Int
13 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTDecimalNumber
    toEnum Int
14 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTLetterNumber
    toEnum Int
15 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTOtherNumber
    toEnum Int
16 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTConnectPunctuation
    toEnum Int
17 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTDashPunctuation
    toEnum Int
18 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTClosePunctuation
    toEnum Int
19 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTFinalPunctuation
    toEnum Int
20 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTInitialPunctuation
    toEnum Int
21 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTOtherPunctuation
    toEnum Int
22 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTOpenPunctuation
    toEnum Int
23 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTCurrencySymbol
    toEnum Int
24 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTModifierSymbol
    toEnum Int
25 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTMathSymbol
    toEnum Int
26 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTOtherSymbol
    toEnum Int
27 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTLineSeparator
    toEnum Int
28 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTParagraphSeparator
    toEnum Int
29 = UnicodeGeneralCategoryT
UnicodeGeneralCategoryTSpaceSeparator
    toEnum Int
k = Int -> UnicodeGeneralCategoryT
AnotherUnicodeGeneralCategoryT Int
k

instance P.Ord UnicodeGeneralCategoryT where
    compare :: UnicodeGeneralCategoryT -> UnicodeGeneralCategoryT -> Ordering
compare UnicodeGeneralCategoryT
a UnicodeGeneralCategoryT
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (UnicodeGeneralCategoryT -> Int
forall a. Enum a => a -> Int
P.fromEnum UnicodeGeneralCategoryT
a) (UnicodeGeneralCategoryT -> Int
forall a. Enum a => a -> Int
P.fromEnum UnicodeGeneralCategoryT
b)

-- Enum unicode_combining_class_t
-- | Data type for the Canonical_Combining_Class (ccc) property
-- from the Unicode Character Database.
-- 
-- \<note>Note: newer versions of Unicode may add new values.
-- Client programs should be ready to handle any value in the 0..254 range
-- being returned from 'GI.HarfBuzz.Functions.unicodeCombiningClass'.\<\/note>
data UnicodeCombiningClassT = 
      UnicodeCombiningClassTNotReordered
    -- ^ Spacing and enclosing marks; also many vowel and consonant signs, even if nonspacing
    | UnicodeCombiningClassTOverlay
    -- ^ Marks which overlay a base letter or symbol
    | UnicodeCombiningClassTNukta
    -- ^ Diacritic nukta marks in Brahmi-derived scripts
    | UnicodeCombiningClassTKanaVoicing
    -- ^ Hiragana\/Katakana voicing marks
    | UnicodeCombiningClassTVirama
    -- ^ Viramas
    | UnicodeCombiningClassTCcc10
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc11
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc12
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc13
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc14
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc15
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc16
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc17
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc18
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc19
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc20
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc21
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc22
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc23
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc24
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc25
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc26
    -- ^ [Hebrew]
    | UnicodeCombiningClassTCcc27
    -- ^ [Arabic]
    | UnicodeCombiningClassTCcc28
    -- ^ [Arabic]
    | UnicodeCombiningClassTCcc29
    -- ^ [Arabic]
    | UnicodeCombiningClassTCcc30
    -- ^ [Arabic]
    | UnicodeCombiningClassTCcc31
    -- ^ [Arabic]
    | UnicodeCombiningClassTCcc32
    -- ^ [Arabic]
    | UnicodeCombiningClassTCcc33
    -- ^ [Arabic]
    | UnicodeCombiningClassTCcc34
    -- ^ [Arabic]
    | UnicodeCombiningClassTCcc35
    -- ^ [Arabic]
    | UnicodeCombiningClassTCcc36
    -- ^ [Syriac]
    | UnicodeCombiningClassTCcc84
    -- ^ [Telugu]
    | UnicodeCombiningClassTCcc91
    -- ^ [Telugu]
    | UnicodeCombiningClassTCcc103
    -- ^ [Thai]
    | UnicodeCombiningClassTCcc107
    -- ^ [Thai]
    | UnicodeCombiningClassTCcc118
    -- ^ [Lao]
    | UnicodeCombiningClassTCcc122
    -- ^ [Lao]
    | UnicodeCombiningClassTCcc129
    -- ^ [Tibetan]
    | UnicodeCombiningClassTCcc130
    -- ^ [Tibetan]
    | UnicodeCombiningClassTCcc132
    -- ^ [Tibetan] Since: 7.2.0
    | UnicodeCombiningClassTAttachedBelowLeft
    -- ^ Marks attached at the bottom left
    | UnicodeCombiningClassTAttachedBelow
    -- ^ Marks attached directly below
    | UnicodeCombiningClassTAttachedAbove
    -- ^ Marks attached directly above
    | UnicodeCombiningClassTAttachedAboveRight
    -- ^ Marks attached at the top right
    | UnicodeCombiningClassTBelowLeft
    -- ^ Distinct marks at the bottom left
    | UnicodeCombiningClassTBelow
    -- ^ Distinct marks directly below
    | UnicodeCombiningClassTBelowRight
    -- ^ Distinct marks at the bottom right
    | UnicodeCombiningClassTLeft
    -- ^ Distinct marks to the left
    | UnicodeCombiningClassTRight
    -- ^ Distinct marks to the right
    | UnicodeCombiningClassTAboveLeft
    -- ^ Distinct marks at the top left
    | UnicodeCombiningClassTAbove
    -- ^ Distinct marks directly above
    | UnicodeCombiningClassTAboveRight
    -- ^ Distinct marks at the top right
    | UnicodeCombiningClassTDoubleBelow
    -- ^ Distinct marks subtending two bases
    | UnicodeCombiningClassTDoubleAbove
    -- ^ Distinct marks extending above two bases
    | UnicodeCombiningClassTIotaSubscript
    -- ^ Greek iota subscript only
    | UnicodeCombiningClassTInvalid
    -- ^ Invalid combining class
    | AnotherUnicodeCombiningClassT Int
    -- ^ Catch-all for unknown values
    deriving (Int -> UnicodeCombiningClassT -> ShowS
[UnicodeCombiningClassT] -> ShowS
UnicodeCombiningClassT -> String
(Int -> UnicodeCombiningClassT -> ShowS)
-> (UnicodeCombiningClassT -> String)
-> ([UnicodeCombiningClassT] -> ShowS)
-> Show UnicodeCombiningClassT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> UnicodeCombiningClassT -> ShowS
showsPrec :: Int -> UnicodeCombiningClassT -> ShowS
$cshow :: UnicodeCombiningClassT -> String
show :: UnicodeCombiningClassT -> String
$cshowList :: [UnicodeCombiningClassT] -> ShowS
showList :: [UnicodeCombiningClassT] -> ShowS
Show, UnicodeCombiningClassT -> UnicodeCombiningClassT -> Bool
(UnicodeCombiningClassT -> UnicodeCombiningClassT -> Bool)
-> (UnicodeCombiningClassT -> UnicodeCombiningClassT -> Bool)
-> Eq UnicodeCombiningClassT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: UnicodeCombiningClassT -> UnicodeCombiningClassT -> Bool
== :: UnicodeCombiningClassT -> UnicodeCombiningClassT -> Bool
$c/= :: UnicodeCombiningClassT -> UnicodeCombiningClassT -> Bool
/= :: UnicodeCombiningClassT -> UnicodeCombiningClassT -> Bool
Eq)

instance P.Enum UnicodeCombiningClassT where
    fromEnum :: UnicodeCombiningClassT -> Int
fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTNotReordered = Int
0
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTOverlay = Int
1
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTNukta = Int
7
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTKanaVoicing = Int
8
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTVirama = Int
9
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc10 = Int
10
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc11 = Int
11
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc12 = Int
12
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc13 = Int
13
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc14 = Int
14
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc15 = Int
15
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc16 = Int
16
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc17 = Int
17
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc18 = Int
18
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc19 = Int
19
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc20 = Int
20
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc21 = Int
21
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc22 = Int
22
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc23 = Int
23
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc24 = Int
24
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc25 = Int
25
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc26 = Int
26
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc27 = Int
27
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc28 = Int
28
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc29 = Int
29
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc30 = Int
30
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc31 = Int
31
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc32 = Int
32
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc33 = Int
33
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc34 = Int
34
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc35 = Int
35
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc36 = Int
36
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc84 = Int
84
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc91 = Int
91
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc103 = Int
103
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc107 = Int
107
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc118 = Int
118
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc122 = Int
122
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc129 = Int
129
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc130 = Int
130
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTCcc132 = Int
132
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTAttachedBelowLeft = Int
200
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTAttachedBelow = Int
202
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTAttachedAbove = Int
214
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTAttachedAboveRight = Int
216
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTBelowLeft = Int
218
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTBelow = Int
220
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTBelowRight = Int
222
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTLeft = Int
224
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTRight = Int
226
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTAboveLeft = Int
228
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTAbove = Int
230
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTAboveRight = Int
232
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTDoubleBelow = Int
233
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTDoubleAbove = Int
234
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTIotaSubscript = Int
240
    fromEnum UnicodeCombiningClassT
UnicodeCombiningClassTInvalid = Int
255
    fromEnum (AnotherUnicodeCombiningClassT Int
k) = Int
k

    toEnum :: Int -> UnicodeCombiningClassT
toEnum Int
0 = UnicodeCombiningClassT
UnicodeCombiningClassTNotReordered
    toEnum Int
1 = UnicodeCombiningClassT
UnicodeCombiningClassTOverlay
    toEnum Int
7 = UnicodeCombiningClassT
UnicodeCombiningClassTNukta
    toEnum Int
8 = UnicodeCombiningClassT
UnicodeCombiningClassTKanaVoicing
    toEnum Int
9 = UnicodeCombiningClassT
UnicodeCombiningClassTVirama
    toEnum Int
10 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc10
    toEnum Int
11 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc11
    toEnum Int
12 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc12
    toEnum Int
13 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc13
    toEnum Int
14 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc14
    toEnum Int
15 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc15
    toEnum Int
16 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc16
    toEnum Int
17 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc17
    toEnum Int
18 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc18
    toEnum Int
19 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc19
    toEnum Int
20 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc20
    toEnum Int
21 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc21
    toEnum Int
22 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc22
    toEnum Int
23 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc23
    toEnum Int
24 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc24
    toEnum Int
25 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc25
    toEnum Int
26 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc26
    toEnum Int
27 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc27
    toEnum Int
28 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc28
    toEnum Int
29 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc29
    toEnum Int
30 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc30
    toEnum Int
31 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc31
    toEnum Int
32 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc32
    toEnum Int
33 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc33
    toEnum Int
34 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc34
    toEnum Int
35 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc35
    toEnum Int
36 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc36
    toEnum Int
84 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc84
    toEnum Int
91 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc91
    toEnum Int
103 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc103
    toEnum Int
107 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc107
    toEnum Int
118 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc118
    toEnum Int
122 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc122
    toEnum Int
129 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc129
    toEnum Int
130 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc130
    toEnum Int
132 = UnicodeCombiningClassT
UnicodeCombiningClassTCcc132
    toEnum Int
200 = UnicodeCombiningClassT
UnicodeCombiningClassTAttachedBelowLeft
    toEnum Int
202 = UnicodeCombiningClassT
UnicodeCombiningClassTAttachedBelow
    toEnum Int
214 = UnicodeCombiningClassT
UnicodeCombiningClassTAttachedAbove
    toEnum Int
216 = UnicodeCombiningClassT
UnicodeCombiningClassTAttachedAboveRight
    toEnum Int
218 = UnicodeCombiningClassT
UnicodeCombiningClassTBelowLeft
    toEnum Int
220 = UnicodeCombiningClassT
UnicodeCombiningClassTBelow
    toEnum Int
222 = UnicodeCombiningClassT
UnicodeCombiningClassTBelowRight
    toEnum Int
224 = UnicodeCombiningClassT
UnicodeCombiningClassTLeft
    toEnum Int
226 = UnicodeCombiningClassT
UnicodeCombiningClassTRight
    toEnum Int
228 = UnicodeCombiningClassT
UnicodeCombiningClassTAboveLeft
    toEnum Int
230 = UnicodeCombiningClassT
UnicodeCombiningClassTAbove
    toEnum Int
232 = UnicodeCombiningClassT
UnicodeCombiningClassTAboveRight
    toEnum Int
233 = UnicodeCombiningClassT
UnicodeCombiningClassTDoubleBelow
    toEnum Int
234 = UnicodeCombiningClassT
UnicodeCombiningClassTDoubleAbove
    toEnum Int
240 = UnicodeCombiningClassT
UnicodeCombiningClassTIotaSubscript
    toEnum Int
255 = UnicodeCombiningClassT
UnicodeCombiningClassTInvalid
    toEnum Int
k = Int -> UnicodeCombiningClassT
AnotherUnicodeCombiningClassT Int
k

instance P.Ord UnicodeCombiningClassT where
    compare :: UnicodeCombiningClassT -> UnicodeCombiningClassT -> Ordering
compare UnicodeCombiningClassT
a UnicodeCombiningClassT
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (UnicodeCombiningClassT -> Int
forall a. Enum a => a -> Int
P.fromEnum UnicodeCombiningClassT
a) (UnicodeCombiningClassT -> Int
forall a. Enum a => a -> Int
P.fromEnum UnicodeCombiningClassT
b)

-- Enum paint_extend_t
-- | The values of this enumeration determine how color values
-- outside the minimum and maximum defined offset on a t'GI.HarfBuzz.Structs.ColorLineT.ColorLineT'
-- are determined.
-- 
-- See the OpenType spec <https://learn.microsoft.com/en-us/typography/opentype/spec/colr COLR>
-- section for details.
-- 
-- /Since: 7.0.0/
data PaintExtendT = 
      PaintExtendTPad
    -- ^ Outside the defined interval,
    --   the color of the closest color stop is used.
    | PaintExtendTRepeat
    -- ^ The color line is repeated over
    --   repeated multiples of the defined interval
    | PaintExtendTReflect
    -- ^ The color line is repeated over
    --      repeated intervals, as for the repeat mode.
    --      However, in each repeated interval, the ordering of
    --      color stops is the reverse of the adjacent interval.
    | AnotherPaintExtendT Int
    -- ^ Catch-all for unknown values
    deriving (Int -> PaintExtendT -> ShowS
[PaintExtendT] -> ShowS
PaintExtendT -> String
(Int -> PaintExtendT -> ShowS)
-> (PaintExtendT -> String)
-> ([PaintExtendT] -> ShowS)
-> Show PaintExtendT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PaintExtendT -> ShowS
showsPrec :: Int -> PaintExtendT -> ShowS
$cshow :: PaintExtendT -> String
show :: PaintExtendT -> String
$cshowList :: [PaintExtendT] -> ShowS
showList :: [PaintExtendT] -> ShowS
Show, PaintExtendT -> PaintExtendT -> Bool
(PaintExtendT -> PaintExtendT -> Bool)
-> (PaintExtendT -> PaintExtendT -> Bool) -> Eq PaintExtendT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PaintExtendT -> PaintExtendT -> Bool
== :: PaintExtendT -> PaintExtendT -> Bool
$c/= :: PaintExtendT -> PaintExtendT -> Bool
/= :: PaintExtendT -> PaintExtendT -> Bool
Eq)

instance P.Enum PaintExtendT where
    fromEnum :: PaintExtendT -> Int
fromEnum PaintExtendT
PaintExtendTPad = Int
0
    fromEnum PaintExtendT
PaintExtendTRepeat = Int
1
    fromEnum PaintExtendT
PaintExtendTReflect = Int
2
    fromEnum (AnotherPaintExtendT Int
k) = Int
k

    toEnum :: Int -> PaintExtendT
toEnum Int
0 = PaintExtendT
PaintExtendTPad
    toEnum Int
1 = PaintExtendT
PaintExtendTRepeat
    toEnum Int
2 = PaintExtendT
PaintExtendTReflect
    toEnum Int
k = Int -> PaintExtendT
AnotherPaintExtendT Int
k

instance P.Ord PaintExtendT where
    compare :: PaintExtendT -> PaintExtendT -> Ordering
compare PaintExtendT
a PaintExtendT
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (PaintExtendT -> Int
forall a. Enum a => a -> Int
P.fromEnum PaintExtendT
a) (PaintExtendT -> Int
forall a. Enum a => a -> Int
P.fromEnum PaintExtendT
b)

-- Enum paint_composite_mode_t
-- | The values of this enumeration describe the compositing modes
-- that can be used when combining temporary redirected drawing
-- with the backdrop.
-- 
-- See the OpenType spec <https://learn.microsoft.com/en-us/typography/opentype/spec/colr COLR>
-- section for details.
-- 
-- /Since: 7.0.0/
data PaintCompositeModeT = 
      PaintCompositeModeTClear
    -- ^ clear destination layer (bounded)
    | PaintCompositeModeTSrc
    -- ^ replace destination layer (bounded)
    | PaintCompositeModeTDest
    -- ^ ignore the source
    | PaintCompositeModeTSrcOver
    -- ^ draw source layer on top of destination layer
    -- (bounded)
    | PaintCompositeModeTDestOver
    -- ^ draw destination on top of source
    | PaintCompositeModeTSrcIn
    -- ^ draw source where there was destination content
    -- (unbounded)
    | PaintCompositeModeTDestIn
    -- ^ leave destination only where there was
    -- source content (unbounded)
    | PaintCompositeModeTSrcOut
    -- ^ draw source where there was no destination
    -- content (unbounded)
    | PaintCompositeModeTDestOut
    -- ^ leave destination only where there was no
    -- source content
    | PaintCompositeModeTSrcAtop
    -- ^ draw source on top of destination content and
    -- only there
    | PaintCompositeModeTDestAtop
    -- ^ leave destination on top of source content
    -- and only there (unbounded)
    | PaintCompositeModeTXor
    -- ^ source and destination are shown where there is only
    -- one of them
    | PaintCompositeModeTPlus
    -- ^ source and destination layers are accumulated
    | PaintCompositeModeTScreen
    -- ^ source and destination are complemented and
    -- multiplied. This causes the result to be at least as light as the lighter
    -- inputs.
    | PaintCompositeModeTOverlay
    -- ^ multiplies or screens, depending on the
    -- lightness of the destination color.
    | PaintCompositeModeTDarken
    -- ^ replaces the destination with the source if it
    -- is darker, otherwise keeps the source.
    | PaintCompositeModeTLighten
    -- ^ replaces the destination with the source if it
    -- is lighter, otherwise keeps the source.
    | PaintCompositeModeTColorDodge
    -- ^ brightens the destination color to reflect
    -- the source color.
    | PaintCompositeModeTColorBurn
    -- ^ darkens the destination color to reflect
    -- the source color.
    | PaintCompositeModeTHardLight
    -- ^ Multiplies or screens, dependent on source
    -- color.
    | PaintCompositeModeTSoftLight
    -- ^ Darkens or lightens, dependent on source
    -- color.
    | PaintCompositeModeTDifference
    -- ^ Takes the difference of the source and
    -- destination color.
    | PaintCompositeModeTExclusion
    -- ^ Produces an effect similar to difference, but
    -- with lower contrast.
    | PaintCompositeModeTMultiply
    -- ^ source and destination layers are multiplied.
    -- This causes the result to be at least as dark as the darker inputs.
    | PaintCompositeModeTHslHue
    -- ^ Creates a color with the hue of the source
    -- and the saturation and luminosity of the target.
    | PaintCompositeModeTHslSaturation
    -- ^ Creates a color with the saturation
    -- of the source and the hue and luminosity of the target. Painting with
    -- this mode onto a gray area produces no change.
    | PaintCompositeModeTHslColor
    -- ^ Creates a color with the hue and saturation
    -- of the source and the luminosity of the target. This preserves the gray
    -- levels of the target and is useful for coloring monochrome images or
    -- tinting color images.
    | PaintCompositeModeTHslLuminosity
    -- ^ Creates a color with the luminosity of
    -- the source and the hue and saturation of the target. This produces an
    -- inverse effect to /@hBPAINTCOMPOSITEMODEHSLCOLOR@/.
    | AnotherPaintCompositeModeT Int
    -- ^ Catch-all for unknown values
    deriving (Int -> PaintCompositeModeT -> ShowS
[PaintCompositeModeT] -> ShowS
PaintCompositeModeT -> String
(Int -> PaintCompositeModeT -> ShowS)
-> (PaintCompositeModeT -> String)
-> ([PaintCompositeModeT] -> ShowS)
-> Show PaintCompositeModeT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PaintCompositeModeT -> ShowS
showsPrec :: Int -> PaintCompositeModeT -> ShowS
$cshow :: PaintCompositeModeT -> String
show :: PaintCompositeModeT -> String
$cshowList :: [PaintCompositeModeT] -> ShowS
showList :: [PaintCompositeModeT] -> ShowS
Show, PaintCompositeModeT -> PaintCompositeModeT -> Bool
(PaintCompositeModeT -> PaintCompositeModeT -> Bool)
-> (PaintCompositeModeT -> PaintCompositeModeT -> Bool)
-> Eq PaintCompositeModeT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PaintCompositeModeT -> PaintCompositeModeT -> Bool
== :: PaintCompositeModeT -> PaintCompositeModeT -> Bool
$c/= :: PaintCompositeModeT -> PaintCompositeModeT -> Bool
/= :: PaintCompositeModeT -> PaintCompositeModeT -> Bool
Eq)

instance P.Enum PaintCompositeModeT where
    fromEnum :: PaintCompositeModeT -> Int
fromEnum PaintCompositeModeT
PaintCompositeModeTClear = Int
0
    fromEnum PaintCompositeModeT
PaintCompositeModeTSrc = Int
1
    fromEnum PaintCompositeModeT
PaintCompositeModeTDest = Int
2
    fromEnum PaintCompositeModeT
PaintCompositeModeTSrcOver = Int
3
    fromEnum PaintCompositeModeT
PaintCompositeModeTDestOver = Int
4
    fromEnum PaintCompositeModeT
PaintCompositeModeTSrcIn = Int
5
    fromEnum PaintCompositeModeT
PaintCompositeModeTDestIn = Int
6
    fromEnum PaintCompositeModeT
PaintCompositeModeTSrcOut = Int
7
    fromEnum PaintCompositeModeT
PaintCompositeModeTDestOut = Int
8
    fromEnum PaintCompositeModeT
PaintCompositeModeTSrcAtop = Int
9
    fromEnum PaintCompositeModeT
PaintCompositeModeTDestAtop = Int
10
    fromEnum PaintCompositeModeT
PaintCompositeModeTXor = Int
11
    fromEnum PaintCompositeModeT
PaintCompositeModeTPlus = Int
12
    fromEnum PaintCompositeModeT
PaintCompositeModeTScreen = Int
13
    fromEnum PaintCompositeModeT
PaintCompositeModeTOverlay = Int
14
    fromEnum PaintCompositeModeT
PaintCompositeModeTDarken = Int
15
    fromEnum PaintCompositeModeT
PaintCompositeModeTLighten = Int
16
    fromEnum PaintCompositeModeT
PaintCompositeModeTColorDodge = Int
17
    fromEnum PaintCompositeModeT
PaintCompositeModeTColorBurn = Int
18
    fromEnum PaintCompositeModeT
PaintCompositeModeTHardLight = Int
19
    fromEnum PaintCompositeModeT
PaintCompositeModeTSoftLight = Int
20
    fromEnum PaintCompositeModeT
PaintCompositeModeTDifference = Int
21
    fromEnum PaintCompositeModeT
PaintCompositeModeTExclusion = Int
22
    fromEnum PaintCompositeModeT
PaintCompositeModeTMultiply = Int
23
    fromEnum PaintCompositeModeT
PaintCompositeModeTHslHue = Int
24
    fromEnum PaintCompositeModeT
PaintCompositeModeTHslSaturation = Int
25
    fromEnum PaintCompositeModeT
PaintCompositeModeTHslColor = Int
26
    fromEnum PaintCompositeModeT
PaintCompositeModeTHslLuminosity = Int
27
    fromEnum (AnotherPaintCompositeModeT Int
k) = Int
k

    toEnum :: Int -> PaintCompositeModeT
toEnum Int
0 = PaintCompositeModeT
PaintCompositeModeTClear
    toEnum Int
1 = PaintCompositeModeT
PaintCompositeModeTSrc
    toEnum Int
2 = PaintCompositeModeT
PaintCompositeModeTDest
    toEnum Int
3 = PaintCompositeModeT
PaintCompositeModeTSrcOver
    toEnum Int
4 = PaintCompositeModeT
PaintCompositeModeTDestOver
    toEnum Int
5 = PaintCompositeModeT
PaintCompositeModeTSrcIn
    toEnum Int
6 = PaintCompositeModeT
PaintCompositeModeTDestIn
    toEnum Int
7 = PaintCompositeModeT
PaintCompositeModeTSrcOut
    toEnum Int
8 = PaintCompositeModeT
PaintCompositeModeTDestOut
    toEnum Int
9 = PaintCompositeModeT
PaintCompositeModeTSrcAtop
    toEnum Int
10 = PaintCompositeModeT
PaintCompositeModeTDestAtop
    toEnum Int
11 = PaintCompositeModeT
PaintCompositeModeTXor
    toEnum Int
12 = PaintCompositeModeT
PaintCompositeModeTPlus
    toEnum Int
13 = PaintCompositeModeT
PaintCompositeModeTScreen
    toEnum Int
14 = PaintCompositeModeT
PaintCompositeModeTOverlay
    toEnum Int
15 = PaintCompositeModeT
PaintCompositeModeTDarken
    toEnum Int
16 = PaintCompositeModeT
PaintCompositeModeTLighten
    toEnum Int
17 = PaintCompositeModeT
PaintCompositeModeTColorDodge
    toEnum Int
18 = PaintCompositeModeT
PaintCompositeModeTColorBurn
    toEnum Int
19 = PaintCompositeModeT
PaintCompositeModeTHardLight
    toEnum Int
20 = PaintCompositeModeT
PaintCompositeModeTSoftLight
    toEnum Int
21 = PaintCompositeModeT
PaintCompositeModeTDifference
    toEnum Int
22 = PaintCompositeModeT
PaintCompositeModeTExclusion
    toEnum Int
23 = PaintCompositeModeT
PaintCompositeModeTMultiply
    toEnum Int
24 = PaintCompositeModeT
PaintCompositeModeTHslHue
    toEnum Int
25 = PaintCompositeModeT
PaintCompositeModeTHslSaturation
    toEnum Int
26 = PaintCompositeModeT
PaintCompositeModeTHslColor
    toEnum Int
27 = PaintCompositeModeT
PaintCompositeModeTHslLuminosity
    toEnum Int
k = Int -> PaintCompositeModeT
AnotherPaintCompositeModeT Int
k

instance P.Ord PaintCompositeModeT where
    compare :: PaintCompositeModeT -> PaintCompositeModeT -> Ordering
compare PaintCompositeModeT
a PaintCompositeModeT
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (PaintCompositeModeT -> Int
forall a. Enum a => a -> Int
P.fromEnum PaintCompositeModeT
a) (PaintCompositeModeT -> Int
forall a. Enum a => a -> Int
P.fromEnum PaintCompositeModeT
b)

-- Enum ot_name_id_predefined_t
-- | An enum type representing the pre-defined name IDs.
-- 
-- For more information on these fields, see the
-- <https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-ids OpenType spec>.
-- 
-- /Since: 7.0.0/
data OtNameIdPredefinedT = 
      OtNameIdPredefinedTCopyright
    -- ^ Copyright notice
    | OtNameIdPredefinedTFontFamily
    -- ^ Font Family name
    | OtNameIdPredefinedTFontSubfamily
    -- ^ Font Subfamily name
    | OtNameIdPredefinedTUniqueId
    -- ^ Unique font identifier
    | OtNameIdPredefinedTFullName
    -- ^ Full font name that reflects
    -- all family and relevant subfamily descriptors
    | OtNameIdPredefinedTVersionString
    -- ^ Version string
    | OtNameIdPredefinedTPostscriptName
    -- ^ PostScript name for the font
    | OtNameIdPredefinedTTrademark
    -- ^ Trademark
    | OtNameIdPredefinedTManufacturer
    -- ^ Manufacturer Name
    | OtNameIdPredefinedTDesigner
    -- ^ Designer
    | OtNameIdPredefinedTDescription
    -- ^ Description
    | OtNameIdPredefinedTVendorUrl
    -- ^ URL of font vendor
    | OtNameIdPredefinedTDesignerUrl
    -- ^ URL of typeface designer
    | OtNameIdPredefinedTLicense
    -- ^ License Description
    | OtNameIdPredefinedTLicenseUrl
    -- ^ URL where additional licensing
    -- information can be found
    | OtNameIdPredefinedTTypographicFamily
    -- ^ Typographic Family name
    | OtNameIdPredefinedTTypographicSubfamily
    -- ^ Typographic Subfamily name
    | OtNameIdPredefinedTMacFullName
    -- ^ Compatible Full Name for MacOS
    | OtNameIdPredefinedTSampleText
    -- ^ Sample text
    | OtNameIdPredefinedTCidFindfontName
    -- ^ PostScript CID findfont name
    | OtNameIdPredefinedTWwsFamily
    -- ^ WWS Family Name
    | OtNameIdPredefinedTWwsSubfamily
    -- ^ WWS Subfamily Name
    | OtNameIdPredefinedTLightBackground
    -- ^ Light Background Palette
    | OtNameIdPredefinedTDarkBackground
    -- ^ Dark Background Palette
    | OtNameIdPredefinedTVariationsPsPrefix
    -- ^ Variations PostScript Name Prefix
    | OtNameIdPredefinedTInvalid
    -- ^ Value to represent a nonexistent name ID.
    | AnotherOtNameIdPredefinedT Int
    -- ^ Catch-all for unknown values
    deriving (Int -> OtNameIdPredefinedT -> ShowS
[OtNameIdPredefinedT] -> ShowS
OtNameIdPredefinedT -> String
(Int -> OtNameIdPredefinedT -> ShowS)
-> (OtNameIdPredefinedT -> String)
-> ([OtNameIdPredefinedT] -> ShowS)
-> Show OtNameIdPredefinedT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> OtNameIdPredefinedT -> ShowS
showsPrec :: Int -> OtNameIdPredefinedT -> ShowS
$cshow :: OtNameIdPredefinedT -> String
show :: OtNameIdPredefinedT -> String
$cshowList :: [OtNameIdPredefinedT] -> ShowS
showList :: [OtNameIdPredefinedT] -> ShowS
Show, OtNameIdPredefinedT -> OtNameIdPredefinedT -> Bool
(OtNameIdPredefinedT -> OtNameIdPredefinedT -> Bool)
-> (OtNameIdPredefinedT -> OtNameIdPredefinedT -> Bool)
-> Eq OtNameIdPredefinedT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: OtNameIdPredefinedT -> OtNameIdPredefinedT -> Bool
== :: OtNameIdPredefinedT -> OtNameIdPredefinedT -> Bool
$c/= :: OtNameIdPredefinedT -> OtNameIdPredefinedT -> Bool
/= :: OtNameIdPredefinedT -> OtNameIdPredefinedT -> Bool
Eq)

instance P.Enum OtNameIdPredefinedT where
    fromEnum :: OtNameIdPredefinedT -> Int
fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTCopyright = Int
0
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTFontFamily = Int
1
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTFontSubfamily = Int
2
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTUniqueId = Int
3
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTFullName = Int
4
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTVersionString = Int
5
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTPostscriptName = Int
6
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTTrademark = Int
7
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTManufacturer = Int
8
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTDesigner = Int
9
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTDescription = Int
10
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTVendorUrl = Int
11
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTDesignerUrl = Int
12
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTLicense = Int
13
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTLicenseUrl = Int
14
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTTypographicFamily = Int
16
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTTypographicSubfamily = Int
17
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTMacFullName = Int
18
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTSampleText = Int
19
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTCidFindfontName = Int
20
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTWwsFamily = Int
21
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTWwsSubfamily = Int
22
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTLightBackground = Int
23
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTDarkBackground = Int
24
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTVariationsPsPrefix = Int
25
    fromEnum OtNameIdPredefinedT
OtNameIdPredefinedTInvalid = Int
65535
    fromEnum (AnotherOtNameIdPredefinedT Int
k) = Int
k

    toEnum :: Int -> OtNameIdPredefinedT
toEnum Int
0 = OtNameIdPredefinedT
OtNameIdPredefinedTCopyright
    toEnum Int
1 = OtNameIdPredefinedT
OtNameIdPredefinedTFontFamily
    toEnum Int
2 = OtNameIdPredefinedT
OtNameIdPredefinedTFontSubfamily
    toEnum Int
3 = OtNameIdPredefinedT
OtNameIdPredefinedTUniqueId
    toEnum Int
4 = OtNameIdPredefinedT
OtNameIdPredefinedTFullName
    toEnum Int
5 = OtNameIdPredefinedT
OtNameIdPredefinedTVersionString
    toEnum Int
6 = OtNameIdPredefinedT
OtNameIdPredefinedTPostscriptName
    toEnum Int
7 = OtNameIdPredefinedT
OtNameIdPredefinedTTrademark
    toEnum Int
8 = OtNameIdPredefinedT
OtNameIdPredefinedTManufacturer
    toEnum Int
9 = OtNameIdPredefinedT
OtNameIdPredefinedTDesigner
    toEnum Int
10 = OtNameIdPredefinedT
OtNameIdPredefinedTDescription
    toEnum Int
11 = OtNameIdPredefinedT
OtNameIdPredefinedTVendorUrl
    toEnum Int
12 = OtNameIdPredefinedT
OtNameIdPredefinedTDesignerUrl
    toEnum Int
13 = OtNameIdPredefinedT
OtNameIdPredefinedTLicense
    toEnum Int
14 = OtNameIdPredefinedT
OtNameIdPredefinedTLicenseUrl
    toEnum Int
16 = OtNameIdPredefinedT
OtNameIdPredefinedTTypographicFamily
    toEnum Int
17 = OtNameIdPredefinedT
OtNameIdPredefinedTTypographicSubfamily
    toEnum Int
18 = OtNameIdPredefinedT
OtNameIdPredefinedTMacFullName
    toEnum Int
19 = OtNameIdPredefinedT
OtNameIdPredefinedTSampleText
    toEnum Int
20 = OtNameIdPredefinedT
OtNameIdPredefinedTCidFindfontName
    toEnum Int
21 = OtNameIdPredefinedT
OtNameIdPredefinedTWwsFamily
    toEnum Int
22 = OtNameIdPredefinedT
OtNameIdPredefinedTWwsSubfamily
    toEnum Int
23 = OtNameIdPredefinedT
OtNameIdPredefinedTLightBackground
    toEnum Int
24 = OtNameIdPredefinedT
OtNameIdPredefinedTDarkBackground
    toEnum Int
25 = OtNameIdPredefinedT
OtNameIdPredefinedTVariationsPsPrefix
    toEnum Int
65535 = OtNameIdPredefinedT
OtNameIdPredefinedTInvalid
    toEnum Int
k = Int -> OtNameIdPredefinedT
AnotherOtNameIdPredefinedT Int
k

instance P.Ord OtNameIdPredefinedT where
    compare :: OtNameIdPredefinedT -> OtNameIdPredefinedT -> Ordering
compare OtNameIdPredefinedT
a OtNameIdPredefinedT
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (OtNameIdPredefinedT -> Int
forall a. Enum a => a -> Int
P.fromEnum OtNameIdPredefinedT
a) (OtNameIdPredefinedT -> Int
forall a. Enum a => a -> Int
P.fromEnum OtNameIdPredefinedT
b)

-- Enum ot_math_kern_t
-- | The math kerning-table types defined for the four corners
-- of a glyph.
-- 
-- /Since: 1.3.3/
data OtMathKernT = 
      OtMathKernTTopRight
    -- ^ The top right corner of the glyph.
    | OtMathKernTTopLeft
    -- ^ The top left corner of the glyph.
    | OtMathKernTBottomRight
    -- ^ The bottom right corner of the glyph.
    | OtMathKernTBottomLeft
    -- ^ The bottom left corner of the glyph.
    | AnotherOtMathKernT Int
    -- ^ Catch-all for unknown values
    deriving (Int -> OtMathKernT -> ShowS
[OtMathKernT] -> ShowS
OtMathKernT -> String
(Int -> OtMathKernT -> ShowS)
-> (OtMathKernT -> String)
-> ([OtMathKernT] -> ShowS)
-> Show OtMathKernT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> OtMathKernT -> ShowS
showsPrec :: Int -> OtMathKernT -> ShowS
$cshow :: OtMathKernT -> String
show :: OtMathKernT -> String
$cshowList :: [OtMathKernT] -> ShowS
showList :: [OtMathKernT] -> ShowS
Show, OtMathKernT -> OtMathKernT -> Bool
(OtMathKernT -> OtMathKernT -> Bool)
-> (OtMathKernT -> OtMathKernT -> Bool) -> Eq OtMathKernT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: OtMathKernT -> OtMathKernT -> Bool
== :: OtMathKernT -> OtMathKernT -> Bool
$c/= :: OtMathKernT -> OtMathKernT -> Bool
/= :: OtMathKernT -> OtMathKernT -> Bool
Eq)

instance P.Enum OtMathKernT where
    fromEnum :: OtMathKernT -> Int
fromEnum OtMathKernT
OtMathKernTTopRight = Int
0
    fromEnum OtMathKernT
OtMathKernTTopLeft = Int
1
    fromEnum OtMathKernT
OtMathKernTBottomRight = Int
2
    fromEnum OtMathKernT
OtMathKernTBottomLeft = Int
3
    fromEnum (AnotherOtMathKernT Int
k) = Int
k

    toEnum :: Int -> OtMathKernT
toEnum Int
0 = OtMathKernT
OtMathKernTTopRight
    toEnum Int
1 = OtMathKernT
OtMathKernTTopLeft
    toEnum Int
2 = OtMathKernT
OtMathKernTBottomRight
    toEnum Int
3 = OtMathKernT
OtMathKernTBottomLeft
    toEnum Int
k = Int -> OtMathKernT
AnotherOtMathKernT Int
k

instance P.Ord OtMathKernT where
    compare :: OtMathKernT -> OtMathKernT -> Ordering
compare OtMathKernT
a OtMathKernT
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (OtMathKernT -> Int
forall a. Enum a => a -> Int
P.fromEnum OtMathKernT
a) (OtMathKernT -> Int
forall a. Enum a => a -> Int
P.fromEnum OtMathKernT
b)

-- Enum ot_math_constant_t
-- | The \'MATH\' table constants, refer to
-- <https://docs.microsoft.com/en-us/typography/opentype/spec/math#mathconstants-table OpenType documentation>
-- For more explanations.
-- 
-- /Since: 1.3.3/
data OtMathConstantT = 
      OtMathConstantTScriptPercentScaleDown
    -- ^ scriptPercentScaleDown
    | OtMathConstantTScriptScriptPercentScaleDown
    -- ^ scriptScriptPercentScaleDown
    | OtMathConstantTDelimitedSubFormulaMinHeight
    -- ^ delimitedSubFormulaMinHeight
    | OtMathConstantTDisplayOperatorMinHeight
    -- ^ displayOperatorMinHeight
    | OtMathConstantTMathLeading
    -- ^ mathLeading
    | OtMathConstantTAxisHeight
    -- ^ axisHeight
    | OtMathConstantTAccentBaseHeight
    -- ^ accentBaseHeight
    | OtMathConstantTFlattenedAccentBaseHeight
    -- ^ flattenedAccentBaseHeight
    | OtMathConstantTSubscriptShiftDown
    -- ^ subscriptShiftDown
    | OtMathConstantTSubscriptTopMax
    -- ^ subscriptTopMax
    | OtMathConstantTSubscriptBaselineDropMin
    -- ^ subscriptBaselineDropMin
    | OtMathConstantTSuperscriptShiftUp
    -- ^ superscriptShiftUp
    | OtMathConstantTSuperscriptShiftUpCramped
    -- ^ superscriptShiftUpCramped
    | OtMathConstantTSuperscriptBottomMin
    -- ^ superscriptBottomMin
    | OtMathConstantTSuperscriptBaselineDropMax
    -- ^ superscriptBaselineDropMax
    | OtMathConstantTSubSuperscriptGapMin
    -- ^ subSuperscriptGapMin
    | OtMathConstantTSuperscriptBottomMaxWithSubscript
    -- ^ superscriptBottomMaxWithSubscript
    | OtMathConstantTSpaceAfterScript
    -- ^ spaceAfterScript
    | OtMathConstantTUpperLimitGapMin
    -- ^ upperLimitGapMin
    | OtMathConstantTUpperLimitBaselineRiseMin
    -- ^ upperLimitBaselineRiseMin
    | OtMathConstantTLowerLimitGapMin
    -- ^ lowerLimitGapMin
    | OtMathConstantTLowerLimitBaselineDropMin
    -- ^ lowerLimitBaselineDropMin
    | OtMathConstantTStackTopShiftUp
    -- ^ stackTopShiftUp
    | OtMathConstantTStackTopDisplayStyleShiftUp
    -- ^ stackTopDisplayStyleShiftUp
    | OtMathConstantTStackBottomShiftDown
    -- ^ stackBottomShiftDown
    | OtMathConstantTStackBottomDisplayStyleShiftDown
    -- ^ stackBottomDisplayStyleShiftDown
    | OtMathConstantTStackGapMin
    -- ^ stackGapMin
    | OtMathConstantTStackDisplayStyleGapMin
    -- ^ stackDisplayStyleGapMin
    | OtMathConstantTStretchStackTopShiftUp
    -- ^ stretchStackTopShiftUp
    | OtMathConstantTStretchStackBottomShiftDown
    -- ^ stretchStackBottomShiftDown
    | OtMathConstantTStretchStackGapAboveMin
    -- ^ stretchStackGapAboveMin
    | OtMathConstantTStretchStackGapBelowMin
    -- ^ stretchStackGapBelowMin
    | OtMathConstantTFractionNumeratorShiftUp
    -- ^ fractionNumeratorShiftUp
    | OtMathConstantTFractionNumeratorDisplayStyleShiftUp
    -- ^ fractionNumeratorDisplayStyleShiftUp
    | OtMathConstantTFractionDenominatorShiftDown
    -- ^ fractionDenominatorShiftDown
    | OtMathConstantTFractionDenominatorDisplayStyleShiftDown
    -- ^ fractionDenominatorDisplayStyleShiftDown
    | OtMathConstantTFractionNumeratorGapMin
    -- ^ fractionNumeratorGapMin
    | OtMathConstantTFractionNumDisplayStyleGapMin
    -- ^ fractionNumDisplayStyleGapMin
    | OtMathConstantTFractionRuleThickness
    -- ^ fractionRuleThickness
    | OtMathConstantTFractionDenominatorGapMin
    -- ^ fractionDenominatorGapMin
    | OtMathConstantTFractionDenomDisplayStyleGapMin
    -- ^ fractionDenomDisplayStyleGapMin
    | OtMathConstantTSkewedFractionHorizontalGap
    -- ^ skewedFractionHorizontalGap
    | OtMathConstantTSkewedFractionVerticalGap
    -- ^ skewedFractionVerticalGap
    | OtMathConstantTOverbarVerticalGap
    -- ^ overbarVerticalGap
    | OtMathConstantTOverbarRuleThickness
    -- ^ overbarRuleThickness
    | OtMathConstantTOverbarExtraAscender
    -- ^ overbarExtraAscender
    | OtMathConstantTUnderbarVerticalGap
    -- ^ underbarVerticalGap
    | OtMathConstantTUnderbarRuleThickness
    -- ^ underbarRuleThickness
    | OtMathConstantTUnderbarExtraDescender
    -- ^ underbarExtraDescender
    | OtMathConstantTRadicalVerticalGap
    -- ^ radicalVerticalGap
    | OtMathConstantTRadicalDisplayStyleVerticalGap
    -- ^ radicalDisplayStyleVerticalGap
    | OtMathConstantTRadicalRuleThickness
    -- ^ radicalRuleThickness
    | OtMathConstantTRadicalExtraAscender
    -- ^ radicalExtraAscender
    | OtMathConstantTRadicalKernBeforeDegree
    -- ^ radicalKernBeforeDegree
    | OtMathConstantTRadicalKernAfterDegree
    -- ^ radicalKernAfterDegree
    | OtMathConstantTRadicalDegreeBottomRaisePercent
    -- ^ radicalDegreeBottomRaisePercent
    | AnotherOtMathConstantT Int
    -- ^ Catch-all for unknown values
    deriving (Int -> OtMathConstantT -> ShowS
[OtMathConstantT] -> ShowS
OtMathConstantT -> String
(Int -> OtMathConstantT -> ShowS)
-> (OtMathConstantT -> String)
-> ([OtMathConstantT] -> ShowS)
-> Show OtMathConstantT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> OtMathConstantT -> ShowS
showsPrec :: Int -> OtMathConstantT -> ShowS
$cshow :: OtMathConstantT -> String
show :: OtMathConstantT -> String
$cshowList :: [OtMathConstantT] -> ShowS
showList :: [OtMathConstantT] -> ShowS
Show, OtMathConstantT -> OtMathConstantT -> Bool
(OtMathConstantT -> OtMathConstantT -> Bool)
-> (OtMathConstantT -> OtMathConstantT -> Bool)
-> Eq OtMathConstantT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: OtMathConstantT -> OtMathConstantT -> Bool
== :: OtMathConstantT -> OtMathConstantT -> Bool
$c/= :: OtMathConstantT -> OtMathConstantT -> Bool
/= :: OtMathConstantT -> OtMathConstantT -> Bool
Eq)

instance P.Enum OtMathConstantT where
    fromEnum :: OtMathConstantT -> Int
fromEnum OtMathConstantT
OtMathConstantTScriptPercentScaleDown = Int
0
    fromEnum OtMathConstantT
OtMathConstantTScriptScriptPercentScaleDown = Int
1
    fromEnum OtMathConstantT
OtMathConstantTDelimitedSubFormulaMinHeight = Int
2
    fromEnum OtMathConstantT
OtMathConstantTDisplayOperatorMinHeight = Int
3
    fromEnum OtMathConstantT
OtMathConstantTMathLeading = Int
4
    fromEnum OtMathConstantT
OtMathConstantTAxisHeight = Int
5
    fromEnum OtMathConstantT
OtMathConstantTAccentBaseHeight = Int
6
    fromEnum OtMathConstantT
OtMathConstantTFlattenedAccentBaseHeight = Int
7
    fromEnum OtMathConstantT
OtMathConstantTSubscriptShiftDown = Int
8
    fromEnum OtMathConstantT
OtMathConstantTSubscriptTopMax = Int
9
    fromEnum OtMathConstantT
OtMathConstantTSubscriptBaselineDropMin = Int
10
    fromEnum OtMathConstantT
OtMathConstantTSuperscriptShiftUp = Int
11
    fromEnum OtMathConstantT
OtMathConstantTSuperscriptShiftUpCramped = Int
12
    fromEnum OtMathConstantT
OtMathConstantTSuperscriptBottomMin = Int
13
    fromEnum OtMathConstantT
OtMathConstantTSuperscriptBaselineDropMax = Int
14
    fromEnum OtMathConstantT
OtMathConstantTSubSuperscriptGapMin = Int
15
    fromEnum OtMathConstantT
OtMathConstantTSuperscriptBottomMaxWithSubscript = Int
16
    fromEnum OtMathConstantT
OtMathConstantTSpaceAfterScript = Int
17
    fromEnum OtMathConstantT
OtMathConstantTUpperLimitGapMin = Int
18
    fromEnum OtMathConstantT
OtMathConstantTUpperLimitBaselineRiseMin = Int
19
    fromEnum OtMathConstantT
OtMathConstantTLowerLimitGapMin = Int
20
    fromEnum OtMathConstantT
OtMathConstantTLowerLimitBaselineDropMin = Int
21
    fromEnum OtMathConstantT
OtMathConstantTStackTopShiftUp = Int
22
    fromEnum OtMathConstantT
OtMathConstantTStackTopDisplayStyleShiftUp = Int
23
    fromEnum OtMathConstantT
OtMathConstantTStackBottomShiftDown = Int
24
    fromEnum OtMathConstantT
OtMathConstantTStackBottomDisplayStyleShiftDown = Int
25
    fromEnum OtMathConstantT
OtMathConstantTStackGapMin = Int
26
    fromEnum OtMathConstantT
OtMathConstantTStackDisplayStyleGapMin = Int
27
    fromEnum OtMathConstantT
OtMathConstantTStretchStackTopShiftUp = Int
28
    fromEnum OtMathConstantT
OtMathConstantTStretchStackBottomShiftDown = Int
29
    fromEnum OtMathConstantT
OtMathConstantTStretchStackGapAboveMin = Int
30
    fromEnum OtMathConstantT
OtMathConstantTStretchStackGapBelowMin = Int
31
    fromEnum OtMathConstantT
OtMathConstantTFractionNumeratorShiftUp = Int
32
    fromEnum OtMathConstantT
OtMathConstantTFractionNumeratorDisplayStyleShiftUp = Int
33
    fromEnum OtMathConstantT
OtMathConstantTFractionDenominatorShiftDown = Int
34
    fromEnum OtMathConstantT
OtMathConstantTFractionDenominatorDisplayStyleShiftDown = Int
35
    fromEnum OtMathConstantT
OtMathConstantTFractionNumeratorGapMin = Int
36
    fromEnum OtMathConstantT
OtMathConstantTFractionNumDisplayStyleGapMin = Int
37
    fromEnum OtMathConstantT
OtMathConstantTFractionRuleThickness = Int
38
    fromEnum OtMathConstantT
OtMathConstantTFractionDenominatorGapMin = Int
39
    fromEnum OtMathConstantT
OtMathConstantTFractionDenomDisplayStyleGapMin = Int
40
    fromEnum OtMathConstantT
OtMathConstantTSkewedFractionHorizontalGap = Int
41
    fromEnum OtMathConstantT
OtMathConstantTSkewedFractionVerticalGap = Int
42
    fromEnum OtMathConstantT
OtMathConstantTOverbarVerticalGap = Int
43
    fromEnum OtMathConstantT
OtMathConstantTOverbarRuleThickness = Int
44
    fromEnum OtMathConstantT
OtMathConstantTOverbarExtraAscender = Int
45
    fromEnum OtMathConstantT
OtMathConstantTUnderbarVerticalGap = Int
46
    fromEnum OtMathConstantT
OtMathConstantTUnderbarRuleThickness = Int
47
    fromEnum OtMathConstantT
OtMathConstantTUnderbarExtraDescender = Int
48
    fromEnum OtMathConstantT
OtMathConstantTRadicalVerticalGap = Int
49
    fromEnum OtMathConstantT
OtMathConstantTRadicalDisplayStyleVerticalGap = Int
50
    fromEnum OtMathConstantT
OtMathConstantTRadicalRuleThickness = Int
51
    fromEnum OtMathConstantT
OtMathConstantTRadicalExtraAscender = Int
52
    fromEnum OtMathConstantT
OtMathConstantTRadicalKernBeforeDegree = Int
53
    fromEnum OtMathConstantT
OtMathConstantTRadicalKernAfterDegree = Int
54
    fromEnum OtMathConstantT
OtMathConstantTRadicalDegreeBottomRaisePercent = Int
55
    fromEnum (AnotherOtMathConstantT Int
k) = Int
k

    toEnum :: Int -> OtMathConstantT
toEnum Int
0 = OtMathConstantT
OtMathConstantTScriptPercentScaleDown
    toEnum Int
1 = OtMathConstantT
OtMathConstantTScriptScriptPercentScaleDown
    toEnum Int
2 = OtMathConstantT
OtMathConstantTDelimitedSubFormulaMinHeight
    toEnum Int
3 = OtMathConstantT
OtMathConstantTDisplayOperatorMinHeight
    toEnum Int
4 = OtMathConstantT
OtMathConstantTMathLeading
    toEnum Int
5 = OtMathConstantT
OtMathConstantTAxisHeight
    toEnum Int
6 = OtMathConstantT
OtMathConstantTAccentBaseHeight
    toEnum Int
7 = OtMathConstantT
OtMathConstantTFlattenedAccentBaseHeight
    toEnum Int
8 = OtMathConstantT
OtMathConstantTSubscriptShiftDown
    toEnum Int
9 = OtMathConstantT
OtMathConstantTSubscriptTopMax
    toEnum Int
10 = OtMathConstantT
OtMathConstantTSubscriptBaselineDropMin
    toEnum Int
11 = OtMathConstantT
OtMathConstantTSuperscriptShiftUp
    toEnum Int
12 = OtMathConstantT
OtMathConstantTSuperscriptShiftUpCramped
    toEnum Int
13 = OtMathConstantT
OtMathConstantTSuperscriptBottomMin
    toEnum Int
14 = OtMathConstantT
OtMathConstantTSuperscriptBaselineDropMax
    toEnum Int
15 = OtMathConstantT
OtMathConstantTSubSuperscriptGapMin
    toEnum Int
16 = OtMathConstantT
OtMathConstantTSuperscriptBottomMaxWithSubscript
    toEnum Int
17 = OtMathConstantT
OtMathConstantTSpaceAfterScript
    toEnum Int
18 = OtMathConstantT
OtMathConstantTUpperLimitGapMin
    toEnum Int
19 = OtMathConstantT
OtMathConstantTUpperLimitBaselineRiseMin
    toEnum Int
20 = OtMathConstantT
OtMathConstantTLowerLimitGapMin
    toEnum Int
21 = OtMathConstantT
OtMathConstantTLowerLimitBaselineDropMin
    toEnum Int
22 = OtMathConstantT
OtMathConstantTStackTopShiftUp
    toEnum Int
23 = OtMathConstantT
OtMathConstantTStackTopDisplayStyleShiftUp
    toEnum Int
24 = OtMathConstantT
OtMathConstantTStackBottomShiftDown
    toEnum Int
25 = OtMathConstantT
OtMathConstantTStackBottomDisplayStyleShiftDown
    toEnum Int
26 = OtMathConstantT
OtMathConstantTStackGapMin
    toEnum Int
27 = OtMathConstantT
OtMathConstantTStackDisplayStyleGapMin
    toEnum Int
28 = OtMathConstantT
OtMathConstantTStretchStackTopShiftUp
    toEnum Int
29 = OtMathConstantT
OtMathConstantTStretchStackBottomShiftDown
    toEnum Int
30 = OtMathConstantT
OtMathConstantTStretchStackGapAboveMin
    toEnum Int
31 = OtMathConstantT
OtMathConstantTStretchStackGapBelowMin
    toEnum Int
32 = OtMathConstantT
OtMathConstantTFractionNumeratorShiftUp
    toEnum Int
33 = OtMathConstantT
OtMathConstantTFractionNumeratorDisplayStyleShiftUp
    toEnum Int
34 = OtMathConstantT
OtMathConstantTFractionDenominatorShiftDown
    toEnum Int
35 = OtMathConstantT
OtMathConstantTFractionDenominatorDisplayStyleShiftDown
    toEnum Int
36 = OtMathConstantT
OtMathConstantTFractionNumeratorGapMin
    toEnum Int
37 = OtMathConstantT
OtMathConstantTFractionNumDisplayStyleGapMin
    toEnum Int
38 = OtMathConstantT
OtMathConstantTFractionRuleThickness
    toEnum Int
39 = OtMathConstantT
OtMathConstantTFractionDenominatorGapMin
    toEnum Int
40 = OtMathConstantT
OtMathConstantTFractionDenomDisplayStyleGapMin
    toEnum Int
41 = OtMathConstantT
OtMathConstantTSkewedFractionHorizontalGap
    toEnum Int
42 = OtMathConstantT
OtMathConstantTSkewedFractionVerticalGap
    toEnum Int
43 = OtMathConstantT
OtMathConstantTOverbarVerticalGap
    toEnum Int
44 = OtMathConstantT
OtMathConstantTOverbarRuleThickness
    toEnum Int
45 = OtMathConstantT
OtMathConstantTOverbarExtraAscender
    toEnum Int
46 = OtMathConstantT
OtMathConstantTUnderbarVerticalGap
    toEnum Int
47 = OtMathConstantT
OtMathConstantTUnderbarRuleThickness
    toEnum Int
48 = OtMathConstantT
OtMathConstantTUnderbarExtraDescender
    toEnum Int
49 = OtMathConstantT
OtMathConstantTRadicalVerticalGap
    toEnum Int
50 = OtMathConstantT
OtMathConstantTRadicalDisplayStyleVerticalGap
    toEnum Int
51 = OtMathConstantT
OtMathConstantTRadicalRuleThickness
    toEnum Int
52 = OtMathConstantT
OtMathConstantTRadicalExtraAscender
    toEnum Int
53 = OtMathConstantT
OtMathConstantTRadicalKernBeforeDegree
    toEnum Int
54 = OtMathConstantT
OtMathConstantTRadicalKernAfterDegree
    toEnum Int
55 = OtMathConstantT
OtMathConstantTRadicalDegreeBottomRaisePercent
    toEnum Int
k = Int -> OtMathConstantT
AnotherOtMathConstantT Int
k

instance P.Ord OtMathConstantT where
    compare :: OtMathConstantT -> OtMathConstantT -> Ordering
compare OtMathConstantT
a OtMathConstantT
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (OtMathConstantT -> Int
forall a. Enum a => a -> Int
P.fromEnum OtMathConstantT
a) (OtMathConstantT -> Int
forall a. Enum a => a -> Int
P.fromEnum OtMathConstantT
b)

-- Enum ot_layout_glyph_class_t
-- | The GDEF classes defined for glyphs.
data OtLayoutGlyphClassT = 
      OtLayoutGlyphClassTUnclassified
    -- ^ Glyphs not matching the other classifications
    | OtLayoutGlyphClassTBaseGlyph
    -- ^ Spacing, single characters, capable of accepting marks
    | OtLayoutGlyphClassTLigature
    -- ^ Glyphs that represent ligation of multiple characters
    | OtLayoutGlyphClassTMark
    -- ^ Non-spacing, combining glyphs that represent marks
    | OtLayoutGlyphClassTComponent
    -- ^ Spacing glyphs that represent part of a single character
    | AnotherOtLayoutGlyphClassT Int
    -- ^ Catch-all for unknown values
    deriving (Int -> OtLayoutGlyphClassT -> ShowS
[OtLayoutGlyphClassT] -> ShowS
OtLayoutGlyphClassT -> String
(Int -> OtLayoutGlyphClassT -> ShowS)
-> (OtLayoutGlyphClassT -> String)
-> ([OtLayoutGlyphClassT] -> ShowS)
-> Show OtLayoutGlyphClassT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> OtLayoutGlyphClassT -> ShowS
showsPrec :: Int -> OtLayoutGlyphClassT -> ShowS
$cshow :: OtLayoutGlyphClassT -> String
show :: OtLayoutGlyphClassT -> String
$cshowList :: [OtLayoutGlyphClassT] -> ShowS
showList :: [OtLayoutGlyphClassT] -> ShowS
Show, OtLayoutGlyphClassT -> OtLayoutGlyphClassT -> Bool
(OtLayoutGlyphClassT -> OtLayoutGlyphClassT -> Bool)
-> (OtLayoutGlyphClassT -> OtLayoutGlyphClassT -> Bool)
-> Eq OtLayoutGlyphClassT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: OtLayoutGlyphClassT -> OtLayoutGlyphClassT -> Bool
== :: OtLayoutGlyphClassT -> OtLayoutGlyphClassT -> Bool
$c/= :: OtLayoutGlyphClassT -> OtLayoutGlyphClassT -> Bool
/= :: OtLayoutGlyphClassT -> OtLayoutGlyphClassT -> Bool
Eq)

instance P.Enum OtLayoutGlyphClassT where
    fromEnum :: OtLayoutGlyphClassT -> Int
fromEnum OtLayoutGlyphClassT
OtLayoutGlyphClassTUnclassified = Int
0
    fromEnum OtLayoutGlyphClassT
OtLayoutGlyphClassTBaseGlyph = Int
1
    fromEnum OtLayoutGlyphClassT
OtLayoutGlyphClassTLigature = Int
2
    fromEnum OtLayoutGlyphClassT
OtLayoutGlyphClassTMark = Int
3
    fromEnum OtLayoutGlyphClassT
OtLayoutGlyphClassTComponent = Int
4
    fromEnum (AnotherOtLayoutGlyphClassT Int
k) = Int
k

    toEnum :: Int -> OtLayoutGlyphClassT
toEnum Int
0 = OtLayoutGlyphClassT
OtLayoutGlyphClassTUnclassified
    toEnum Int
1 = OtLayoutGlyphClassT
OtLayoutGlyphClassTBaseGlyph
    toEnum Int
2 = OtLayoutGlyphClassT
OtLayoutGlyphClassTLigature
    toEnum Int
3 = OtLayoutGlyphClassT
OtLayoutGlyphClassTMark
    toEnum Int
4 = OtLayoutGlyphClassT
OtLayoutGlyphClassTComponent
    toEnum Int
k = Int -> OtLayoutGlyphClassT
AnotherOtLayoutGlyphClassT Int
k

instance P.Ord OtLayoutGlyphClassT where
    compare :: OtLayoutGlyphClassT -> OtLayoutGlyphClassT -> Ordering
compare OtLayoutGlyphClassT
a OtLayoutGlyphClassT
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (OtLayoutGlyphClassT -> Int
forall a. Enum a => a -> Int
P.fromEnum OtLayoutGlyphClassT
a) (OtLayoutGlyphClassT -> Int
forall a. Enum a => a -> Int
P.fromEnum OtLayoutGlyphClassT
b)

-- Enum memory_mode_t
-- | Data type holding the memory modes available to
-- client programs.
-- 
-- Regarding these various memory-modes:
-- 
-- * In no case shall the HarfBuzz client modify memory
-- that is passed to HarfBuzz in a blob.  If there is
-- any such possibility, /@hBMEMORYMODEDUPLICATE@/ should be used
-- such that HarfBuzz makes a copy immediately,
-- * Use /@hBMEMORYMODEREADONLY@/ otherwise, unless you really really
-- really know what you are doing,
-- * /@hBMEMORYMODEWRITABLE@/ is appropriate if you really made a
-- copy of data solely for the purpose of passing to
-- HarfBuzz and doing that just once (no reuse!),
-- * If the font is @/mmap()/@ed, it\'s okay to use
-- /@hBMEMORYMODEREADONLYMAYMAKEWRITABLE@/, however, using that mode
-- correctly is very tricky.  Use /@hBMEMORYMODEREADONLY@/ instead.
data MemoryModeT = 
      MemoryModeTDuplicate
    -- ^ HarfBuzz immediately makes a copy of the data.
    | MemoryModeTReadonly
    -- ^ HarfBuzz client will never modify the data,
    --     and HarfBuzz will never modify the data.
    | MemoryModeTWritable
    -- ^ HarfBuzz client made a copy of the data solely
    --     for HarfBuzz, so HarfBuzz may modify the data.
    | MemoryModeTReadonlyMayMakeWritable
    -- ^ See above
    | AnotherMemoryModeT Int
    -- ^ Catch-all for unknown values
    deriving (Int -> MemoryModeT -> ShowS
[MemoryModeT] -> ShowS
MemoryModeT -> String
(Int -> MemoryModeT -> ShowS)
-> (MemoryModeT -> String)
-> ([MemoryModeT] -> ShowS)
-> Show MemoryModeT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MemoryModeT -> ShowS
showsPrec :: Int -> MemoryModeT -> ShowS
$cshow :: MemoryModeT -> String
show :: MemoryModeT -> String
$cshowList :: [MemoryModeT] -> ShowS
showList :: [MemoryModeT] -> ShowS
Show, MemoryModeT -> MemoryModeT -> Bool
(MemoryModeT -> MemoryModeT -> Bool)
-> (MemoryModeT -> MemoryModeT -> Bool) -> Eq MemoryModeT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MemoryModeT -> MemoryModeT -> Bool
== :: MemoryModeT -> MemoryModeT -> Bool
$c/= :: MemoryModeT -> MemoryModeT -> Bool
/= :: MemoryModeT -> MemoryModeT -> Bool
Eq)

instance P.Enum MemoryModeT where
    fromEnum :: MemoryModeT -> Int
fromEnum MemoryModeT
MemoryModeTDuplicate = Int
0
    fromEnum MemoryModeT
MemoryModeTReadonly = Int
1
    fromEnum MemoryModeT
MemoryModeTWritable = Int
2
    fromEnum MemoryModeT
MemoryModeTReadonlyMayMakeWritable = Int
3
    fromEnum (AnotherMemoryModeT Int
k) = Int
k

    toEnum :: Int -> MemoryModeT
toEnum Int
0 = MemoryModeT
MemoryModeTDuplicate
    toEnum Int
1 = MemoryModeT
MemoryModeTReadonly
    toEnum Int
2 = MemoryModeT
MemoryModeTWritable
    toEnum Int
3 = MemoryModeT
MemoryModeTReadonlyMayMakeWritable
    toEnum Int
k = Int -> MemoryModeT
AnotherMemoryModeT Int
k

instance P.Ord MemoryModeT where
    compare :: MemoryModeT -> MemoryModeT -> Ordering
compare MemoryModeT
a MemoryModeT
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (MemoryModeT -> Int
forall a. Enum a => a -> Int
P.fromEnum MemoryModeT
a) (MemoryModeT -> Int
forall a. Enum a => a -> Int
P.fromEnum MemoryModeT
b)

-- Enum direction_t
-- | The direction of a text segment or buffer.
-- 
-- A segment can also be tested for horizontal or vertical
-- orientation (irrespective of specific direction) with
-- @/HB_DIRECTION_IS_HORIZONTAL()/@ or @/HB_DIRECTION_IS_VERTICAL()/@.
data DirectionT = 
      DirectionTInvalid
    -- ^ Initial, unset direction.
    | DirectionTLtr
    -- ^ Text is set horizontally from left to right.
    | DirectionTRtl
    -- ^ Text is set horizontally from right to left.
    | DirectionTTtb
    -- ^ Text is set vertically from top to bottom.
    | DirectionTBtt
    -- ^ Text is set vertically from bottom to top.
    | AnotherDirectionT Int
    -- ^ Catch-all for unknown values
    deriving (Int -> DirectionT -> ShowS
[DirectionT] -> ShowS
DirectionT -> String
(Int -> DirectionT -> ShowS)
-> (DirectionT -> String)
-> ([DirectionT] -> ShowS)
-> Show DirectionT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DirectionT -> ShowS
showsPrec :: Int -> DirectionT -> ShowS
$cshow :: DirectionT -> String
show :: DirectionT -> String
$cshowList :: [DirectionT] -> ShowS
showList :: [DirectionT] -> ShowS
Show, DirectionT -> DirectionT -> Bool
(DirectionT -> DirectionT -> Bool)
-> (DirectionT -> DirectionT -> Bool) -> Eq DirectionT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DirectionT -> DirectionT -> Bool
== :: DirectionT -> DirectionT -> Bool
$c/= :: DirectionT -> DirectionT -> Bool
/= :: DirectionT -> DirectionT -> Bool
Eq)

instance P.Enum DirectionT where
    fromEnum :: DirectionT -> Int
fromEnum DirectionT
DirectionTInvalid = Int
0
    fromEnum DirectionT
DirectionTLtr = Int
4
    fromEnum DirectionT
DirectionTRtl = Int
5
    fromEnum DirectionT
DirectionTTtb = Int
6
    fromEnum DirectionT
DirectionTBtt = Int
7
    fromEnum (AnotherDirectionT Int
k) = Int
k

    toEnum :: Int -> DirectionT
toEnum Int
0 = DirectionT
DirectionTInvalid
    toEnum Int
4 = DirectionT
DirectionTLtr
    toEnum Int
5 = DirectionT
DirectionTRtl
    toEnum Int
6 = DirectionT
DirectionTTtb
    toEnum Int
7 = DirectionT
DirectionTBtt
    toEnum Int
k = Int -> DirectionT
AnotherDirectionT Int
k

instance P.Ord DirectionT where
    compare :: DirectionT -> DirectionT -> Ordering
compare DirectionT
a DirectionT
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (DirectionT -> Int
forall a. Enum a => a -> Int
P.fromEnum DirectionT
a) (DirectionT -> Int
forall a. Enum a => a -> Int
P.fromEnum DirectionT
b)

-- Enum buffer_content_type_t
-- | The type of t'GI.HarfBuzz.Structs.BufferT.BufferT' contents.
data BufferContentTypeT = 
      BufferContentTypeTInvalid
    -- ^ Initial value for new buffer.
    | BufferContentTypeTUnicode
    -- ^ The buffer contains input characters (before shaping).
    | BufferContentTypeTGlyphs
    -- ^ The buffer contains output glyphs (after shaping).
    | AnotherBufferContentTypeT Int
    -- ^ Catch-all for unknown values
    deriving (Int -> BufferContentTypeT -> ShowS
[BufferContentTypeT] -> ShowS
BufferContentTypeT -> String
(Int -> BufferContentTypeT -> ShowS)
-> (BufferContentTypeT -> String)
-> ([BufferContentTypeT] -> ShowS)
-> Show BufferContentTypeT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BufferContentTypeT -> ShowS
showsPrec :: Int -> BufferContentTypeT -> ShowS
$cshow :: BufferContentTypeT -> String
show :: BufferContentTypeT -> String
$cshowList :: [BufferContentTypeT] -> ShowS
showList :: [BufferContentTypeT] -> ShowS
Show, BufferContentTypeT -> BufferContentTypeT -> Bool
(BufferContentTypeT -> BufferContentTypeT -> Bool)
-> (BufferContentTypeT -> BufferContentTypeT -> Bool)
-> Eq BufferContentTypeT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BufferContentTypeT -> BufferContentTypeT -> Bool
== :: BufferContentTypeT -> BufferContentTypeT -> Bool
$c/= :: BufferContentTypeT -> BufferContentTypeT -> Bool
/= :: BufferContentTypeT -> BufferContentTypeT -> Bool
Eq)

instance P.Enum BufferContentTypeT where
    fromEnum :: BufferContentTypeT -> Int
fromEnum BufferContentTypeT
BufferContentTypeTInvalid = Int
0
    fromEnum BufferContentTypeT
BufferContentTypeTUnicode = Int
1
    fromEnum BufferContentTypeT
BufferContentTypeTGlyphs = Int
2
    fromEnum (AnotherBufferContentTypeT Int
k) = Int
k

    toEnum :: Int -> BufferContentTypeT
toEnum Int
0 = BufferContentTypeT
BufferContentTypeTInvalid
    toEnum Int
1 = BufferContentTypeT
BufferContentTypeTUnicode
    toEnum Int
2 = BufferContentTypeT
BufferContentTypeTGlyphs
    toEnum Int
k = Int -> BufferContentTypeT
AnotherBufferContentTypeT Int
k

instance P.Ord BufferContentTypeT where
    compare :: BufferContentTypeT -> BufferContentTypeT -> Ordering
compare BufferContentTypeT
a BufferContentTypeT
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (BufferContentTypeT -> Int
forall a. Enum a => a -> Int
P.fromEnum BufferContentTypeT
a) (BufferContentTypeT -> Int
forall a. Enum a => a -> Int
P.fromEnum BufferContentTypeT
b)

-- Enum buffer_cluster_level_t
-- | Data type for holding HarfBuzz\'s clustering behavior options. The cluster level
-- dictates one aspect of how HarfBuzz will treat non-base characters
-- during shaping.
-- 
-- In /@hBBUFFERCLUSTERLEVELMONOTONEGRAPHEMES@/, non-base
-- characters are merged into the cluster of the base character that precedes them.
-- 
-- In /@hBBUFFERCLUSTERLEVELMONOTONECHARACTERS@/, non-base characters are initially
-- assigned their own cluster values, which are not merged into preceding base
-- clusters. This allows HarfBuzz to perform additional operations like reorder
-- sequences of adjacent marks.
-- 
-- /@hBBUFFERCLUSTERLEVELMONOTONEGRAPHEMES@/ is the default, because it maintains
-- backward compatibility with older versions of HarfBuzz. New client programs that
-- do not need to maintain such backward compatibility are recommended to use
-- /@hBBUFFERCLUSTERLEVELMONOTONECHARACTERS@/ instead of the default.
-- 
-- /Since: 0.9.42/
data BufferClusterLevelT = 
      BufferClusterLevelTMonotoneGraphemes
    -- ^ Return cluster values grouped by graphemes into
    --   monotone order.
    | BufferClusterLevelTMonotoneCharacters
    -- ^ Return cluster values grouped into monotone order.
    | BufferClusterLevelTCharacters
    -- ^ Don\'t group cluster values.
    | BufferClusterLevelTDefault
    -- ^ Default cluster level,
    --   equal to /@hBBUFFERCLUSTERLEVELMONOTONEGRAPHEMES@/.
    | AnotherBufferClusterLevelT Int
    -- ^ Catch-all for unknown values
    deriving (Int -> BufferClusterLevelT -> ShowS
[BufferClusterLevelT] -> ShowS
BufferClusterLevelT -> String
(Int -> BufferClusterLevelT -> ShowS)
-> (BufferClusterLevelT -> String)
-> ([BufferClusterLevelT] -> ShowS)
-> Show BufferClusterLevelT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BufferClusterLevelT -> ShowS
showsPrec :: Int -> BufferClusterLevelT -> ShowS
$cshow :: BufferClusterLevelT -> String
show :: BufferClusterLevelT -> String
$cshowList :: [BufferClusterLevelT] -> ShowS
showList :: [BufferClusterLevelT] -> ShowS
Show, BufferClusterLevelT -> BufferClusterLevelT -> Bool
(BufferClusterLevelT -> BufferClusterLevelT -> Bool)
-> (BufferClusterLevelT -> BufferClusterLevelT -> Bool)
-> Eq BufferClusterLevelT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BufferClusterLevelT -> BufferClusterLevelT -> Bool
== :: BufferClusterLevelT -> BufferClusterLevelT -> Bool
$c/= :: BufferClusterLevelT -> BufferClusterLevelT -> Bool
/= :: BufferClusterLevelT -> BufferClusterLevelT -> Bool
Eq)

instance P.Enum BufferClusterLevelT where
    fromEnum :: BufferClusterLevelT -> Int
fromEnum BufferClusterLevelT
BufferClusterLevelTMonotoneGraphemes = Int
0
    fromEnum BufferClusterLevelT
BufferClusterLevelTMonotoneCharacters = Int
1
    fromEnum BufferClusterLevelT
BufferClusterLevelTCharacters = Int
2
    fromEnum BufferClusterLevelT
BufferClusterLevelTDefault = Int
0
    fromEnum (AnotherBufferClusterLevelT Int
k) = Int
k

    toEnum :: Int -> BufferClusterLevelT
toEnum Int
0 = BufferClusterLevelT
BufferClusterLevelTMonotoneGraphemes
    toEnum Int
1 = BufferClusterLevelT
BufferClusterLevelTMonotoneCharacters
    toEnum Int
2 = BufferClusterLevelT
BufferClusterLevelTCharacters
    toEnum Int
k = Int -> BufferClusterLevelT
AnotherBufferClusterLevelT Int
k

instance P.Ord BufferClusterLevelT where
    compare :: BufferClusterLevelT -> BufferClusterLevelT -> Ordering
compare BufferClusterLevelT
a BufferClusterLevelT
b = Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
P.compare (BufferClusterLevelT -> Int
forall a. Enum a => a -> Int
P.fromEnum BufferClusterLevelT
a) (BufferClusterLevelT -> Int
forall a. Enum a => a -> Int
P.fromEnum BufferClusterLevelT
b)