{-# LINE 1 "FreeType/Format/Multiple/Types.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}

module FreeType.Format.Multiple.Types where

import           FreeType.Core.Types.Types

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




data FT_MM_Axis = FT_MM_Axis
                    { mmaName    :: Ptr FT_String
                    , mmaMinimum :: FT_Long
                    , mmaMaximum :: FT_Long
                    }

instance Storable FT_MM_Axis where
  sizeOf _    = (24)
{-# LINE 22 "FreeType/Format/Multiple/Types.hsc" #-}
  alignment _ = 8
{-# LINE 23 "FreeType/Format/Multiple/Types.hsc" #-}

  peek ptr =
    FT_MM_Axis
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 27 "FreeType/Format/Multiple/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 28 "FreeType/Format/Multiple/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 29 "FreeType/Format/Multiple/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & mmaName
{-# LINE 32 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & mmaMinimum
{-# LINE 33 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & mmaMaximum
{-# LINE 34 "FreeType/Format/Multiple/Types.hsc" #-}



data FT_Multi_Master = FT_Multi_Master
                         { mmNum_axis    :: FT_UInt
                         , mmNum_designs :: FT_UInt
                         , mmAxis        :: Ptr FT_MM_Axis
                         }

instance Storable FT_Multi_Master where
  sizeOf _    = (104)
{-# LINE 45 "FreeType/Format/Multiple/Types.hsc" #-}
  alignment _ = 8
{-# LINE 46 "FreeType/Format/Multiple/Types.hsc" #-}

  peek ptr =
    FT_Multi_Master
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 50 "FreeType/Format/Multiple/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr
{-# LINE 51 "FreeType/Format/Multiple/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 52 "FreeType/Format/Multiple/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & mmNum_axis
{-# LINE 55 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr $ val & mmNum_designs
{-# LINE 56 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & mmAxis
{-# LINE 57 "FreeType/Format/Multiple/Types.hsc" #-}



data FT_Var_Axis = FT_Var_Axis
                     { vaName    :: Ptr FT_String
                     , vaMinimum :: FT_Fixed
                     , vaDef     :: FT_Fixed
                     , vaMaximum :: FT_Fixed
                     , vaTag     :: FT_ULong
                     , vaStrid   :: FT_UInt
                     }

instance Storable FT_Var_Axis where
  sizeOf _    = (48)
{-# LINE 71 "FreeType/Format/Multiple/Types.hsc" #-}
  alignment _ = 8
{-# LINE 72 "FreeType/Format/Multiple/Types.hsc" #-}

  peek ptr =
    FT_Var_Axis
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 76 "FreeType/Format/Multiple/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 77 "FreeType/Format/Multiple/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 78 "FreeType/Format/Multiple/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 79 "FreeType/Format/Multiple/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 80 "FreeType/Format/Multiple/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 40) ptr
{-# LINE 81 "FreeType/Format/Multiple/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & vaName
{-# LINE 84 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & vaMinimum
{-# LINE 85 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & vaDef
{-# LINE 86 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & vaMaximum
{-# LINE 87 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 32) ptr $ val & vaTag
{-# LINE 88 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 40) ptr $ val & vaStrid
{-# LINE 89 "FreeType/Format/Multiple/Types.hsc" #-}



data FT_Var_Named_Style = FT_Var_Named_Style
                            { vnsCoords :: Ptr FT_Fixed
                            , vnsStrid  :: FT_UInt
                            , vnsPsid   :: FT_UInt
                            }

instance Storable FT_Var_Named_Style where
  sizeOf _    = (16)
{-# LINE 100 "FreeType/Format/Multiple/Types.hsc" #-}
  alignment _ = 8
{-# LINE 101 "FreeType/Format/Multiple/Types.hsc" #-}

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

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & vnsCoords
{-# LINE 110 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & vnsStrid
{-# LINE 111 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 12) ptr $ val & vnsPsid
{-# LINE 112 "FreeType/Format/Multiple/Types.hsc" #-}



data FT_MM_Var = FT_MM_Var
                   { mmvNum_axis        :: FT_UInt
                   , mmvNum_designs     :: FT_UInt
                   , mmvNum_namedstyles :: FT_UInt
                   , mmvAxis            :: Ptr FT_Var_Axis
                   , mmvNamedstyle      :: Ptr FT_Var_Named_Style
                   }

instance Storable FT_MM_Var where
  sizeOf _    = (32)
{-# LINE 125 "FreeType/Format/Multiple/Types.hsc" #-}
  alignment _ = 8
{-# LINE 126 "FreeType/Format/Multiple/Types.hsc" #-}

  peek ptr =
    FT_MM_Var
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 130 "FreeType/Format/Multiple/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 4) ptr
{-# LINE 131 "FreeType/Format/Multiple/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 132 "FreeType/Format/Multiple/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 133 "FreeType/Format/Multiple/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 134 "FreeType/Format/Multiple/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & mmvNum_axis
{-# LINE 137 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 4) ptr $ val & mmvNum_designs
{-# LINE 138 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & mmvNum_namedstyles
{-# LINE 139 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & mmvAxis
{-# LINE 140 "FreeType/Format/Multiple/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & mmvNamedstyle
{-# LINE 141 "FreeType/Format/Multiple/Types.hsc" #-}