{-# LINE 1 "FreeType/Cache/Types.hsc" #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# OPTIONS_HADDOCK hide #-}

module FreeType.Cache.Types where

import           FreeType.Core.Base.Types
import           FreeType.Core.Types.Types

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




data FTC_ManagerRec
type FTC_Manager = Ptr FTC_ManagerRec



type FTC_FaceID = FT_Pointer



type FTC_Face_Requester = FunPtr (FTC_FaceID -> FT_Library -> FT_Pointer -> Ptr FT_Face -> IO FT_Error)



data FTC_NodeRec
type FTC_Node = Ptr FTC_NodeRec



data FTC_ImageCacheRec
type FTC_ImageCache = Ptr FTC_ImageCacheRec



type FTC_SBit = Ptr FTC_SBitRec



data FTC_SBitCacheRec
type FTC_SBitCache = Ptr FTC_SBitCacheRec



data FTC_CMapCacheRec
type FTC_CMapCache = Ptr FTC_CMapCacheRec



data FTC_ScalerRec = FTC_ScalerRec
                       { srFace_id :: FTC_FaceID
                       , srWidth   :: FT_UInt
                       , srHeight  :: FT_UInt
                       , srPixel   :: FT_Int
                       , srX_res   :: FT_UInt
                       , srY_res   :: FT_UInt
                       }

instance Storable FTC_ScalerRec where
  sizeOf _    = (32)
{-# LINE 65 "FreeType/Cache/Types.hsc" #-}
  alignment _ = 8
{-# LINE 66 "FreeType/Cache/Types.hsc" #-}

  peek ptr =
    FTC_ScalerRec
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 70 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 71 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 12) ptr
{-# LINE 72 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 73 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 20) ptr
{-# LINE 74 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 75 "FreeType/Cache/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & srFace_id
{-# LINE 78 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & srWidth
{-# LINE 79 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 12) ptr $ val & srHeight
{-# LINE 80 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & srPixel
{-# LINE 81 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 20) ptr $ val & srX_res
{-# LINE 82 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & srY_res
{-# LINE 83 "FreeType/Cache/Types.hsc" #-}



type FTC_Scaler = Ptr FTC_ScalerRec



data FTC_ImageTypeRec = FTC_ImageTypeRec
                           { itrFace_id :: FTC_FaceID
                           , itrWidth   :: FT_UInt
                           , itrHeight  :: FT_UInt
                           , itrFlags   :: FT_Int32
                           }

instance Storable FTC_ImageTypeRec where
  sizeOf _    = (24)
{-# LINE 99 "FreeType/Cache/Types.hsc" #-}
  alignment _ = 8
{-# LINE 100 "FreeType/Cache/Types.hsc" #-}

  peek ptr =
    FTC_ImageTypeRec
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 104 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 105 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 12) ptr
{-# LINE 106 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 107 "FreeType/Cache/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & itrFace_id
{-# LINE 110 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & itrWidth
{-# LINE 111 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 12) ptr $ val & itrHeight
{-# LINE 112 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & itrFlags
{-# LINE 113 "FreeType/Cache/Types.hsc" #-}


type FTC_ImageType = Ptr FTC_ImageTypeRec


data FTC_SBitRec = FTC_SBitRec
                     { sbrWidth     :: FT_Byte
                     , sbrHeight    :: FT_Byte
                     , sbrLeft      :: FT_Char
                     , sbrTop       :: FT_Char
                     , sbrFormat    :: FT_Byte
                     , sbrMax_grays :: FT_Byte
                     , sbrPitch     :: FT_Short
                     , sbrXadvance  :: FT_Char
                     , sbrYadvance  :: FT_Char
                     , sbrBuffer    :: Ptr FT_Byte
                     }

instance Storable FTC_SBitRec where
  sizeOf _    = (24)
{-# LINE 133 "FreeType/Cache/Types.hsc" #-}
  alignment _ = 8
{-# LINE 134 "FreeType/Cache/Types.hsc" #-}

  peek ptr =
    FTC_SBitRec
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 138 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 1) ptr
{-# LINE 139 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr
{-# LINE 140 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 3) ptr
{-# LINE 141 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr
{-# LINE 142 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 5) ptr
{-# LINE 143 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 6) ptr
{-# LINE 144 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 145 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 9) ptr
{-# LINE 146 "FreeType/Cache/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 147 "FreeType/Cache/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & sbrWidth
{-# LINE 150 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 1) ptr $ val & sbrHeight
{-# LINE 151 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr $ val & sbrLeft
{-# LINE 152 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 3) ptr $ val & sbrTop
{-# LINE 153 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr $ val & sbrFormat
{-# LINE 154 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 5) ptr $ val & sbrMax_grays
{-# LINE 155 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 6) ptr $ val & sbrPitch
{-# LINE 156 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & sbrXadvance
{-# LINE 157 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 9) ptr $ val & sbrYadvance
{-# LINE 158 "FreeType/Cache/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & sbrBuffer
{-# LINE 159 "FreeType/Cache/Types.hsc" #-}