{-# LINE 1 "FreeType/Core/Color.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE PatternSynonyms #-}

{- | Please refer to the
     [Core API > Glyph Color Management](https://www.freetype.org/freetype2/docs/reference/ft2-color_management.html)
     chapter of the reference.

     Internal: "FreeType.Core.Color.Internal".
-}

module FreeType.Core.Color
  ( -- ** FT_Color
    FT_Color (..)
    -- ** FT_PALETTE_XXX
  , pattern FT_PALETTE_FOR_LIGHT_BACKGROUND
  , pattern FT_PALETTE_FOR_DARK_BACKGROUND
    -- ** FT_Palette_Data
  , FT_Palette_Data (..)
    -- ** FT_Palette_Data_Get
  , ft_Palette_Data_Get
    -- ** FT_Palette_Select
  , ft_Palette_Select
    -- ** FT_Palette_Set_Foreground_Color
  , ft_Palette_Set_Foreground_Color
  ) where

import           FreeType.Core.Base.Types
import           FreeType.Core.Color.Internal
import           FreeType.Core.Color.Types
import           FreeType.Core.Types.Types
import           FreeType.Exception.Internal

import           Foreign.Marshal.Utils
import           Foreign.Ptr





pattern FT_PALETTE_FOR_LIGHT_BACKGROUND
      , FT_PALETTE_FOR_DARK_BACKGROUND
     :: (Eq a, Num a) => a
pattern FT_PALETTE_FOR_LIGHT_BACKGROUND = 1
{-# LINE 44 "FreeType/Core/Color.hsc" #-}
pattern FT_PALETTE_FOR_DARK_BACKGROUND  = 2
{-# LINE 45 "FreeType/Core/Color.hsc" #-}



ft_Palette_Data_Get
  :: FT_Face            -- ^ face
  -> IO FT_Palette_Data -- ^ palette
ft_Palette_Data_Get =
  autoAllocaError "ft_Palette_Data_Get" ft_Palette_Data_Get'



foreign import ccall "FT_Palette_Select"
  ft_Palette_Select
    :: FT_Face      -- ^ face
    -> FT_UShort    -- ^ palette_index
    -> Ptr FT_Color -- ^ apalette
    -> IO FT_Error



ft_Palette_Set_Foreground_Color
  :: FT_Face  -- ^ face
  -> FT_Color -- ^ color
  -> IO ()
ft_Palette_Set_Foreground_Color face color =
  with color $
    ftError "ft_Palette_Set_Foreground_Color" . ft_Palette_Set_Foreground_Color' face