{-# LINE 1 "FreeType/Control/Subpixel.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE PatternSynonyms #-}

{- | Please refer to the
     [Controlling FreeType Modules > Subpixel Rendering](https://www.freetype.org/freetype2/docs/reference/ft2-lcd_rendering.html)
     chapter of the reference.

     Internal: "FreeType.Control.Subpixel.Internal".
 -}

module FreeType.Control.Subpixel
  ( -- ** FT_LcdFilter
    FT_LcdFilter
  , pattern FT_LCD_FILTER_NONE
  , pattern FT_LCD_FILTER_DEFAULT
  , pattern FT_LCD_FILTER_LIGHT
  , pattern FT_LCD_FILTER_LEGACY1
  , pattern FT_LCD_FILTER_LEGACY
    -- ** FT_Library_SetLcdFilter
  , ft_Library_SetLcdFilter
    -- ** FT_Library_SetLcdFilterWeights
  , ft_Library_SetLcdFilterWeights
    -- ** FT_LcdFiveTapFilter
  , pattern FT_LCD_FILTER_FIVE_TAPS
  , FT_LcdFiveTapFilter
    -- ** FT_Library_SetLcdGeometry
  , ft_Library_SetLcdGeometry
  ) where

import           FreeType.Control.Subpixel.Internal
import           FreeType.Control.Subpixel.Types
import           FreeType.Core.Base
import           FreeType.Core.Types.Types
import           FreeType.Exception.Internal

import           Data.Word
import           Foreign.Marshal.Array




pattern FT_LCD_FILTER_NONE
      , FT_LCD_FILTER_DEFAULT
      , FT_LCD_FILTER_LIGHT
      , FT_LCD_FILTER_LEGACY1
      , FT_LCD_FILTER_LEGACY
     :: (Eq a, Num a) => a
pattern FT_LCD_FILTER_NONE    = 0
{-# LINE 49 "FreeType/Control/Subpixel.hsc" #-}
pattern FT_LCD_FILTER_DEFAULT = 1
{-# LINE 50 "FreeType/Control/Subpixel.hsc" #-}
pattern FT_LCD_FILTER_LIGHT   = 2
{-# LINE 51 "FreeType/Control/Subpixel.hsc" #-}
pattern FT_LCD_FILTER_LEGACY1 = 3
{-# LINE 52 "FreeType/Control/Subpixel.hsc" #-}
pattern FT_LCD_FILTER_LEGACY  = 16
{-# LINE 53 "FreeType/Control/Subpixel.hsc" #-}



ft_Library_SetLcdFilter
  :: FT_Library   -- ^ library
  -> FT_LcdFilter -- ^ filter
  -> IO ()
ft_Library_SetLcdFilter =
  autoError "ft_Library_SetLcdFilter" ft_Library_SetLcdFilter'



ft_Library_SetLcdFilterWeights
  :: FT_Library              -- ^ library
  -> ( Word8
{-# LINE 68 "FreeType/Control/Subpixel.hsc" #-}
     , Word8
{-# LINE 69 "FreeType/Control/Subpixel.hsc" #-}
     , Word8
{-# LINE 70 "FreeType/Control/Subpixel.hsc" #-}
     , Word8
{-# LINE 71 "FreeType/Control/Subpixel.hsc" #-}
     , Word8
{-# LINE 72 "FreeType/Control/Subpixel.hsc" #-}
     ) -- ^ weights
  -> IO ()
ft_Library_SetLcdFilterWeights lib (a, b, c, d, e) =
  withArray [a, b, c, d, e] $ \weightsPtr ->
    ftError "ft_Library_SetLcdFilterWeights"
      $ ft_Library_SetLcdFilterWeights' lib weightsPtr



pattern FT_LCD_FILTER_FIVE_TAPS :: (Eq a, Num a) => a
pattern FT_LCD_FILTER_FIVE_TAPS = 5
{-# LINE 83 "FreeType/Control/Subpixel.hsc" #-}



ft_Library_SetLcdGeometry
  :: FT_Library                        -- ^ library
  -> (FT_Vector, FT_Vector, FT_Vector) -- ^ sub
  -> IO ()
ft_Library_SetLcdGeometry lib (a, b, c) =
  withArray [a, b, c] $ \subPtr ->
    ftError "ft_Library_SetLcdGeometry" $ ft_Library_SetLcdGeometry' lib subPtr