{-# LINE 1 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LINE 2 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
module Graphics.Rendering.FreeType.Internal.SizeMetrics
( FT_Size_Metrics(..)
) where

import Foreign

import Graphics.Rendering.FreeType.Internal.PrimitiveTypes


{-# LINE 11 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}

{-# LINE 12 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}


{-# LINE 14 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}

{-# LINE 15 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}

data FT_Size_Metrics = FT_Size_Metrics
  { x_ppem      :: FT_UShort
  , y_ppem      :: FT_UShort
  , x_scale     :: FT_Fixed
  , y_scale     :: FT_Fixed
  , ascender    :: FT_Pos
  , descender   :: FT_Pos
  , height      :: FT_Pos
  , max_advance :: FT_Pos
  }
  deriving (Read, Show, Eq)

instance Storable FT_Size_Metrics where
  sizeOf    _ = (56)
{-# LINE 30 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
  alignment _ = 8
{-# LINE 31 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
  peek ptr = do
    x_ppem'      <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) ptr
{-# LINE 33 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    y_ppem'      <- ((\hsc_ptr -> peekByteOff hsc_ptr 2)) ptr
{-# LINE 34 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    x_scale'     <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) ptr
{-# LINE 35 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    y_scale'     <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) ptr
{-# LINE 36 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    ascender'    <- ((\hsc_ptr -> peekByteOff hsc_ptr 24)) ptr
{-# LINE 37 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    descender'   <- ((\hsc_ptr -> peekByteOff hsc_ptr 32)) ptr
{-# LINE 38 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    height'      <- ((\hsc_ptr -> peekByteOff hsc_ptr 40)) ptr
{-# LINE 39 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    max_advance' <- ((\hsc_ptr -> peekByteOff hsc_ptr 48)) ptr
{-# LINE 40 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    return $ FT_Size_Metrics
      { x_ppem = x_ppem'
      , y_ppem = y_ppem'
      , x_scale = x_scale'
      , y_scale = y_scale'
      , ascender = ascender'
      , descender = descender'
      , height = height'
      , max_advance = max_advance'
      }
  poke ptr val = do
    ((\hsc_ptr -> pokeByteOff hsc_ptr 0)) ptr (x_ppem val)
{-# LINE 52 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 2)) ptr (y_ppem val)
{-# LINE 53 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr (x_scale val)
{-# LINE 54 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr (y_scale val)
{-# LINE 55 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 24)) ptr (ascender val)
{-# LINE 56 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 32)) ptr (descender val)
{-# LINE 57 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 40)) ptr (height val)
{-# LINE 58 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 48)) ptr (max_advance val)
{-# LINE 59 "Graphics/Rendering/FreeType/Internal/SizeMetrics.hsc" #-}