{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- A baseclass for scopes (visualizers). It takes care of re-fitting the
-- audio-rate to video-rate and handles renegotiation (downstream video size
-- changes).
-- 
-- It also provides several background shading effects. These effects are
-- applied to a previous picture before the @render()@ implementation can draw a
-- new frame.

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.GstPbutils.Objects.AudioVisualizer
    ( 

-- * Exported types
    AudioVisualizer(..)                     ,
    IsAudioVisualizer                       ,
    toAudioVisualizer                       ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [abortState]("GI.Gst.Objects.Element#g:method:abortState"), [addControlBinding]("GI.Gst.Objects.Object#g:method:addControlBinding"), [addPad]("GI.Gst.Objects.Element#g:method:addPad"), [addPropertyDeepNotifyWatch]("GI.Gst.Objects.Element#g:method:addPropertyDeepNotifyWatch"), [addPropertyNotifyWatch]("GI.Gst.Objects.Element#g:method:addPropertyNotifyWatch"), [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [callAsync]("GI.Gst.Objects.Element#g:method:callAsync"), [changeState]("GI.Gst.Objects.Element#g:method:changeState"), [continueState]("GI.Gst.Objects.Element#g:method:continueState"), [createAllPads]("GI.Gst.Objects.Element#g:method:createAllPads"), [defaultError]("GI.Gst.Objects.Object#g:method:defaultError"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [foreachPad]("GI.Gst.Objects.Element#g:method:foreachPad"), [foreachSinkPad]("GI.Gst.Objects.Element#g:method:foreachSinkPad"), [foreachSrcPad]("GI.Gst.Objects.Element#g:method:foreachSrcPad"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [hasActiveControlBindings]("GI.Gst.Objects.Object#g:method:hasActiveControlBindings"), [hasAncestor]("GI.Gst.Objects.Object#g:method:hasAncestor"), [hasAsAncestor]("GI.Gst.Objects.Object#g:method:hasAsAncestor"), [hasAsParent]("GI.Gst.Objects.Object#g:method:hasAsParent"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [isLockedState]("GI.Gst.Objects.Element#g:method:isLockedState"), [iteratePads]("GI.Gst.Objects.Element#g:method:iteratePads"), [iterateSinkPads]("GI.Gst.Objects.Element#g:method:iterateSinkPads"), [iterateSrcPads]("GI.Gst.Objects.Element#g:method:iterateSrcPads"), [link]("GI.Gst.Objects.Element#g:method:link"), [linkFiltered]("GI.Gst.Objects.Element#g:method:linkFiltered"), [linkPads]("GI.Gst.Objects.Element#g:method:linkPads"), [linkPadsFiltered]("GI.Gst.Objects.Element#g:method:linkPadsFiltered"), [linkPadsFull]("GI.Gst.Objects.Element#g:method:linkPadsFull"), [lostState]("GI.Gst.Objects.Element#g:method:lostState"), [messageFull]("GI.Gst.Objects.Element#g:method:messageFull"), [messageFullWithDetails]("GI.Gst.Objects.Element#g:method:messageFullWithDetails"), [noMorePads]("GI.Gst.Objects.Element#g:method:noMorePads"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [postMessage]("GI.Gst.Objects.Element#g:method:postMessage"), [provideClock]("GI.Gst.Objects.Element#g:method:provideClock"), [query]("GI.Gst.Objects.Element#g:method:query"), [queryConvert]("GI.Gst.Objects.Element#g:method:queryConvert"), [queryDuration]("GI.Gst.Objects.Element#g:method:queryDuration"), [queryPosition]("GI.Gst.Objects.Element#g:method:queryPosition"), [ref]("GI.Gst.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [releaseRequestPad]("GI.Gst.Objects.Element#g:method:releaseRequestPad"), [removeControlBinding]("GI.Gst.Objects.Object#g:method:removeControlBinding"), [removePad]("GI.Gst.Objects.Element#g:method:removePad"), [removePropertyNotifyWatch]("GI.Gst.Objects.Element#g:method:removePropertyNotifyWatch"), [requestPad]("GI.Gst.Objects.Element#g:method:requestPad"), [requestPadSimple]("GI.Gst.Objects.Element#g:method:requestPadSimple"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [seek]("GI.Gst.Objects.Element#g:method:seek"), [seekSimple]("GI.Gst.Objects.Element#g:method:seekSimple"), [sendEvent]("GI.Gst.Objects.Element#g:method:sendEvent"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [suggestNextSync]("GI.Gst.Objects.Object#g:method:suggestNextSync"), [syncStateWithParent]("GI.Gst.Objects.Element#g:method:syncStateWithParent"), [syncValues]("GI.Gst.Objects.Object#g:method:syncValues"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [unlink]("GI.Gst.Objects.Element#g:method:unlink"), [unlinkPads]("GI.Gst.Objects.Element#g:method:unlinkPads"), [unparent]("GI.Gst.Objects.Object#g:method:unparent"), [unref]("GI.Gst.Objects.Object#g:method:unref"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getBaseTime]("GI.Gst.Objects.Element#g:method:getBaseTime"), [getBus]("GI.Gst.Objects.Element#g:method:getBus"), [getClock]("GI.Gst.Objects.Element#g:method:getClock"), [getCompatiblePad]("GI.Gst.Objects.Element#g:method:getCompatiblePad"), [getCompatiblePadTemplate]("GI.Gst.Objects.Element#g:method:getCompatiblePadTemplate"), [getContext]("GI.Gst.Objects.Element#g:method:getContext"), [getContextUnlocked]("GI.Gst.Objects.Element#g:method:getContextUnlocked"), [getContexts]("GI.Gst.Objects.Element#g:method:getContexts"), [getControlBinding]("GI.Gst.Objects.Object#g:method:getControlBinding"), [getControlRate]("GI.Gst.Objects.Object#g:method:getControlRate"), [getCurrentClockTime]("GI.Gst.Objects.Element#g:method:getCurrentClockTime"), [getCurrentRunningTime]("GI.Gst.Objects.Element#g:method:getCurrentRunningTime"), [getData]("GI.GObject.Objects.Object#g:method:getData"), [getFactory]("GI.Gst.Objects.Element#g:method:getFactory"), [getGValueArray]("GI.Gst.Objects.Object#g:method:getGValueArray"), [getMetadata]("GI.Gst.Objects.Element#g:method:getMetadata"), [getName]("GI.Gst.Objects.Object#g:method:getName"), [getPadTemplate]("GI.Gst.Objects.Element#g:method:getPadTemplate"), [getPadTemplateList]("GI.Gst.Objects.Element#g:method:getPadTemplateList"), [getParent]("GI.Gst.Objects.Object#g:method:getParent"), [getPathString]("GI.Gst.Objects.Object#g:method:getPathString"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getRequestPad]("GI.Gst.Objects.Element#g:method:getRequestPad"), [getStartTime]("GI.Gst.Objects.Element#g:method:getStartTime"), [getState]("GI.Gst.Objects.Element#g:method:getState"), [getStaticPad]("GI.Gst.Objects.Element#g:method:getStaticPad"), [getValue]("GI.Gst.Objects.Object#g:method:getValue").
-- 
-- ==== Setters
-- [setBaseTime]("GI.Gst.Objects.Element#g:method:setBaseTime"), [setBus]("GI.Gst.Objects.Element#g:method:setBus"), [setClock]("GI.Gst.Objects.Element#g:method:setClock"), [setContext]("GI.Gst.Objects.Element#g:method:setContext"), [setControlBindingDisabled]("GI.Gst.Objects.Object#g:method:setControlBindingDisabled"), [setControlBindingsDisabled]("GI.Gst.Objects.Object#g:method:setControlBindingsDisabled"), [setControlRate]("GI.Gst.Objects.Object#g:method:setControlRate"), [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setLockedState]("GI.Gst.Objects.Element#g:method:setLockedState"), [setName]("GI.Gst.Objects.Object#g:method:setName"), [setParent]("GI.Gst.Objects.Object#g:method:setParent"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty"), [setStartTime]("GI.Gst.Objects.Element#g:method:setStartTime"), [setState]("GI.Gst.Objects.Element#g:method:setState").

#if defined(ENABLE_OVERLOADING)
    ResolveAudioVisualizerMethod            ,
#endif



 -- * Properties


-- ** shadeAmount #attr:shadeAmount#
-- | /No description available in the introspection data./

#if defined(ENABLE_OVERLOADING)
    AudioVisualizerShadeAmountPropertyInfo  ,
#endif
#if defined(ENABLE_OVERLOADING)
    audioVisualizerShadeAmount              ,
#endif
    constructAudioVisualizerShadeAmount     ,
    getAudioVisualizerShadeAmount           ,
    setAudioVisualizerShadeAmount           ,


-- ** shader #attr:shader#
-- | /No description available in the introspection data./

#if defined(ENABLE_OVERLOADING)
    AudioVisualizerShaderPropertyInfo       ,
#endif
#if defined(ENABLE_OVERLOADING)
    audioVisualizerShader                   ,
#endif
    constructAudioVisualizerShader          ,
    getAudioVisualizerShader                ,
    setAudioVisualizerShader                ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R

import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gst.Objects.Element as Gst.Element
import qualified GI.Gst.Objects.Object as Gst.Object
import {-# SOURCE #-} qualified GI.GstPbutils.Enums as GstPbutils.Enums

-- | Memory-managed wrapper type.
newtype AudioVisualizer = AudioVisualizer (SP.ManagedPtr AudioVisualizer)
    deriving (AudioVisualizer -> AudioVisualizer -> Bool
(AudioVisualizer -> AudioVisualizer -> Bool)
-> (AudioVisualizer -> AudioVisualizer -> Bool)
-> Eq AudioVisualizer
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AudioVisualizer -> AudioVisualizer -> Bool
== :: AudioVisualizer -> AudioVisualizer -> Bool
$c/= :: AudioVisualizer -> AudioVisualizer -> Bool
/= :: AudioVisualizer -> AudioVisualizer -> Bool
Eq)

instance SP.ManagedPtrNewtype AudioVisualizer where
    toManagedPtr :: AudioVisualizer -> ManagedPtr AudioVisualizer
toManagedPtr (AudioVisualizer ManagedPtr AudioVisualizer
p) = ManagedPtr AudioVisualizer
p

foreign import ccall "gst_audio_visualizer_get_type"
    c_gst_audio_visualizer_get_type :: IO B.Types.GType

instance B.Types.TypedObject AudioVisualizer where
    glibType :: IO GType
glibType = IO GType
c_gst_audio_visualizer_get_type

instance B.Types.GObject AudioVisualizer

-- | Type class for types which can be safely cast to `AudioVisualizer`, for instance with `toAudioVisualizer`.
class (SP.GObject o, O.IsDescendantOf AudioVisualizer o) => IsAudioVisualizer o
instance (SP.GObject o, O.IsDescendantOf AudioVisualizer o) => IsAudioVisualizer o

instance O.HasParentTypes AudioVisualizer
type instance O.ParentTypes AudioVisualizer = '[Gst.Element.Element, Gst.Object.Object, GObject.Object.Object]

-- | Cast to `AudioVisualizer`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toAudioVisualizer :: (MIO.MonadIO m, IsAudioVisualizer o) => o -> m AudioVisualizer
toAudioVisualizer :: forall (m :: * -> *) o.
(MonadIO m, IsAudioVisualizer o) =>
o -> m AudioVisualizer
toAudioVisualizer = IO AudioVisualizer -> m AudioVisualizer
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO AudioVisualizer -> m AudioVisualizer)
-> (o -> IO AudioVisualizer) -> o -> m AudioVisualizer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr AudioVisualizer -> AudioVisualizer)
-> o -> IO AudioVisualizer
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
 ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr AudioVisualizer -> AudioVisualizer
AudioVisualizer

-- | Convert 'AudioVisualizer' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe AudioVisualizer) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_gst_audio_visualizer_get_type
    gvalueSet_ :: Ptr GValue -> Maybe AudioVisualizer -> IO ()
gvalueSet_ Ptr GValue
gv Maybe AudioVisualizer
P.Nothing = Ptr GValue -> Ptr AudioVisualizer -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr AudioVisualizer
forall a. Ptr a
FP.nullPtr :: FP.Ptr AudioVisualizer)
    gvalueSet_ Ptr GValue
gv (P.Just AudioVisualizer
obj) = AudioVisualizer -> (Ptr AudioVisualizer -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr AudioVisualizer
obj (Ptr GValue -> Ptr AudioVisualizer -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe AudioVisualizer)
gvalueGet_ Ptr GValue
gv = do
        Ptr AudioVisualizer
ptr <- Ptr GValue -> IO (Ptr AudioVisualizer)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr AudioVisualizer)
        if Ptr AudioVisualizer
ptr Ptr AudioVisualizer -> Ptr AudioVisualizer -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr AudioVisualizer
forall a. Ptr a
FP.nullPtr
        then AudioVisualizer -> Maybe AudioVisualizer
forall a. a -> Maybe a
P.Just (AudioVisualizer -> Maybe AudioVisualizer)
-> IO AudioVisualizer -> IO (Maybe AudioVisualizer)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr AudioVisualizer -> AudioVisualizer)
-> Ptr AudioVisualizer -> IO AudioVisualizer
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr AudioVisualizer -> AudioVisualizer
AudioVisualizer Ptr AudioVisualizer
ptr
        else Maybe AudioVisualizer -> IO (Maybe AudioVisualizer)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe AudioVisualizer
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveAudioVisualizerMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveAudioVisualizerMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo
    ResolveAudioVisualizerMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo
    ResolveAudioVisualizerMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo
    ResolveAudioVisualizerMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo
    ResolveAudioVisualizerMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo
    ResolveAudioVisualizerMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveAudioVisualizerMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveAudioVisualizerMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo
    ResolveAudioVisualizerMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo
    ResolveAudioVisualizerMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo
    ResolveAudioVisualizerMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo
    ResolveAudioVisualizerMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo
    ResolveAudioVisualizerMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveAudioVisualizerMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo
    ResolveAudioVisualizerMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo
    ResolveAudioVisualizerMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo
    ResolveAudioVisualizerMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveAudioVisualizerMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveAudioVisualizerMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo
    ResolveAudioVisualizerMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo
    ResolveAudioVisualizerMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo
    ResolveAudioVisualizerMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo
    ResolveAudioVisualizerMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveAudioVisualizerMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo
    ResolveAudioVisualizerMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo
    ResolveAudioVisualizerMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo
    ResolveAudioVisualizerMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo
    ResolveAudioVisualizerMethod "link" o = Gst.Element.ElementLinkMethodInfo
    ResolveAudioVisualizerMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo
    ResolveAudioVisualizerMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo
    ResolveAudioVisualizerMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo
    ResolveAudioVisualizerMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo
    ResolveAudioVisualizerMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo
    ResolveAudioVisualizerMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo
    ResolveAudioVisualizerMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo
    ResolveAudioVisualizerMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo
    ResolveAudioVisualizerMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveAudioVisualizerMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveAudioVisualizerMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo
    ResolveAudioVisualizerMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo
    ResolveAudioVisualizerMethod "query" o = Gst.Element.ElementQueryMethodInfo
    ResolveAudioVisualizerMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo
    ResolveAudioVisualizerMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo
    ResolveAudioVisualizerMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo
    ResolveAudioVisualizerMethod "ref" o = Gst.Object.ObjectRefMethodInfo
    ResolveAudioVisualizerMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveAudioVisualizerMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo
    ResolveAudioVisualizerMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo
    ResolveAudioVisualizerMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo
    ResolveAudioVisualizerMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo
    ResolveAudioVisualizerMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo
    ResolveAudioVisualizerMethod "requestPadSimple" o = Gst.Element.ElementRequestPadSimpleMethodInfo
    ResolveAudioVisualizerMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveAudioVisualizerMethod "seek" o = Gst.Element.ElementSeekMethodInfo
    ResolveAudioVisualizerMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo
    ResolveAudioVisualizerMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo
    ResolveAudioVisualizerMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveAudioVisualizerMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveAudioVisualizerMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo
    ResolveAudioVisualizerMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo
    ResolveAudioVisualizerMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo
    ResolveAudioVisualizerMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveAudioVisualizerMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo
    ResolveAudioVisualizerMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo
    ResolveAudioVisualizerMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo
    ResolveAudioVisualizerMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo
    ResolveAudioVisualizerMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveAudioVisualizerMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo
    ResolveAudioVisualizerMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo
    ResolveAudioVisualizerMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo
    ResolveAudioVisualizerMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo
    ResolveAudioVisualizerMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo
    ResolveAudioVisualizerMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo
    ResolveAudioVisualizerMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo
    ResolveAudioVisualizerMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo
    ResolveAudioVisualizerMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo
    ResolveAudioVisualizerMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo
    ResolveAudioVisualizerMethod "getCurrentClockTime" o = Gst.Element.ElementGetCurrentClockTimeMethodInfo
    ResolveAudioVisualizerMethod "getCurrentRunningTime" o = Gst.Element.ElementGetCurrentRunningTimeMethodInfo
    ResolveAudioVisualizerMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveAudioVisualizerMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo
    ResolveAudioVisualizerMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo
    ResolveAudioVisualizerMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo
    ResolveAudioVisualizerMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo
    ResolveAudioVisualizerMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo
    ResolveAudioVisualizerMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo
    ResolveAudioVisualizerMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo
    ResolveAudioVisualizerMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo
    ResolveAudioVisualizerMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveAudioVisualizerMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveAudioVisualizerMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo
    ResolveAudioVisualizerMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo
    ResolveAudioVisualizerMethod "getState" o = Gst.Element.ElementGetStateMethodInfo
    ResolveAudioVisualizerMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo
    ResolveAudioVisualizerMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo
    ResolveAudioVisualizerMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo
    ResolveAudioVisualizerMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo
    ResolveAudioVisualizerMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo
    ResolveAudioVisualizerMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo
    ResolveAudioVisualizerMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo
    ResolveAudioVisualizerMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo
    ResolveAudioVisualizerMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo
    ResolveAudioVisualizerMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveAudioVisualizerMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveAudioVisualizerMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo
    ResolveAudioVisualizerMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo
    ResolveAudioVisualizerMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo
    ResolveAudioVisualizerMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveAudioVisualizerMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo
    ResolveAudioVisualizerMethod "setState" o = Gst.Element.ElementSetStateMethodInfo
    ResolveAudioVisualizerMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveAudioVisualizerMethod t AudioVisualizer, O.OverloadedMethod info AudioVisualizer p) => OL.IsLabel t (AudioVisualizer -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveAudioVisualizerMethod t AudioVisualizer, O.OverloadedMethod info AudioVisualizer p, R.HasField t AudioVisualizer p) => R.HasField t AudioVisualizer p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveAudioVisualizerMethod t AudioVisualizer, O.OverloadedMethodInfo info AudioVisualizer) => OL.IsLabel t (O.MethodProxy info AudioVisualizer) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif

-- VVV Prop "shade-amount"
   -- Type: TBasicType TUInt
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@shade-amount@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' audioVisualizer #shadeAmount
-- @
getAudioVisualizerShadeAmount :: (MonadIO m, IsAudioVisualizer o) => o -> m Word32
getAudioVisualizerShadeAmount :: forall (m :: * -> *) o.
(MonadIO m, IsAudioVisualizer o) =>
o -> m Word32
getAudioVisualizerShadeAmount o
obj = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Word32
forall a. GObject a => a -> String -> IO Word32
B.Properties.getObjectPropertyUInt32 o
obj String
"shade-amount"

-- | Set the value of the “@shade-amount@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' audioVisualizer [ #shadeAmount 'Data.GI.Base.Attributes.:=' value ]
-- @
setAudioVisualizerShadeAmount :: (MonadIO m, IsAudioVisualizer o) => o -> Word32 -> m ()
setAudioVisualizerShadeAmount :: forall (m :: * -> *) o.
(MonadIO m, IsAudioVisualizer o) =>
o -> Word32 -> m ()
setAudioVisualizerShadeAmount o
obj Word32
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    o -> String -> Word32 -> IO ()
forall a. GObject a => a -> String -> Word32 -> IO ()
B.Properties.setObjectPropertyUInt32 o
obj String
"shade-amount" Word32
val

-- | Construct a `GValueConstruct` with valid value for the “@shade-amount@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAudioVisualizerShadeAmount :: (IsAudioVisualizer o, MIO.MonadIO m) => Word32 -> m (GValueConstruct o)
constructAudioVisualizerShadeAmount :: forall o (m :: * -> *).
(IsAudioVisualizer o, MonadIO m) =>
Word32 -> m (GValueConstruct o)
constructAudioVisualizerShadeAmount Word32
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a. IO a -> IO a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Word32 -> IO (GValueConstruct o)
forall o. String -> Word32 -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyUInt32 String
"shade-amount" Word32
val

#if defined(ENABLE_OVERLOADING)
data AudioVisualizerShadeAmountPropertyInfo
instance AttrInfo AudioVisualizerShadeAmountPropertyInfo where
    type AttrAllowedOps AudioVisualizerShadeAmountPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AudioVisualizerShadeAmountPropertyInfo = IsAudioVisualizer
    type AttrSetTypeConstraint AudioVisualizerShadeAmountPropertyInfo = (~) Word32
    type AttrTransferTypeConstraint AudioVisualizerShadeAmountPropertyInfo = (~) Word32
    type AttrTransferType AudioVisualizerShadeAmountPropertyInfo = Word32
    type AttrGetType AudioVisualizerShadeAmountPropertyInfo = Word32
    type AttrLabel AudioVisualizerShadeAmountPropertyInfo = "shade-amount"
    type AttrOrigin AudioVisualizerShadeAmountPropertyInfo = AudioVisualizer
    attrGet = getAudioVisualizerShadeAmount
    attrSet = setAudioVisualizerShadeAmount
    attrTransfer _ v = do
        return v
    attrConstruct = constructAudioVisualizerShadeAmount
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Objects.AudioVisualizer.shadeAmount"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.27/docs/GI-GstPbutils-Objects-AudioVisualizer.html#g:attr:shadeAmount"
        })
#endif

-- VVV Prop "shader"
   -- Type: TInterface (Name {namespace = "GstPbutils", name = "AudioVisualizerShader"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@shader@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' audioVisualizer #shader
-- @
getAudioVisualizerShader :: (MonadIO m, IsAudioVisualizer o) => o -> m GstPbutils.Enums.AudioVisualizerShader
getAudioVisualizerShader :: forall (m :: * -> *) o.
(MonadIO m, IsAudioVisualizer o) =>
o -> m AudioVisualizerShader
getAudioVisualizerShader o
obj = IO AudioVisualizerShader -> m AudioVisualizerShader
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO AudioVisualizerShader -> m AudioVisualizerShader)
-> IO AudioVisualizerShader -> m AudioVisualizerShader
forall a b. (a -> b) -> a -> b
$ o -> String -> IO AudioVisualizerShader
forall a b. (GObject a, Enum b, BoxedEnum b) => a -> String -> IO b
B.Properties.getObjectPropertyEnum o
obj String
"shader"

-- | Set the value of the “@shader@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' audioVisualizer [ #shader 'Data.GI.Base.Attributes.:=' value ]
-- @
setAudioVisualizerShader :: (MonadIO m, IsAudioVisualizer o) => o -> GstPbutils.Enums.AudioVisualizerShader -> m ()
setAudioVisualizerShader :: forall (m :: * -> *) o.
(MonadIO m, IsAudioVisualizer o) =>
o -> AudioVisualizerShader -> m ()
setAudioVisualizerShader o
obj AudioVisualizerShader
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    o -> String -> AudioVisualizerShader -> IO ()
forall a b.
(GObject a, Enum b, BoxedEnum b) =>
a -> String -> b -> IO ()
B.Properties.setObjectPropertyEnum o
obj String
"shader" AudioVisualizerShader
val

-- | Construct a `GValueConstruct` with valid value for the “@shader@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAudioVisualizerShader :: (IsAudioVisualizer o, MIO.MonadIO m) => GstPbutils.Enums.AudioVisualizerShader -> m (GValueConstruct o)
constructAudioVisualizerShader :: forall o (m :: * -> *).
(IsAudioVisualizer o, MonadIO m) =>
AudioVisualizerShader -> m (GValueConstruct o)
constructAudioVisualizerShader AudioVisualizerShader
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a. IO a -> IO a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> AudioVisualizerShader -> IO (GValueConstruct o)
forall a o.
(Enum a, BoxedEnum a) =>
String -> a -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyEnum String
"shader" AudioVisualizerShader
val

#if defined(ENABLE_OVERLOADING)
data AudioVisualizerShaderPropertyInfo
instance AttrInfo AudioVisualizerShaderPropertyInfo where
    type AttrAllowedOps AudioVisualizerShaderPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AudioVisualizerShaderPropertyInfo = IsAudioVisualizer
    type AttrSetTypeConstraint AudioVisualizerShaderPropertyInfo = (~) GstPbutils.Enums.AudioVisualizerShader
    type AttrTransferTypeConstraint AudioVisualizerShaderPropertyInfo = (~) GstPbutils.Enums.AudioVisualizerShader
    type AttrTransferType AudioVisualizerShaderPropertyInfo = GstPbutils.Enums.AudioVisualizerShader
    type AttrGetType AudioVisualizerShaderPropertyInfo = GstPbutils.Enums.AudioVisualizerShader
    type AttrLabel AudioVisualizerShaderPropertyInfo = "shader"
    type AttrOrigin AudioVisualizerShaderPropertyInfo = AudioVisualizer
    attrGet = getAudioVisualizerShader
    attrSet = setAudioVisualizerShader
    attrTransfer _ v = do
        return v
    attrConstruct = constructAudioVisualizerShader
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Objects.AudioVisualizer.shader"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.27/docs/GI-GstPbutils-Objects-AudioVisualizer.html#g:attr:shader"
        })
#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList AudioVisualizer
type instance O.AttributeList AudioVisualizer = AudioVisualizerAttributeList
type AudioVisualizerAttributeList = ('[ '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo), '("shadeAmount", AudioVisualizerShadeAmountPropertyInfo), '("shader", AudioVisualizerShaderPropertyInfo)] :: [(Symbol, DK.Type)])
#endif

#if defined(ENABLE_OVERLOADING)
audioVisualizerShadeAmount :: AttrLabelProxy "shadeAmount"
audioVisualizerShadeAmount = AttrLabelProxy

audioVisualizerShader :: AttrLabelProxy "shader"
audioVisualizerShader = AttrLabelProxy

#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList AudioVisualizer = AudioVisualizerSignalList
type AudioVisualizerSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, DK.Type)])

#endif