{-# LINE 1 "FreeType/Core/Color/Types.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE PatternSynonyms #-}

module FreeType.Core.Color.Types where

import           FreeType.Core.Types.Types

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




data FT_Color = FT_Color
                  { cBlue  :: FT_Byte
                  , cGreen :: FT_Byte
                  , cRed   :: FT_Byte
                  , cAlpha :: FT_Byte
                  }

instance Storable FT_Color where
  sizeOf _    = (4)
{-# LINE 24 "FreeType/Core/Color/Types.hsc" #-}
  alignment _ = 1
{-# LINE 25 "FreeType/Core/Color/Types.hsc" #-}

  peek ptr =
    FT_Color
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 29 "FreeType/Core/Color/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 1) ptr
{-# LINE 30 "FreeType/Core/Color/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr
{-# LINE 31 "FreeType/Core/Color/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 3) ptr
{-# LINE 32 "FreeType/Core/Color/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & cBlue
{-# LINE 35 "FreeType/Core/Color/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 1) ptr $ val & cGreen
{-# LINE 36 "FreeType/Core/Color/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 2) ptr $ val & cRed
{-# LINE 37 "FreeType/Core/Color/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 3) ptr $ val & cAlpha
{-# LINE 38 "FreeType/Core/Color/Types.hsc" #-}



data FT_Palette_Data = FT_Palette_Data
                         { pdNum_palettes           :: FT_UShort
                         , pdPalette_name_ids       :: Ptr FT_UShort
                         , pdPalette_flags          :: Ptr FT_UShort
                         , pdNum_palette_entries    :: FT_UShort
                         , pdPalette_entry_name_ids :: Ptr FT_UShort
                         }

instance Storable FT_Palette_Data where
  sizeOf _    = (40)
{-# LINE 51 "FreeType/Core/Color/Types.hsc" #-}
  alignment _ = 8
{-# LINE 52 "FreeType/Core/Color/Types.hsc" #-}

  peek ptr =
    FT_Palette_Data
      <$> (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
{-# LINE 56 "FreeType/Core/Color/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 8) ptr
{-# LINE 57 "FreeType/Core/Color/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 16) ptr
{-# LINE 58 "FreeType/Core/Color/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 24) ptr
{-# LINE 59 "FreeType/Core/Color/Types.hsc" #-}
      <*> (\hsc_ptr -> peekByteOff hsc_ptr 32) ptr
{-# LINE 60 "FreeType/Core/Color/Types.hsc" #-}

  poke ptr val = do
    (\hsc_ptr -> pokeByteOff hsc_ptr 0) ptr $ val & pdNum_palettes
{-# LINE 63 "FreeType/Core/Color/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 8) ptr $ val & pdPalette_name_ids
{-# LINE 64 "FreeType/Core/Color/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 16) ptr $ val & pdPalette_flags
{-# LINE 65 "FreeType/Core/Color/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 24) ptr $ val & pdNum_palette_entries
{-# LINE 66 "FreeType/Core/Color/Types.hsc" #-}
    (\hsc_ptr -> pokeByteOff hsc_ptr 32) ptr $ val & pdPalette_entry_name_ids
{-# LINE 67 "FreeType/Core/Color/Types.hsc" #-}