{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (garetxe@gmail.com) GstVideoDither provides implementations of several dithering algorithms that can be applied to lines of video pixels to quantize and dither them. -} module GI.GstVideo.Structs.VideoDither ( -- * Exported types VideoDither(..) , noVideoDither , -- * Methods -- ** videoDitherFree VideoDitherFreeMethodInfo , videoDitherFree , -- ** videoDitherLine VideoDitherLineMethodInfo , videoDitherLine , ) where import Prelude () import Data.GI.Base.ShortPrelude import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import GI.GstVideo.Types import GI.GstVideo.Callbacks newtype VideoDither = VideoDither (ForeignPtr VideoDither) noVideoDither :: Maybe VideoDither noVideoDither = Nothing -- method VideoDither::free -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "GstVideo" "VideoDither", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "gst_video_dither_free" gst_video_dither_free :: Ptr VideoDither -> -- _obj : TInterface "GstVideo" "VideoDither" IO () videoDitherFree :: (MonadIO m) => VideoDither -- _obj -> m () -- result videoDitherFree _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj gst_video_dither_free _obj' touchManagedPtr _obj return () data VideoDitherFreeMethodInfo instance (signature ~ (m ()), MonadIO m) => MethodInfo VideoDitherFreeMethodInfo VideoDither signature where overloadedMethod _ = videoDitherFree -- method VideoDither::line -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "GstVideo" "VideoDither", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "gst_video_dither_line" gst_video_dither_line :: Ptr VideoDither -> -- _obj : TInterface "GstVideo" "VideoDither" Ptr () -> -- line : TBasicType TVoid Word32 -> -- x : TBasicType TUInt32 Word32 -> -- y : TBasicType TUInt32 Word32 -> -- width : TBasicType TUInt32 IO () videoDitherLine :: (MonadIO m) => VideoDither -- _obj -> Ptr () -- line -> Word32 -- x -> Word32 -- y -> Word32 -- width -> m () -- result videoDitherLine _obj line x y width = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj gst_video_dither_line _obj' line x y width touchManagedPtr _obj return () data VideoDitherLineMethodInfo instance (signature ~ (Ptr () -> Word32 -> Word32 -> Word32 -> m ()), MonadIO m) => MethodInfo VideoDitherLineMethodInfo VideoDither signature where overloadedMethod _ = videoDitherLine type family ResolveVideoDitherMethod (t :: Symbol) (o :: *) :: * where ResolveVideoDitherMethod "free" o = VideoDitherFreeMethodInfo ResolveVideoDitherMethod "line" o = VideoDitherLineMethodInfo ResolveVideoDitherMethod l o = MethodResolutionFailed l o instance (info ~ ResolveVideoDitherMethod t VideoDither, MethodInfo info VideoDither p) => IsLabelProxy t (VideoDither -> p) where fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info) #if MIN_VERSION_base(4,9,0) instance (info ~ ResolveVideoDitherMethod t VideoDither, MethodInfo info VideoDither p) => IsLabel t (VideoDither -> p) where fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info) #endif