{-# LINE 1 "FreeType/Support/Computations/Internal.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}

module FreeType.Support.Computations.Internal
  ( -- ** FT_Vector_Transform
    ft_Vector_Transform'
    -- ** FT_Matrix_Multiply
  , ft_Matrix_Multiply'
    -- ** FT_Matrix_Invert
  , ft_Matrix_Invert'
    -- ** FT_Vector_Unit
  , ft_Vector_Unit'
    -- ** FT_Vector_Rotate
  , ft_Vector_Rotate'
    -- ** FT_Vector_Length
  , ft_Vector_Length'
    -- ** FT_Vector_Polarize
  , ft_Vector_Polarize'
    -- ** FT_Vector_From_Polar
  , ft_Vector_From_Polar'
  ) where

import           FreeType.Core.Types.Types
import           FreeType.Support.Computations.Types

import           Foreign.Ptr





foreign import ccall "FT_Vector_Transform"
  ft_Vector_Transform'
    :: Ptr FT_Vector -- ^ vector
    -> Ptr FT_Matrix -- ^ matrix
    -> IO ()



foreign import ccall "FT_Matrix_Multiply"
  ft_Matrix_Multiply'
    :: Ptr FT_Matrix -- ^ a
    -> Ptr FT_Matrix -- ^ b
    -> IO ()



foreign import ccall "FT_Matrix_Invert"
  ft_Matrix_Invert'
    :: Ptr FT_Matrix -- ^ matrix
    -> IO FT_Error



foreign import ccall "FT_Vector_Unit"
  ft_Vector_Unit'
    :: Ptr FT_Vector -- ^ vec
    -> FT_Angle      -- ^ angle
    -> IO ()



foreign import ccall "FT_Vector_Rotate"
  ft_Vector_Rotate'
    :: Ptr FT_Vector -- ^ vec
    -> FT_Angle      -- ^ angle
    -> IO ()



foreign import ccall "FT_Vector_Length"
  ft_Vector_Length'
    :: Ptr FT_Vector -- ^ vec
    -> IO FT_Fixed



foreign import ccall "FT_Vector_Polarize"
  ft_Vector_Polarize'
    :: Ptr FT_Vector -- ^ vec
    -> Ptr FT_Fixed  -- ^ length
    -> Ptr FT_Angle  -- ^ angle
    -> IO ()



foreign import ccall "FT_Vector_From_Polar"
  ft_Vector_From_Polar'
    :: Ptr FT_Vector -- ^ vec
    -> FT_Fixed      -- ^ length
    -> FT_Angle      -- ^ angle
    -> IO ()