    {-# OPTIONS_HADDOCK hide #-}
    --------------------------------------------------------------------------------
    -- |
    -- Module      :  Graphics.Rendering.OpenGL.GL.PointParameter
    -- Copyright   :  (c) Sven Panne 2002-2019
    -- License     :  BSD3
    --
    -- Maintainer  :  Sven Panne <svenpanne@gmail.com>
    -- Stability   :  stable
    -- Portability :  portable
    --
    -- This is a purely internal module for setting point parameters.
    --
    --------------------------------------------------------------------------------

    module Graphics.Rendering.OpenGL.GL.PointParameter (
       PointParameter(..), pointParameterf, pointParameterfv
    ) where

    import Foreign.Ptr
    import Graphics.GL

    --------------------------------------------------------------------------------

    data PointParameter =
         PointSizeMin
       | PointSizeMax
       | PointFadeThresholdSize
       | PointDistanceAttenuation

    marshalPointParameter :: PointParameter -> GLenum
    marshalPointParameter :: PointParameter -> GLenum
    marshalPointParameter PointParameter
    x = case PointParameter
    x of
       PointParameter
    PointSizeMin -> GLenum
    GL_POINT_SIZE_MIN
       PointParameter
    PointSizeMax -> GLenum
    GL_POINT_SIZE_MAX
       PointParameter
    PointFadeThresholdSize -> GLenum
    GL_POINT_FADE_THRESHOLD_SIZE
       PointParameter
    PointDistanceAttenuation -> GLenum
    GL_POINT_DISTANCE_ATTENUATION

    --------------------------------------------------------------------------------

    pointParameterf :: PointParameter -> GLfloat -> IO ()
    pointParameterf :: PointParameter -> GLfloat -> IO ()
    pointParameterf = GLenum -> GLfloat -> IO ()
    forall (m :: * -> *). MonadIO m => GLenum -> GLfloat -> m ()
    glPointParameterf (GLenum -> GLfloat -> IO ())
    -> (PointParameter -> GLenum) -> PointParameter -> GLfloat -> IO ()
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . PointParameter -> GLenum
    marshalPointParameter

    pointParameterfv :: PointParameter -> Ptr GLfloat -> IO ()
    pointParameterfv :: PointParameter -> Ptr GLfloat -> IO ()
    pointParameterfv = GLenum -> Ptr GLfloat -> IO ()
    forall (m :: * -> *). MonadIO m => GLenum -> Ptr GLfloat -> m ()
    glPointParameterfv (GLenum -> Ptr GLfloat -> IO ())
    -> (PointParameter -> GLenum)
    -> PointParameter
    -> Ptr GLfloat
    -> IO ()
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . PointParameter -> GLenum
    marshalPointParameter