{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- 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                       ,
    noAudioVisualizer                       ,


 -- * Methods
-- ** Overloaded methods #method:Overloaded methods#

#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.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
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 Data.Text as T
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 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 (ManagedPtr AudioVisualizer)
    deriving (AudioVisualizer -> AudioVisualizer -> Bool
(AudioVisualizer -> AudioVisualizer -> Bool)
-> (AudioVisualizer -> AudioVisualizer -> Bool)
-> Eq AudioVisualizer
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AudioVisualizer -> AudioVisualizer -> Bool
$c/= :: AudioVisualizer -> AudioVisualizer -> Bool
== :: AudioVisualizer -> AudioVisualizer -> Bool
$c== :: AudioVisualizer -> AudioVisualizer -> Bool
Eq)
foreign import ccall "gst_audio_visualizer_get_type"
    c_gst_audio_visualizer_get_type :: IO GType

instance GObject AudioVisualizer where
    gobjectType :: IO GType
gobjectType = IO GType
c_gst_audio_visualizer_get_type
    

-- | Convert 'AudioVisualizer' to and from 'Data.GI.Base.GValue.GValue' with 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue AudioVisualizer where
    toGValue :: AudioVisualizer -> IO GValue
toGValue o :: AudioVisualizer
o = do
        GType
gtype <- IO GType
c_gst_audio_visualizer_get_type
        AudioVisualizer -> (Ptr AudioVisualizer -> IO GValue) -> IO GValue
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr AudioVisualizer
o (GType
-> (GValue -> Ptr AudioVisualizer -> IO ())
-> Ptr AudioVisualizer
-> IO GValue
forall a. GType -> (GValue -> a -> IO ()) -> a -> IO GValue
B.GValue.buildGValue GType
gtype GValue -> Ptr AudioVisualizer -> IO ()
forall a. GObject a => GValue -> Ptr a -> IO ()
B.GValue.set_object)
        
    fromGValue :: GValue -> IO AudioVisualizer
fromGValue gv :: GValue
gv = do
        Ptr AudioVisualizer
ptr <- GValue -> IO (Ptr AudioVisualizer)
forall b. GObject b => GValue -> IO (Ptr b)
B.GValue.get_object GValue
gv :: IO (Ptr AudioVisualizer)
        (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
        
    

-- | Type class for types which can be safely cast to `AudioVisualizer`, for instance with `toAudioVisualizer`.
class (GObject o, O.IsDescendantOf AudioVisualizer o) => IsAudioVisualizer o
instance (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 :: (MonadIO m, IsAudioVisualizer o) => o -> m AudioVisualizer
toAudioVisualizer :: o -> m AudioVisualizer
toAudioVisualizer = IO AudioVisualizer -> m AudioVisualizer
forall (m :: * -> *) a. MonadIO m => IO a -> m a
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, GObject o, GObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
unsafeCastTo ManagedPtr AudioVisualizer -> AudioVisualizer
AudioVisualizer

-- | A convenience alias for `Nothing` :: `Maybe` `AudioVisualizer`.
noAudioVisualizer :: Maybe AudioVisualizer
noAudioVisualizer :: Maybe AudioVisualizer
noAudioVisualizer = Maybe AudioVisualizer
forall a. Maybe a
Nothing

#if defined(ENABLE_OVERLOADING)
type family ResolveAudioVisualizerMethod (t :: Symbol) (o :: *) :: * 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 "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 "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.MethodInfo 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

#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 :: o -> m Word32
getAudioVisualizerShadeAmount obj :: o
obj = IO Word32 -> m Word32
forall (m :: * -> *) a. MonadIO m => IO a -> m a
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 "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 :: o -> Word32 -> m ()
setAudioVisualizerShadeAmount obj :: o
obj val :: Word32
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Word32 -> IO ()
forall a. GObject a => a -> String -> Word32 -> IO ()
B.Properties.setObjectPropertyUInt32 o
obj "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) => Word32 -> IO (GValueConstruct o)
constructAudioVisualizerShadeAmount :: Word32 -> IO (GValueConstruct o)
constructAudioVisualizerShadeAmount val :: Word32
val = String -> Word32 -> IO (GValueConstruct o)
forall o. String -> Word32 -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyUInt32 "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
#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 :: o -> m AudioVisualizerShader
getAudioVisualizerShader obj :: o
obj = IO AudioVisualizerShader -> m AudioVisualizerShader
forall (m :: * -> *) a. MonadIO m => IO a -> m a
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 "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 :: o -> AudioVisualizerShader -> m ()
setAudioVisualizerShader obj :: o
obj val :: AudioVisualizerShader
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> AudioVisualizerShader -> IO ()
forall a b.
(GObject a, Enum b, BoxedEnum b) =>
a -> String -> b -> IO ()
B.Properties.setObjectPropertyEnum o
obj "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) => GstPbutils.Enums.AudioVisualizerShader -> IO (GValueConstruct o)
constructAudioVisualizerShader :: AudioVisualizerShader -> IO (GValueConstruct o)
constructAudioVisualizerShader val :: AudioVisualizerShader
val = String -> AudioVisualizerShader -> IO (GValueConstruct o)
forall a o.
(Enum a, BoxedEnum a) =>
String -> a -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyEnum "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
#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, *)])
#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, *)])

#endif