packages feed

freetype2-0.2.0: FreeType/Format/SFNT/Types.hsc

module FreeType.Format.SFNT.Types where

import           FreeType.Core.Types.Types

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

#include "ft2build.h"
#include FT_SFNT_NAMES_H

data FT_SfntName = FT_SfntName
                     { snPlatform_id :: FT_UShort
                     , snEncoding_id :: FT_UShort
                     , snLanguage_id :: FT_UShort
                     , snName_id     :: FT_UShort
                     , snString      :: Ptr FT_Byte
                     , snString_len  :: FT_UInt
                     }

instance Storable FT_SfntName where    
  sizeOf _    = #size      struct FT_SfntName_    
  alignment _ = #alignment struct FT_SfntName_    
    
  peek ptr =    
    FT_SfntName    
      <$> #{peek struct FT_SfntName_, platform_id} ptr    
      <*> #{peek struct FT_SfntName_, encoding_id} ptr    
      <*> #{peek struct FT_SfntName_, language_id} ptr    
      <*> #{peek struct FT_SfntName_, name_id    } ptr    
      <*> #{peek struct FT_SfntName_, string     } ptr    
      <*> #{peek struct FT_SfntName_, string_len } ptr    
    
  poke ptr val = do    
    #{poke struct FT_SfntName_, platform_id} ptr $ val & snPlatform_id    
    #{poke struct FT_SfntName_, encoding_id} ptr $ val & snEncoding_id    
    #{poke struct FT_SfntName_, language_id} ptr $ val & snLanguage_id    
    #{poke struct FT_SfntName_, name_id    } ptr $ val & snName_id    
    #{poke struct FT_SfntName_, string     } ptr $ val & snString    
    #{poke struct FT_SfntName_, string_len } ptr $ val & snString_len



data FT_SfntLangTag = FT_SfntLangTag
                        { sltString     :: Ptr FT_Byte
                        , sltString_len :: FT_UInt
                        }

instance Storable FT_SfntLangTag where    
  sizeOf _    = #size      struct FT_SfntLangTag_    
  alignment _ = #alignment struct FT_SfntLangTag_    
    
  peek ptr =    
    FT_SfntLangTag    
      <$> #{peek struct FT_SfntLangTag_, string     } ptr    
      <*> #{peek struct FT_SfntLangTag_, string_len } ptr    
    
  poke ptr val = do    
    #{poke struct FT_SfntLangTag_, string     } ptr $ val & sltString    
    #{poke struct FT_SfntLangTag_, string_len } ptr $ val & sltString_len