{-# OPTIONS_GHC -fno-warn-orphans #-}

-- | @SPECIALIZE@ pragma declarations for RGBA images.
module Vision.Image.RGBA.Specialize () where

import Data.Int

import Vision.Histogram (Histogram, histogram, histogram2D)
import Vision.Image.RGBA.Type (RGBA)
import Vision.Image.Transform (
      InterpolMethod, crop, resize, horizontalFlip, verticalFlip
    )
import Vision.Primitive (DIM4, DIM6, Rect, Size)

{-# SPECIALIZE histogram :: Maybe DIM4 -> RGBA -> Histogram DIM4 Int32
                         ,  Maybe DIM4 -> RGBA -> Histogram DIM4 Double
                         ,  Maybe DIM4 -> RGBA -> Histogram DIM4 Float  #-}

{-# SPECIALIZE histogram2D :: DIM6 -> RGBA -> Histogram DIM6 Int32
                           ,  DIM6 -> RGBA -> Histogram DIM6 Double
                           ,  DIM6 -> RGBA -> Histogram DIM6 Float  #-}

{-# SPECIALIZE crop           :: Rect -> RGBA -> RGBA #-}
{-# SPECIALIZE resize         :: InterpolMethod -> Size -> RGBA -> RGBA #-}
{-# SPECIALIZE horizontalFlip :: RGBA -> RGBA #-}
{-# SPECIALIZE verticalFlip   :: RGBA -> RGBA #-}