{-# LINE 1 "FreeType/Circular/Types.hsc" #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE PatternSynonyms #-}

module FreeType.Circular.Types where

import          FreeType.Core.Types.Types

import          Data.Int
import          Data.Function ((&))
import          Data.Word
import          Foreign.Ptr
import          Foreign.Storable




type FT_Library = Ptr FT_LibraryRec

data FT_LibraryRec



type FT_Face = Ptr FT_FaceRec

data FT_FaceRec = FT_FaceRec
                    { frNum_faces           :: FT_Long
                    , frFace_index          :: FT_Long
                    , frFace_flags          :: FT_Long
                    , frStyle_flags         :: FT_Long
                    , frNum_glyphs          :: FT_Long
                    , frFamily_name         :: Ptr FT_String
                    , frStyle_name          :: Ptr FT_String
                    , frNum_fixed_sizes     :: FT_Int
                    , frAvailable_sizes     :: Ptr FT_Bitmap_Size
                    , frNum_charmaps        :: FT_Int
                    , frCharmaps            :: Ptr FT_CharMap
                    , frGeneric             :: FT_Generic
                    , frBbox                :: FT_BBox
                    , frUnits_per_EM        :: FT_UShort
                    , frAscender            :: FT_Short
                    , frDescender           :: FT_Short
                    , frHeight              :: FT_Short
                    , frMax_advance_width   :: FT_Short
                    , frMax_advance_height  :: FT_Short
                    , frUnderline_position  :: FT_Short
                    , frUnderline_thickness :: FT_Short
                    , frGlyph               :: FT_GlyphSlot
                    , frSize                :: FT_Size
                    , frCharmap             :: FT_CharMap
                    , frDriver              :: FT_Driver
                    , frMemory              :: FT_Memory
                    , frStream              :: FT_Stream
                    , frSizes_list          :: FT_ListRec
                    , frAutohint            :: FT_Generic
                    , frExtensions          :: Ptr ()
                    , frInternal            :: FT_Face_Internal
                    }

instance Storable FT_FaceRec where
  sizeOf _    = (248)
{-# LINE 62 "FreeType/Circular/Types.hsc" #-}
  alignment _ = 8
{-# LINE 63 "FreeType/Circular/Types.hsc" #-}

  peek ptr =
    FT_FaceRec
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 67 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 68 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 69 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 70 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 71 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 40) ptr
{-# LINE 72 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 48) ptr
{-# LINE 73 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 56) ptr
{-# LINE 74 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 64) ptr
{-# LINE 75 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 72) ptr
{-# LINE 76 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 80) ptr
{-# LINE 77 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 88) ptr
{-# LINE 78 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 104) ptr
{-# LINE 79 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 136) ptr
{-# LINE 80 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 138) ptr
{-# LINE 81 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 140) ptr
{-# LINE 82 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 142) ptr
{-# LINE 83 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 144) ptr
{-# LINE 84 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 146) ptr
{-# LINE 85 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 148) ptr
{-# LINE 86 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 150) ptr
{-# LINE 87 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 152) ptr
{-# LINE 88 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 160) ptr
{-# LINE 89 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 168) ptr
{-# LINE 90 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 176) ptr
{-# LINE 91 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 184) ptr
{-# LINE 92 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 192) ptr
{-# LINE 93 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 200) ptr
{-# LINE 94 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 216) ptr
{-# LINE 95 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 232) ptr
{-# LINE 96 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 240) ptr
{-# LINE 97 "FreeType/Circular/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & frNum_faces
{-# LINE 100 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & frFace_index
{-# LINE 101 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & frFace_flags
{-# LINE 102 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & frStyle_flags
{-# LINE 103 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 32) ptr $ val & frNum_glyphs
{-# LINE 104 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 40) ptr $ val & frFamily_name
{-# LINE 105 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 48) ptr $ val & frStyle_name
{-# LINE 106 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 56) ptr $ val & frNum_fixed_sizes
{-# LINE 107 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 64) ptr $ val & frAvailable_sizes
{-# LINE 108 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 72) ptr $ val & frNum_charmaps
{-# LINE 109 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 80) ptr $ val & frCharmaps
{-# LINE 110 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 88) ptr $ val & frGeneric
{-# LINE 111 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 104) ptr $ val & frBbox
{-# LINE 112 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 136) ptr $ val & frUnits_per_EM
{-# LINE 113 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 138) ptr $ val & frAscender
{-# LINE 114 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 140) ptr $ val & frDescender
{-# LINE 115 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 142) ptr $ val & frHeight
{-# LINE 116 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 144) ptr $ val & frMax_advance_width
{-# LINE 117 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 146) ptr $ val & frMax_advance_height
{-# LINE 118 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 148) ptr $ val & frUnderline_position
{-# LINE 119 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 150) ptr $ val & frUnderline_thickness
{-# LINE 120 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 152) ptr $ val & frGlyph
{-# LINE 121 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 160) ptr $ val & frSize
{-# LINE 122 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 168) ptr $ val & frCharmap
{-# LINE 123 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 176) ptr $ val & frDriver
{-# LINE 124 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 184) ptr $ val & frMemory
{-# LINE 125 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 192) ptr $ val & frStream
{-# LINE 126 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 200) ptr $ val & frSizes_list
{-# LINE 127 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 216) ptr $ val & frAutohint
{-# LINE 128 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 232) ptr $ val & frExtensions
{-# LINE 129 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 240) ptr $ val & frInternal
{-# LINE 130 "FreeType/Circular/Types.hsc" #-}



data FT_Bitmap_Size = FT_Bitmap_Size
                        { bsHeight :: FT_Short
                        , bsWidth  :: FT_Short
                        , bsSize   :: FT_Pos
                        , bsX_ppem :: FT_Pos
                        , bsY_ppem :: FT_Pos
                        }

instance Storable FT_Bitmap_Size where
  sizeOf _    = (32)
{-# LINE 143 "FreeType/Circular/Types.hsc" #-}
  alignment _ = 8
{-# LINE 144 "FreeType/Circular/Types.hsc" #-}

  peek ptr =
    FT_Bitmap_Size
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 148 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr
{-# LINE 149 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 150 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 151 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 152 "FreeType/Circular/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & bsHeight
{-# LINE 155 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr $ val & bsWidth
{-# LINE 156 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & bsSize
{-# LINE 157 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & bsX_ppem
{-# LINE 158 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & bsY_ppem
{-# LINE 159 "FreeType/Circular/Types.hsc" #-}




type FT_CharMap = Ptr FT_CharMapRec

data FT_CharMapRec = FT_CharMapRec
                       { cmrFace        :: FT_Face
                       , cmrEncoding    :: FT_Encoding
                       , cmrPlatform_id :: FT_UShort
                       , cmrEncoding_id :: FT_UShort
                       }

instance Storable FT_CharMapRec where
  sizeOf _    = (16)
{-# LINE 174 "FreeType/Circular/Types.hsc" #-}
  alignment _ = 8
{-# LINE 175 "FreeType/Circular/Types.hsc" #-}

  peek ptr =
    FT_CharMapRec
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 179 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 180 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 12) ptr
{-# LINE 181 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 14) ptr
{-# LINE 182 "FreeType/Circular/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & cmrFace
{-# LINE 185 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & cmrEncoding
{-# LINE 186 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 12) ptr $ val & cmrPlatform_id
{-# LINE 187 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 14) ptr $ val & cmrEncoding_id
{-# LINE 188 "FreeType/Circular/Types.hsc" #-}



type FT_Encoding = FT_UInt

pattern FT_ENCODING_NONE
      , FT_ENCODING_MS_SYMBOL
      , FT_ENCODING_UNICODE
      , FT_ENCODING_SJIS
      , FT_ENCODING_PRC
      , FT_ENCODING_BIG5
      , FT_ENCODING_WANSUNG
      , FT_ENCODING_JOHAB
      , FT_ENCODING_GB2312
      , FT_ENCODING_MS_SJIS
      , FT_ENCODING_MS_GB2312
      , FT_ENCODING_MS_BIG5
      , FT_ENCODING_MS_WANSUNG
      , FT_ENCODING_MS_JOHAB
      , FT_ENCODING_ADOBE_STANDARD
      , FT_ENCODING_ADOBE_EXPERT
      , FT_ENCODING_ADOBE_CUSTOM
      , FT_ENCODING_ADOBE_LATIN_1
      , FT_ENCODING_OLD_LATIN_2
      , FT_ENCODING_APPLE_ROMAN
     :: (Eq a, Num a) => a
pattern FT_ENCODING_NONE           = 0
{-# LINE 215 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_MS_SYMBOL      = 1937337698
{-# LINE 216 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_UNICODE        = 1970170211
{-# LINE 217 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_SJIS           = 1936353651
{-# LINE 218 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_PRC            = 1734484000
{-# LINE 219 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_BIG5           = 1651074869
{-# LINE 220 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_WANSUNG        = 2002873971
{-# LINE 221 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_JOHAB          = 1785686113
{-# LINE 222 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_GB2312         = 1734484000
{-# LINE 223 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_MS_SJIS        = 1936353651
{-# LINE 224 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_MS_GB2312      = 1734484000
{-# LINE 225 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_MS_BIG5        = 1651074869
{-# LINE 226 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_MS_WANSUNG     = 2002873971
{-# LINE 227 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_MS_JOHAB       = 1785686113
{-# LINE 228 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_ADOBE_STANDARD = 1094995778
{-# LINE 229 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_ADOBE_EXPERT   = 1094992453
{-# LINE 230 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_ADOBE_CUSTOM   = 1094992451
{-# LINE 231 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_ADOBE_LATIN_1  = 1818326065
{-# LINE 232 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_OLD_LATIN_2    = 1818326066
{-# LINE 233 "FreeType/Circular/Types.hsc" #-}
pattern FT_ENCODING_APPLE_ROMAN    = 1634889070
{-# LINE 234 "FreeType/Circular/Types.hsc" #-}



type FT_GlyphSlot = Ptr FT_GlyphSlotRec

data FT_GlyphSlotRec = FT_GlyphSlotRec
                         { gsrLibrary           :: FT_Library
                         , gsrFace              :: FT_Face
                         , gsrNext              :: FT_GlyphSlot
                         , gsrGlyph_index       :: FT_UInt
                         , gsrGeneric           :: FT_Generic
                         , gsrMetrics           :: FT_Glyph_Metrics
                         , gsrLinearHoriAdvance :: FT_Fixed
                         , gsrLinearVertAdvance :: FT_Fixed
                         , gsrAdvance           :: FT_Vector
                         , gsrFormat            :: FT_Glyph_Format
                         , gsrBitmap            :: FT_Bitmap
                         , gsrBitmap_left       :: FT_Int
                         , gsrBitmap_top        :: FT_Int
                         , gsrOutline           :: FT_Outline
                         , gsrNum_subglyphs     :: FT_UInt
                         , gsrSubglyphs         :: FT_SubGlyph
                         , gsrControl_data      :: Ptr ()
                         , gsrControl_len       :: Int64
{-# LINE 258 "FreeType/Circular/Types.hsc" #-}
                         , gsrLsb_delta         :: FT_Pos
                         , gsrRsb_delta         :: FT_Pos
                         , gsrOther             :: Ptr ()
                         , gsrInternal          :: FT_Slot_Internal
                         }

instance Storable FT_GlyphSlotRec where
  sizeOf _    = (304)
{-# LINE 266 "FreeType/Circular/Types.hsc" #-}
  alignment _ = 8
{-# LINE 267 "FreeType/Circular/Types.hsc" #-}

  peek ptr =
    FT_GlyphSlotRec
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 271 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 272 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 273 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 274 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 275 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 48) ptr
{-# LINE 276 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 112) ptr
{-# LINE 277 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 120) ptr
{-# LINE 278 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 128) ptr
{-# LINE 279 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 144) ptr
{-# LINE 280 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 152) ptr
{-# LINE 281 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 192) ptr
{-# LINE 282 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 196) ptr
{-# LINE 283 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 200) ptr
{-# LINE 284 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 240) ptr
{-# LINE 285 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 248) ptr
{-# LINE 286 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 256) ptr
{-# LINE 287 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 264) ptr
{-# LINE 288 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 272) ptr
{-# LINE 289 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 280) ptr
{-# LINE 290 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 288) ptr
{-# LINE 291 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 296) ptr
{-# LINE 292 "FreeType/Circular/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & gsrLibrary
{-# LINE 295 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & gsrFace
{-# LINE 296 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & gsrNext
{-# LINE 297 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & gsrGlyph_index
{-# LINE 298 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 32) ptr $ val & gsrGeneric
{-# LINE 299 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 48) ptr $ val & gsrMetrics
{-# LINE 300 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 112) ptr $ val & gsrLinearHoriAdvance
{-# LINE 301 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 120) ptr $ val & gsrLinearVertAdvance
{-# LINE 302 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 128) ptr $ val & gsrAdvance
{-# LINE 303 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 144) ptr $ val & gsrFormat
{-# LINE 304 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 152) ptr $ val & gsrBitmap
{-# LINE 305 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 192) ptr $ val & gsrBitmap_left
{-# LINE 306 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 196) ptr $ val & gsrBitmap_top
{-# LINE 307 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 200) ptr $ val & gsrOutline
{-# LINE 308 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 240) ptr $ val & gsrNum_subglyphs
{-# LINE 309 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 248) ptr $ val & gsrSubglyphs
{-# LINE 310 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 256) ptr $ val & gsrControl_data
{-# LINE 311 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 264) ptr $ val & gsrControl_len
{-# LINE 312 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 272) ptr $ val & gsrLsb_delta
{-# LINE 313 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 280) ptr $ val & gsrRsb_delta
{-# LINE 314 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 288) ptr $ val & gsrOther
{-# LINE 315 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 296) ptr $ val & gsrInternal
{-# LINE 316 "FreeType/Circular/Types.hsc" #-}



type FT_Size = Ptr FT_SizeRec

data FT_SizeRec = FT_SizeRec
                    { srFace     :: FT_Face
                    , srGeneric  :: FT_Generic
                    , srMetrics  :: FT_Size_Metrics
                    , srInternal :: FT_Size_Internal
                    }

instance Storable FT_SizeRec where
  sizeOf _    = (88)
{-# LINE 330 "FreeType/Circular/Types.hsc" #-}
  alignment _ = 8
{-# LINE 331 "FreeType/Circular/Types.hsc" #-}

  peek ptr =
    FT_SizeRec
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 335 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 336 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 337 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 80) ptr
{-# LINE 338 "FreeType/Circular/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & srFace
{-# LINE 341 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & srGeneric
{-# LINE 342 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & srMetrics
{-# LINE 343 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 80) ptr $ val & srInternal
{-# LINE 344 "FreeType/Circular/Types.hsc" #-}



data FT_Face_InternalRec
type FT_Face_Internal = Ptr FT_Face_InternalRec



data FT_Size_InternalRec
type FT_Size_Internal = Ptr FT_Size_InternalRec



data FT_Slot_InternalRec
type FT_Slot_Internal = Ptr FT_Slot_InternalRec



data FT_Glyph_Metrics = FT_Glyph_Metrics
                          { gmWidth        :: FT_Pos
                          , gmHeight       :: FT_Pos
                          , gmHoriBearingX :: FT_Pos
                          , gmHoriBearingY :: FT_Pos
                          , gmHoriAdvance  :: FT_Pos
                          , gmVertBearingX :: FT_Pos
                          , gmVertBearingY :: FT_Pos
                          , gmVertAdvance  :: FT_Pos
                          }

instance Storable FT_Glyph_Metrics where
  sizeOf _    = (64)
{-# LINE 375 "FreeType/Circular/Types.hsc" #-}
  alignment _ = 8
{-# LINE 376 "FreeType/Circular/Types.hsc" #-}

  peek ptr =
    FT_Glyph_Metrics
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 380 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 381 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 382 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 383 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 384 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 40) ptr
{-# LINE 385 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 48) ptr
{-# LINE 386 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 56) ptr
{-# LINE 387 "FreeType/Circular/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & gmWidth
{-# LINE 390 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & gmHeight
{-# LINE 391 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & gmHoriBearingX
{-# LINE 392 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & gmHoriBearingY
{-# LINE 393 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 32) ptr $ val & gmHoriAdvance
{-# LINE 394 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 40) ptr $ val & gmVertBearingX
{-# LINE 395 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 48) ptr $ val & gmVertBearingY
{-# LINE 396 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 56) ptr $ val & gmVertAdvance
{-# LINE 397 "FreeType/Circular/Types.hsc" #-}



data FT_SubGlyphRec
type FT_SubGlyph = Ptr FT_SubGlyphRec



data FT_Size_Metrics = FT_Size_Metrics
                         { smX_ppem      :: FT_UShort
                         , smY_ppem      :: FT_UShort
                         , smX_scale     :: FT_Fixed
                         , smY_scale     :: FT_Fixed
                         , smAscender    :: FT_Pos
                         , smDescender   :: FT_Pos
                         , smHeight      :: FT_Pos
                         , smMax_advance :: FT_Pos
                         }

instance Storable FT_Size_Metrics where
  sizeOf _    = (56)
{-# LINE 418 "FreeType/Circular/Types.hsc" #-}
  alignment _ = 8
{-# LINE 419 "FreeType/Circular/Types.hsc" #-}

  peek ptr =
    FT_Size_Metrics
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 423 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr
{-# LINE 424 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 425 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 426 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 427 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 428 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 40) ptr
{-# LINE 429 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 48) ptr
{-# LINE 430 "FreeType/Circular/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & smX_ppem
{-# LINE 433 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr $ val & smY_ppem
{-# LINE 434 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & smX_scale
{-# LINE 435 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & smY_scale
{-# LINE 436 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & smAscender
{-# LINE 437 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 32) ptr $ val & smDescender
{-# LINE 438 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 40) ptr $ val & smHeight
{-# LINE 439 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 48) ptr $ val & smMax_advance
{-# LINE 440 "FreeType/Circular/Types.hsc" #-}


data FT_ModuleRec
type FT_Module = Ptr FT_ModuleRec



data FT_DriverRec
type FT_Driver = Ptr FT_DriverRec



type FT_Memory = Ptr FT_MemoryRec

data FT_MemoryRec = FT_MemoryRec
                      { mrUser    :: Ptr ()
                      , mrAlloc   :: FunPtr FT_Alloc_Func
                      , mrFree    :: FunPtr FT_Free_Func
                      , mrRealloc :: FunPtr FT_Realloc_Func
                      }

instance Storable FT_MemoryRec where
  sizeOf _    = (32)
{-# LINE 463 "FreeType/Circular/Types.hsc" #-}
  alignment _ = 8
{-# LINE 464 "FreeType/Circular/Types.hsc" #-}

  peek ptr =
    FT_MemoryRec
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 468 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 469 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 470 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 471 "FreeType/Circular/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & mrUser
{-# LINE 474 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & mrAlloc
{-# LINE 475 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & mrFree
{-# LINE 476 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & mrRealloc
{-# LINE 477 "FreeType/Circular/Types.hsc" #-}



type FT_Alloc_Func = FT_Memory    -- ^ memory
                  -> Int64 -- ^ size
{-# LINE 482 "FreeType/Circular/Types.hsc" #-}
                  -> IO (Ptr ())

foreign import ccall "wrapper"
  ft_Alloc_Func :: FT_Alloc_Func -> IO (FunPtr FT_Alloc_Func)

foreign import ccall "dynamic"
  ft_Alloc_Func' :: FunPtr FT_Alloc_Func -> FT_Alloc_Func



type FT_Free_Func = FT_Memory -- ^ memory
                 -> Ptr ()    -- ^ block
                 -> IO ()

foreign import ccall "wrapper"
  ft_Free_Func :: FT_Free_Func -> IO (FunPtr FT_Free_Func)

foreign import ccall "dynamic"
  ft_Free_Func' :: FunPtr FT_Free_Func -> FT_Free_Func



type FT_Realloc_Func = FT_Memory    -- ^ memory
                    -> Int64 -- ^ cur_size
{-# LINE 506 "FreeType/Circular/Types.hsc" #-}
                    -> Int64 -- ^ new_size
{-# LINE 507 "FreeType/Circular/Types.hsc" #-}
                    -> Ptr ()       -- ^ block
                    -> IO (Ptr ())

foreign import ccall "wrapper"
  ft_Realloc_Func :: FT_Realloc_Func -> IO (FunPtr FT_Realloc_Func)

foreign import ccall "dynamic"
  ft_Realloc_Func' :: FunPtr FT_Realloc_Func -> FT_Realloc_Func



type FT_Stream = Ptr FT_StreamRec

data FT_StreamRec = FT_StreamRec
                      { srBase       :: Ptr Word8
{-# LINE 522 "FreeType/Circular/Types.hsc" #-}
                      , srSize       :: Word64
{-# LINE 523 "FreeType/Circular/Types.hsc" #-}
                      , srPos        :: Word64
{-# LINE 524 "FreeType/Circular/Types.hsc" #-}
                      , srDescriptor :: FT_StreamDesc
                      , srPathname   :: FT_StreamDesc
                      , srRead       :: Ptr FT_Stream_IoFunc
                      , srClose      :: Ptr FT_Stream_CloseFunc
                      , srMemory     :: FT_Memory
                      , srCursor     :: Ptr Word8
{-# LINE 530 "FreeType/Circular/Types.hsc" #-}
                      , srLimit      :: Ptr Word8
{-# LINE 531 "FreeType/Circular/Types.hsc" #-}
                      }

instance Storable FT_StreamRec where
  sizeOf _    = (80)
{-# LINE 535 "FreeType/Circular/Types.hsc" #-}
  alignment _ = 8
{-# LINE 536 "FreeType/Circular/Types.hsc" #-}

  peek ptr =
    FT_StreamRec
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 540 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 541 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 542 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 543 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 544 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 40) ptr
{-# LINE 545 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 48) ptr
{-# LINE 546 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 56) ptr
{-# LINE 547 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 64) ptr
{-# LINE 548 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 72) ptr
{-# LINE 549 "FreeType/Circular/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & srBase
{-# LINE 552 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & srSize
{-# LINE 553 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & srPos
{-# LINE 554 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & srDescriptor
{-# LINE 555 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 32) ptr $ val & srPathname
{-# LINE 556 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 40) ptr $ val & srRead
{-# LINE 557 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 48) ptr $ val & srClose
{-# LINE 558 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 56) ptr $ val & srMemory
{-# LINE 559 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 64) ptr $ val & srCursor
{-# LINE 560 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 72) ptr $ val & srLimit
{-# LINE 561 "FreeType/Circular/Types.hsc" #-}



type FT_Stream_IoFunc = FT_Stream                 -- ^ stream
                     -> Word64     -- ^ offset
{-# LINE 566 "FreeType/Circular/Types.hsc" #-}
                     -> Ptr Word8 -- ^ buffer
{-# LINE 567 "FreeType/Circular/Types.hsc" #-}
                     -> Word64     -- ^ count
{-# LINE 568 "FreeType/Circular/Types.hsc" #-}
                     -> Word64
{-# LINE 569 "FreeType/Circular/Types.hsc" #-}

foreign import ccall "wrapper"
  ft_Stream_IoFunc :: FT_Stream_IoFunc -> IO (FunPtr FT_Stream_IoFunc)

foreign import ccall "dynamic"
  ft_Stream_IoFunc' :: FunPtr FT_Stream_IoFunc -> FT_Stream_IoFunc



type FT_Stream_CloseFunc = FT_Stream -- ^ stream
                        -> IO ()

foreign import ccall "wrapper"
  ft_Stream_CloseFunc :: FT_Stream_CloseFunc -> IO (FunPtr FT_Stream_CloseFunc)

foreign import ccall "dynamic"
  ft_Stream_CloseFunc' :: FunPtr FT_Stream_CloseFunc -> FT_Stream_CloseFunc



data FT_StreamDesc = FT_StreamDesc
                       { sdValue   :: Int64
{-# LINE 591 "FreeType/Circular/Types.hsc" #-}
                       , sdPointer :: Ptr ()
                       }

instance Storable FT_StreamDesc where
  sizeOf _    = (8)
{-# LINE 596 "FreeType/Circular/Types.hsc" #-}
  alignment _ = 8
{-# LINE 597 "FreeType/Circular/Types.hsc" #-}

  peek ptr =
    FT_StreamDesc
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 601 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 602 "FreeType/Circular/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & sdValue
{-# LINE 605 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & sdPointer
{-# LINE 606 "FreeType/Circular/Types.hsc" #-}




data FT_Outline = FT_Outline
                    { oN_contours :: Int16
{-# LINE 612 "FreeType/Circular/Types.hsc" #-}
                    , oN_points   :: Int16
{-# LINE 613 "FreeType/Circular/Types.hsc" #-}
                    , oPoints     :: Ptr FT_Vector
                    , oTags       :: Ptr Int8
{-# LINE 615 "FreeType/Circular/Types.hsc" #-}
                    , oContours   :: Ptr Int16
{-# LINE 616 "FreeType/Circular/Types.hsc" #-}
                    , oFlags      :: Int32
{-# LINE 617 "FreeType/Circular/Types.hsc" #-}
                    }

instance Storable FT_Outline where
  sizeOf _    = (40)
{-# LINE 621 "FreeType/Circular/Types.hsc" #-}
  alignment _ = 8
{-# LINE 622 "FreeType/Circular/Types.hsc" #-}

  peek ptr =
    FT_Outline
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 626 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr
{-# LINE 627 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 628 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 629 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 630 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 631 "FreeType/Circular/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & oN_contours
{-# LINE 634 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr $ val & oN_points
{-# LINE 635 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & oPoints
{-# LINE 636 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & oTags
{-# LINE 637 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & oContours
{-# LINE 638 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 32) ptr $ val & oFlags
{-# LINE 639 "FreeType/Circular/Types.hsc" #-}



type FT_List = Ptr FT_ListRec

data FT_ListRec = FT_ListRec
                    { lrHead :: FT_ListNode
                    , lrTail :: FT_ListNode
                    }

instance Storable FT_ListRec where
  sizeOf _    = (16)
{-# LINE 651 "FreeType/Circular/Types.hsc" #-}
  alignment _ = 8
{-# LINE 652 "FreeType/Circular/Types.hsc" #-}

  peek ptr =
    FT_ListRec
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 656 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 657 "FreeType/Circular/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & lrHead
{-# LINE 660 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & lrTail
{-# LINE 661 "FreeType/Circular/Types.hsc" #-}



type FT_ListNode = Ptr FT_ListNodeRec

data FT_ListNodeRec = FT_ListNodeRec
                        { lnrPrev :: FT_ListNode
                        , lnrNext :: FT_ListNode
                        , lnrData :: Ptr ()
                        }

instance Storable FT_ListNodeRec where
  sizeOf _    = (24)
{-# LINE 674 "FreeType/Circular/Types.hsc" #-}
  alignment _ = 8
{-# LINE 675 "FreeType/Circular/Types.hsc" #-}

  peek ptr =
    FT_ListNodeRec
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 679 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 680 "FreeType/Circular/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 681 "FreeType/Circular/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & lnrPrev
{-# LINE 684 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & lnrNext
{-# LINE 685 "FreeType/Circular/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & lnrData
{-# LINE 686 "FreeType/Circular/Types.hsc" #-}