packages feed

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

{-# LANGUAGE ForeignFunctionInterface #-}

module FreeType.Format.Type1.Types where

import           FreeType.Core.Types.Types

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

#include "ft2build.h"
#include FT_TYPE1_TABLES_H

data PS_FontInfoRec = PS_FontInfoRec
                        { firVersion             :: Ptr FT_String
                        , firNotice              :: Ptr FT_String
                        , firFull_name           :: Ptr FT_String
                        , firFamily_name         :: Ptr FT_String
                        , firWeight              :: Ptr FT_String
                        , firItalic_angle        :: FT_Long
                        , firIs_fixed_pitch      :: FT_Bool
                        , firUnderline_position  :: FT_Short
                        , firUnderline_thickness :: FT_UShort
                        }

instance Storable PS_FontInfoRec where
  sizeOf _    = #size      struct PS_FontInfoRec_
  alignment _ = #alignment struct PS_FontInfoRec_

  peek ptr =
    PS_FontInfoRec
      <$> #{peek struct PS_FontInfoRec_, version            } ptr
      <*> #{peek struct PS_FontInfoRec_, notice             } ptr
      <*> #{peek struct PS_FontInfoRec_, full_name          } ptr
      <*> #{peek struct PS_FontInfoRec_, family_name        } ptr
      <*> #{peek struct PS_FontInfoRec_, weight             } ptr
      <*> #{peek struct PS_FontInfoRec_, italic_angle       } ptr
      <*> #{peek struct PS_FontInfoRec_, is_fixed_pitch     } ptr
      <*> #{peek struct PS_FontInfoRec_, underline_position } ptr
      <*> #{peek struct PS_FontInfoRec_, underline_thickness} ptr

  poke ptr val = do
    #{poke struct PS_FontInfoRec_, version            } ptr $ val & firVersion
    #{poke struct PS_FontInfoRec_, notice             } ptr $ val & firNotice
    #{poke struct PS_FontInfoRec_, full_name          } ptr $ val & firFull_name
    #{poke struct PS_FontInfoRec_, family_name        } ptr $ val & firFamily_name
    #{poke struct PS_FontInfoRec_, weight             } ptr $ val & firWeight
    #{poke struct PS_FontInfoRec_, italic_angle       } ptr $ val & firItalic_angle
    #{poke struct PS_FontInfoRec_, is_fixed_pitch     } ptr $ val & firIs_fixed_pitch
    #{poke struct PS_FontInfoRec_, underline_position } ptr $ val & firUnderline_position
    #{poke struct PS_FontInfoRec_, underline_thickness} ptr $ val & firUnderline_thickness



type PS_FontInfo = Ptr PS_FontInfoRec



data PS_PrivateRec = PS_PrivateRec
                       { prUnique_id              :: FT_Int
                       , prLenIV                  :: FT_Int
                       , prNum_blue_values        :: FT_Byte
                       , prNum_other_blues        :: FT_Byte
                       , prNum_family_blues       :: FT_Byte
                       , prNum_family_other_blues :: FT_Byte
                       , prBlue_values            :: FT_Short
                       , prOther_blues            :: FT_Short
                       , prFamily_blues           :: FT_Short
                       , prFamily_other_blues     :: FT_Short
                       , prBlue_scale             :: FT_Fixed
                       , prBlue_shift             :: FT_Int
                       , prBlue_fuzz              :: FT_Int
                       , prStandard_width         :: FT_UShort
                       , prStandard_height        :: FT_UShort
                       , prNum_snap_widths        :: FT_Byte
                       , prNum_snap_heights       :: FT_Byte
                       , prForce_bold             :: FT_Bool
                       , prRound_stem_up          :: FT_Bool
                       , prSnap_widths            :: FT_Short
                       , prSnap_heights           :: FT_Short
                       , prExpansion_factor       :: FT_Fixed
                       , prLanguage_group         :: FT_Long
                       , prPassword               :: FT_Long
                       , prMin_feature            :: FT_Short
                       }

instance Storable PS_PrivateRec where
  sizeOf _    = #size      struct PS_PrivateRec_
  alignment _ = #alignment struct PS_PrivateRec_

  peek ptr =
    PS_PrivateRec
      <$> #{peek struct PS_PrivateRec_, unique_id             } ptr
      <*> #{peek struct PS_PrivateRec_, lenIV                 } ptr
      <*> #{peek struct PS_PrivateRec_, num_blue_values       } ptr
      <*> #{peek struct PS_PrivateRec_, num_other_blues       } ptr
      <*> #{peek struct PS_PrivateRec_, num_family_blues      } ptr
      <*> #{peek struct PS_PrivateRec_, num_family_other_blues} ptr
      <*> #{peek struct PS_PrivateRec_, blue_values           } ptr
      <*> #{peek struct PS_PrivateRec_, other_blues           } ptr
      <*> #{peek struct PS_PrivateRec_, family_blues          } ptr
      <*> #{peek struct PS_PrivateRec_, family_other_blues    } ptr
      <*> #{peek struct PS_PrivateRec_, blue_scale            } ptr
      <*> #{peek struct PS_PrivateRec_, blue_shift            } ptr
      <*> #{peek struct PS_PrivateRec_, blue_fuzz             } ptr
      <*> #{peek struct PS_PrivateRec_, standard_width        } ptr
      <*> #{peek struct PS_PrivateRec_, standard_height       } ptr
      <*> #{peek struct PS_PrivateRec_, num_snap_widths       } ptr
      <*> #{peek struct PS_PrivateRec_, num_snap_heights      } ptr
      <*> #{peek struct PS_PrivateRec_, force_bold            } ptr
      <*> #{peek struct PS_PrivateRec_, round_stem_up         } ptr
      <*> #{peek struct PS_PrivateRec_, snap_widths           } ptr
      <*> #{peek struct PS_PrivateRec_, snap_heights          } ptr
      <*> #{peek struct PS_PrivateRec_, expansion_factor      } ptr
      <*> #{peek struct PS_PrivateRec_, language_group        } ptr
      <*> #{peek struct PS_PrivateRec_, password              } ptr
      <*> #{peek struct PS_PrivateRec_, min_feature           } ptr

  poke ptr val = do
    #{poke struct PS_PrivateRec_, unique_id             } ptr $ val & prUnique_id
    #{poke struct PS_PrivateRec_, lenIV                 } ptr $ val & prLenIV
    #{poke struct PS_PrivateRec_, num_blue_values       } ptr $ val & prNum_blue_values
    #{poke struct PS_PrivateRec_, num_other_blues       } ptr $ val & prNum_other_blues
    #{poke struct PS_PrivateRec_, num_family_blues      } ptr $ val & prNum_family_blues
    #{poke struct PS_PrivateRec_, num_family_other_blues} ptr $ val & prNum_family_other_blues
    #{poke struct PS_PrivateRec_, blue_values           } ptr $ val & prBlue_values
    #{poke struct PS_PrivateRec_, other_blues           } ptr $ val & prOther_blues
    #{poke struct PS_PrivateRec_, family_blues          } ptr $ val & prFamily_blues
    #{poke struct PS_PrivateRec_, family_other_blues    } ptr $ val & prFamily_other_blues
    #{poke struct PS_PrivateRec_, blue_scale            } ptr $ val & prBlue_scale
    #{poke struct PS_PrivateRec_, blue_shift            } ptr $ val & prBlue_shift
    #{poke struct PS_PrivateRec_, blue_fuzz             } ptr $ val & prBlue_fuzz
    #{poke struct PS_PrivateRec_, standard_width        } ptr $ val & prStandard_width
    #{poke struct PS_PrivateRec_, standard_height       } ptr $ val & prStandard_height
    #{poke struct PS_PrivateRec_, num_snap_widths       } ptr $ val & prNum_snap_widths
    #{poke struct PS_PrivateRec_, num_snap_heights      } ptr $ val & prNum_snap_heights
    #{poke struct PS_PrivateRec_, force_bold            } ptr $ val & prForce_bold
    #{poke struct PS_PrivateRec_, round_stem_up         } ptr $ val & prRound_stem_up
    #{poke struct PS_PrivateRec_, snap_widths           } ptr $ val & prSnap_widths
    #{poke struct PS_PrivateRec_, snap_heights          } ptr $ val & prSnap_heights
    #{poke struct PS_PrivateRec_, expansion_factor      } ptr $ val & prExpansion_factor
    #{poke struct PS_PrivateRec_, language_group        } ptr $ val & prLanguage_group
    #{poke struct PS_PrivateRec_, password              } ptr $ val & prPassword
    #{poke struct PS_PrivateRec_, min_feature           } ptr $ val & prMin_feature



type PS_Private = Ptr PS_PrivateRec



data CID_FaceDictRec = CID_FaceDictRec
                         { fdrPrivate_dict        :: PS_PrivateRec
                         , fdrLen_buildchar       :: FT_UInt
                         , fdrForcebold_threshold :: FT_Fixed
                         , fdrStroke_width        :: FT_Pos
                         , fdrExpansion_factor    :: FT_Fixed
                         , fdrPaint_type          :: FT_Byte
                         , fdrFont_type           :: FT_Byte
                         , fdrFont_matrix         :: FT_Matrix
                         , fdrFont_offset         :: FT_Vector
                         , fdrNum_subrs           :: FT_UInt
                         , fdrSubrmap_offset      :: FT_ULong
                         , fdrSd_bytes            :: FT_Int
                         }

instance Storable CID_FaceDictRec where
  sizeOf _    = #size      struct CID_FaceDictRec_
  alignment _ = #alignment struct CID_FaceDictRec_

  peek ptr =
    CID_FaceDictRec
      <$> #{peek struct CID_FaceDictRec_, private_dict       } ptr
      <*> #{peek struct CID_FaceDictRec_, len_buildchar      } ptr
      <*> #{peek struct CID_FaceDictRec_, forcebold_threshold} ptr
      <*> #{peek struct CID_FaceDictRec_, stroke_width       } ptr
      <*> #{peek struct CID_FaceDictRec_, expansion_factor   } ptr
      <*> #{peek struct CID_FaceDictRec_, paint_type         } ptr
      <*> #{peek struct CID_FaceDictRec_, font_type          } ptr
      <*> #{peek struct CID_FaceDictRec_, font_matrix        } ptr
      <*> #{peek struct CID_FaceDictRec_, font_offset        } ptr
      <*> #{peek struct CID_FaceDictRec_, num_subrs          } ptr
      <*> #{peek struct CID_FaceDictRec_, subrmap_offset     } ptr
      <*> #{peek struct CID_FaceDictRec_, sd_bytes           } ptr

  poke ptr val = do
    #{poke struct CID_FaceDictRec_, private_dict       } ptr $ val & fdrPrivate_dict
    #{poke struct CID_FaceDictRec_, len_buildchar      } ptr $ val & fdrLen_buildchar
    #{poke struct CID_FaceDictRec_, forcebold_threshold} ptr $ val & fdrForcebold_threshold
    #{poke struct CID_FaceDictRec_, stroke_width       } ptr $ val & fdrStroke_width
    #{poke struct CID_FaceDictRec_, expansion_factor   } ptr $ val & fdrExpansion_factor
    #{poke struct CID_FaceDictRec_, paint_type         } ptr $ val & fdrPaint_type
    #{poke struct CID_FaceDictRec_, font_type          } ptr $ val & fdrFont_type
    #{poke struct CID_FaceDictRec_, font_matrix        } ptr $ val & fdrFont_matrix
    #{poke struct CID_FaceDictRec_, font_offset        } ptr $ val & fdrFont_offset
    #{poke struct CID_FaceDictRec_, num_subrs          } ptr $ val & fdrNum_subrs
    #{poke struct CID_FaceDictRec_, subrmap_offset     } ptr $ val & fdrSubrmap_offset
    #{poke struct CID_FaceDictRec_, sd_bytes           } ptr $ val & fdrSd_bytes



type CID_FaceDict = Ptr CID_FaceDictRec



data CID_FaceInfoRec = CID_FaceInfoRec
                         { firCid_font_name :: Ptr FT_String
                         , firCid_version   :: FT_Fixed
                         , firCid_font_type :: FT_Int
                         , firRegistry      :: Ptr FT_String
                         , firOrdering      :: Ptr FT_String
                         , firSupplement    :: FT_Int
                         , firFont_info     :: PS_FontInfoRec
                         , firFont_bbox     :: FT_BBox
                         , firUid_base      :: FT_ULong
                         , firNum_xuid      :: FT_Int
                         , firXuid          :: FT_ULong
                         , firCidmap_offset :: FT_ULong
                         , firFd_bytes      :: FT_Int
                         , firGd_bytes      :: FT_Int
                         , firCid_count     :: FT_ULong
                         , firNum_dicts     :: FT_Int
                         , firFont_dicts    :: CID_FaceDict
                         , firData_offset   :: FT_ULong
                         }

instance Storable CID_FaceInfoRec where
  sizeOf _    = #size      struct CID_FaceInfoRec_
  alignment _ = #alignment struct CID_FaceInfoRec_

  peek ptr =
    CID_FaceInfoRec
      <$> #{peek struct CID_FaceInfoRec_, cid_font_name} ptr
      <*> #{peek struct CID_FaceInfoRec_, cid_version  } ptr
      <*> #{peek struct CID_FaceInfoRec_, cid_font_type} ptr
      <*> #{peek struct CID_FaceInfoRec_, registry     } ptr
      <*> #{peek struct CID_FaceInfoRec_, ordering     } ptr
      <*> #{peek struct CID_FaceInfoRec_, supplement   } ptr
      <*> #{peek struct CID_FaceInfoRec_, font_info    } ptr
      <*> #{peek struct CID_FaceInfoRec_, font_bbox    } ptr
      <*> #{peek struct CID_FaceInfoRec_, uid_base     } ptr
      <*> #{peek struct CID_FaceInfoRec_, num_xuid     } ptr
      <*> #{peek struct CID_FaceInfoRec_, xuid         } ptr
      <*> #{peek struct CID_FaceInfoRec_, cidmap_offset} ptr
      <*> #{peek struct CID_FaceInfoRec_, fd_bytes     } ptr
      <*> #{peek struct CID_FaceInfoRec_, gd_bytes     } ptr
      <*> #{peek struct CID_FaceInfoRec_, cid_count    } ptr
      <*> #{peek struct CID_FaceInfoRec_, num_dicts    } ptr
      <*> #{peek struct CID_FaceInfoRec_, font_dicts   } ptr
      <*> #{peek struct CID_FaceInfoRec_, data_offset  } ptr

  poke ptr val = do
    #{poke struct CID_FaceInfoRec_, cid_font_name} ptr $ val & firCid_font_name
    #{poke struct CID_FaceInfoRec_, cid_version  } ptr $ val & firCid_version
    #{poke struct CID_FaceInfoRec_, cid_font_type} ptr $ val & firCid_font_type
    #{poke struct CID_FaceInfoRec_, registry     } ptr $ val & firRegistry
    #{poke struct CID_FaceInfoRec_, ordering     } ptr $ val & firOrdering
    #{poke struct CID_FaceInfoRec_, supplement   } ptr $ val & firSupplement
    #{poke struct CID_FaceInfoRec_, font_info    } ptr $ val & firFont_info
    #{poke struct CID_FaceInfoRec_, font_bbox    } ptr $ val & firFont_bbox
    #{poke struct CID_FaceInfoRec_, uid_base     } ptr $ val & firUid_base
    #{poke struct CID_FaceInfoRec_, num_xuid     } ptr $ val & firNum_xuid
    #{poke struct CID_FaceInfoRec_, xuid         } ptr $ val & firXuid
    #{poke struct CID_FaceInfoRec_, cidmap_offset} ptr $ val & firCidmap_offset
    #{poke struct CID_FaceInfoRec_, fd_bytes     } ptr $ val & firFd_bytes
    #{poke struct CID_FaceInfoRec_, gd_bytes     } ptr $ val & firGd_bytes
    #{poke struct CID_FaceInfoRec_, cid_count    } ptr $ val & firCid_count
    #{poke struct CID_FaceInfoRec_, num_dicts    } ptr $ val & firNum_dicts
    #{poke struct CID_FaceInfoRec_, font_dicts   } ptr $ val & firFont_dicts
    #{poke struct CID_FaceInfoRec_, data_offset  } ptr $ val & firData_offset



type CID_FaceInfo = Ptr CID_FaceInfoRec



type T1_Blend_Flags = #type enum T1_Blend_Flags_



type T1_EncodingType = #type enum T1_EncodingType_



type PS_Dict_Keys = #type enum PS_Dict_Keys_



type T1_FontInfo = Ptr PS_FontInfoRec



type T1_Private = Ptr PS_PrivateRec



type CID_FontDict = Ptr CID_FaceDictRec



type CID_Info = CID_FaceInfoRec