packages feed

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

{-# LANGUAGE ForeignFunctionInterface #-}

module FreeType.Format.WinFNT.Types where

import           FreeType.Core.Types.Types

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

#include "ft2build.h"
#include FT_WINFONTS_H

data FT_WinFNT_HeaderRec = FT_WinFNT_HeaderRec
                             { wfnthrVersion               :: FT_UShort
                             , wfnthrFile_size             :: FT_ULong
                             , wfnthrCopyright             :: FT_Byte
                             , wfnthrFile_type             :: FT_UShort
                             , wfnthrNominal_point_size    :: FT_UShort
                             , wfnthrVertical_resolution   :: FT_UShort
                             , wfnthrHorizontal_resolution :: FT_UShort
                             , wfnthrAscent                :: FT_UShort
                             , wfnthrInternal_leading      :: FT_UShort
                             , wfnthrExternal_leading      :: FT_UShort
                             , wfnthrItalic                :: FT_Byte
                             , wfnthrUnderline             :: FT_Byte
                             , wfnthrStrike_out            :: FT_Byte
                             , wfnthrWeight                :: FT_UShort
                             , wfnthrCharset               :: FT_Byte
                             , wfnthrPixel_width           :: FT_UShort
                             , wfnthrPixel_height          :: FT_UShort
                             , wfnthrPitch_and_family      :: FT_Byte
                             , wfnthrAvg_width             :: FT_UShort
                             , wfnthrMax_width             :: FT_UShort
                             , wfnthrFirst_char            :: FT_Byte
                             , wfnthrLast_char             :: FT_Byte
                             , wfnthrDefault_char          :: FT_Byte
                             , wfnthrBreak_char            :: FT_Byte
                             , wfnthrBytes_per_row         :: FT_UShort
                             , wfnthrDevice_offset         :: FT_ULong
                             , wfnthrFace_name_offset      :: FT_ULong
                             , wfnthrBits_pointer          :: FT_ULong
                             , wfnthrBits_offset           :: FT_ULong
                             , wfnthrReserved              :: FT_Byte
                             , wfnthrFlags                 :: FT_ULong
                             , wfnthrA_space               :: FT_UShort
                             , wfnthrB_space               :: FT_UShort
                             , wfnthrC_space               :: FT_UShort
                             , wfnthrColor_table_offset    :: FT_UShort
                             , wfnthrReserved1             :: FT_ULong
                             }

instance Storable FT_WinFNT_HeaderRec where
  sizeOf _    = #size      struct FT_WinFNT_HeaderRec_
  alignment _ = #alignment struct FT_WinFNT_HeaderRec_

  peek ptr =
    FT_WinFNT_HeaderRec
      <$> #{peek struct FT_WinFNT_HeaderRec_, version              } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, file_size            } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, copyright            } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, file_type            } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, nominal_point_size   } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, vertical_resolution  } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, horizontal_resolution} ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, ascent               } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, internal_leading     } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, external_leading     } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, italic               } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, underline            } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, strike_out           } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, weight               } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, charset              } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, pixel_width          } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, pixel_height         } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, pitch_and_family     } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, avg_width            } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, max_width            } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, first_char           } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, last_char            } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, default_char         } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, break_char           } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, bytes_per_row        } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, device_offset        } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, face_name_offset     } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, bits_pointer         } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, bits_offset          } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, reserved             } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, flags                } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, A_space              } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, B_space              } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, C_space              } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, color_table_offset   } ptr
      <*> #{peek struct FT_WinFNT_HeaderRec_, reserved1            } ptr

  poke ptr val = do
    #{poke struct FT_WinFNT_HeaderRec_, version              } ptr $ val & wfnthrVersion
    #{poke struct FT_WinFNT_HeaderRec_, file_size            } ptr $ val & wfnthrFile_size
    #{poke struct FT_WinFNT_HeaderRec_, copyright            } ptr $ val & wfnthrCopyright
    #{poke struct FT_WinFNT_HeaderRec_, file_type            } ptr $ val & wfnthrFile_type
    #{poke struct FT_WinFNT_HeaderRec_, nominal_point_size   } ptr $ val & wfnthrNominal_point_size
    #{poke struct FT_WinFNT_HeaderRec_, vertical_resolution  } ptr $ val & wfnthrVertical_resolution
    #{poke struct FT_WinFNT_HeaderRec_, horizontal_resolution} ptr $ val & wfnthrHorizontal_resolution
    #{poke struct FT_WinFNT_HeaderRec_, ascent               } ptr $ val & wfnthrAscent
    #{poke struct FT_WinFNT_HeaderRec_, internal_leading     } ptr $ val & wfnthrInternal_leading
    #{poke struct FT_WinFNT_HeaderRec_, external_leading     } ptr $ val & wfnthrExternal_leading
    #{poke struct FT_WinFNT_HeaderRec_, italic               } ptr $ val & wfnthrItalic
    #{poke struct FT_WinFNT_HeaderRec_, underline            } ptr $ val & wfnthrUnderline
    #{poke struct FT_WinFNT_HeaderRec_, strike_out           } ptr $ val & wfnthrStrike_out
    #{poke struct FT_WinFNT_HeaderRec_, weight               } ptr $ val & wfnthrWeight
    #{poke struct FT_WinFNT_HeaderRec_, charset              } ptr $ val & wfnthrCharset
    #{poke struct FT_WinFNT_HeaderRec_, pixel_width          } ptr $ val & wfnthrPixel_width
    #{poke struct FT_WinFNT_HeaderRec_, pixel_height         } ptr $ val & wfnthrPixel_height
    #{poke struct FT_WinFNT_HeaderRec_, pitch_and_family     } ptr $ val & wfnthrPitch_and_family
    #{poke struct FT_WinFNT_HeaderRec_, avg_width            } ptr $ val & wfnthrAvg_width
    #{poke struct FT_WinFNT_HeaderRec_, max_width            } ptr $ val & wfnthrMax_width
    #{poke struct FT_WinFNT_HeaderRec_, first_char           } ptr $ val & wfnthrFirst_char
    #{poke struct FT_WinFNT_HeaderRec_, last_char            } ptr $ val & wfnthrLast_char
    #{poke struct FT_WinFNT_HeaderRec_, default_char         } ptr $ val & wfnthrDefault_char
    #{poke struct FT_WinFNT_HeaderRec_, break_char           } ptr $ val & wfnthrBreak_char
    #{poke struct FT_WinFNT_HeaderRec_, bytes_per_row        } ptr $ val & wfnthrBytes_per_row
    #{poke struct FT_WinFNT_HeaderRec_, device_offset        } ptr $ val & wfnthrDevice_offset
    #{poke struct FT_WinFNT_HeaderRec_, face_name_offset     } ptr $ val & wfnthrFace_name_offset
    #{poke struct FT_WinFNT_HeaderRec_, bits_pointer         } ptr $ val & wfnthrBits_pointer
    #{poke struct FT_WinFNT_HeaderRec_, bits_offset          } ptr $ val & wfnthrBits_offset
    #{poke struct FT_WinFNT_HeaderRec_, reserved             } ptr $ val & wfnthrReserved
    #{poke struct FT_WinFNT_HeaderRec_, flags                } ptr $ val & wfnthrFlags
    #{poke struct FT_WinFNT_HeaderRec_, A_space              } ptr $ val & wfnthrA_space
    #{poke struct FT_WinFNT_HeaderRec_, B_space              } ptr $ val & wfnthrB_space
    #{poke struct FT_WinFNT_HeaderRec_, C_space              } ptr $ val & wfnthrC_space
    #{poke struct FT_WinFNT_HeaderRec_, color_table_offset   } ptr $ val & wfnthrColor_table_offset
    #{poke struct FT_WinFNT_HeaderRec_, reserved1            } ptr $ val & wfnthrReserved1



type FT_WinFNT_Header = Ptr FT_WinFNT_HeaderRec