module GI.GstAudio.Interfaces.StreamVolume
(
StreamVolume(..) ,
noStreamVolume ,
IsStreamVolume ,
toStreamVolume ,
streamVolumeConvertVolume ,
StreamVolumeGetMuteMethodInfo ,
streamVolumeGetMute ,
StreamVolumeGetVolumeMethodInfo ,
streamVolumeGetVolume ,
StreamVolumeSetMuteMethodInfo ,
streamVolumeSetMute ,
StreamVolumeSetVolumeMethodInfo ,
streamVolumeSetVolume ,
StreamVolumeMutePropertyInfo ,
constructStreamVolumeMute ,
getStreamVolumeMute ,
setStreamVolumeMute ,
streamVolumeMute ,
StreamVolumeVolumePropertyInfo ,
constructStreamVolumeVolume ,
getStreamVolumeVolume ,
setStreamVolumeVolume ,
streamVolumeVolume ,
) 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.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
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 GI.GObject.Objects.Object as GObject.Object
import qualified GI.GstAudio.Enums as GstAudio.Enums
newtype StreamVolume = StreamVolume (ManagedPtr StreamVolume)
noStreamVolume :: Maybe StreamVolume
noStreamVolume = Nothing
type family ResolveStreamVolumeMethod (t :: Symbol) (o :: *) :: * where
ResolveStreamVolumeMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveStreamVolumeMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveStreamVolumeMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveStreamVolumeMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveStreamVolumeMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveStreamVolumeMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveStreamVolumeMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveStreamVolumeMethod "ref" o = GObject.Object.ObjectRefMethodInfo
ResolveStreamVolumeMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveStreamVolumeMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
ResolveStreamVolumeMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
ResolveStreamVolumeMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveStreamVolumeMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveStreamVolumeMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveStreamVolumeMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveStreamVolumeMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
ResolveStreamVolumeMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveStreamVolumeMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveStreamVolumeMethod "getMute" o = StreamVolumeGetMuteMethodInfo
ResolveStreamVolumeMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveStreamVolumeMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveStreamVolumeMethod "getVolume" o = StreamVolumeGetVolumeMethodInfo
ResolveStreamVolumeMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveStreamVolumeMethod "setMute" o = StreamVolumeSetMuteMethodInfo
ResolveStreamVolumeMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveStreamVolumeMethod "setVolume" o = StreamVolumeSetVolumeMethodInfo
ResolveStreamVolumeMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveStreamVolumeMethod t StreamVolume, O.MethodInfo info StreamVolume p) => O.IsLabelProxy t (StreamVolume -> p) where
fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveStreamVolumeMethod t StreamVolume, O.MethodInfo info StreamVolume p) => O.IsLabel t (StreamVolume -> p) where
fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
getStreamVolumeMute :: (MonadIO m, IsStreamVolume o) => o -> m Bool
getStreamVolumeMute obj = liftIO $ getObjectPropertyBool obj "mute"
setStreamVolumeMute :: (MonadIO m, IsStreamVolume o) => o -> Bool -> m ()
setStreamVolumeMute obj val = liftIO $ setObjectPropertyBool obj "mute" val
constructStreamVolumeMute :: (IsStreamVolume o) => Bool -> IO (GValueConstruct o)
constructStreamVolumeMute val = constructObjectPropertyBool "mute" val
data StreamVolumeMutePropertyInfo
instance AttrInfo StreamVolumeMutePropertyInfo where
type AttrAllowedOps StreamVolumeMutePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
type AttrSetTypeConstraint StreamVolumeMutePropertyInfo = (~) Bool
type AttrBaseTypeConstraint StreamVolumeMutePropertyInfo = IsStreamVolume
type AttrGetType StreamVolumeMutePropertyInfo = Bool
type AttrLabel StreamVolumeMutePropertyInfo = "mute"
type AttrOrigin StreamVolumeMutePropertyInfo = StreamVolume
attrGet _ = getStreamVolumeMute
attrSet _ = setStreamVolumeMute
attrConstruct _ = constructStreamVolumeMute
attrClear _ = undefined
getStreamVolumeVolume :: (MonadIO m, IsStreamVolume o) => o -> m Double
getStreamVolumeVolume obj = liftIO $ getObjectPropertyDouble obj "volume"
setStreamVolumeVolume :: (MonadIO m, IsStreamVolume o) => o -> Double -> m ()
setStreamVolumeVolume obj val = liftIO $ setObjectPropertyDouble obj "volume" val
constructStreamVolumeVolume :: (IsStreamVolume o) => Double -> IO (GValueConstruct o)
constructStreamVolumeVolume val = constructObjectPropertyDouble "volume" val
data StreamVolumeVolumePropertyInfo
instance AttrInfo StreamVolumeVolumePropertyInfo where
type AttrAllowedOps StreamVolumeVolumePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
type AttrSetTypeConstraint StreamVolumeVolumePropertyInfo = (~) Double
type AttrBaseTypeConstraint StreamVolumeVolumePropertyInfo = IsStreamVolume
type AttrGetType StreamVolumeVolumePropertyInfo = Double
type AttrLabel StreamVolumeVolumePropertyInfo = "volume"
type AttrOrigin StreamVolumeVolumePropertyInfo = StreamVolume
attrGet _ = getStreamVolumeVolume
attrSet _ = setStreamVolumeVolume
attrConstruct _ = constructStreamVolumeVolume
attrClear _ = undefined
instance O.HasAttributeList StreamVolume
type instance O.AttributeList StreamVolume = StreamVolumeAttributeList
type StreamVolumeAttributeList = ('[ '("mute", StreamVolumeMutePropertyInfo), '("volume", StreamVolumeVolumePropertyInfo)] :: [(Symbol, *)])
streamVolumeMute :: AttrLabelProxy "mute"
streamVolumeMute = AttrLabelProxy
streamVolumeVolume :: AttrLabelProxy "volume"
streamVolumeVolume = AttrLabelProxy
type instance O.SignalList StreamVolume = StreamVolumeSignalList
type StreamVolumeSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])
foreign import ccall "gst_stream_volume_get_type"
c_gst_stream_volume_get_type :: IO GType
instance GObject StreamVolume where
gobjectType _ = c_gst_stream_volume_get_type
class GObject o => IsStreamVolume o
#if MIN_VERSION_base(4,9,0)
instance (GObject a, O.UnknownAncestorError StreamVolume a) =>
IsStreamVolume a
#endif
instance IsStreamVolume StreamVolume
instance GObject.Object.IsObject StreamVolume
toStreamVolume :: IsStreamVolume o => o -> IO StreamVolume
toStreamVolume = unsafeCastTo StreamVolume
foreign import ccall "gst_stream_volume_get_mute" gst_stream_volume_get_mute ::
Ptr StreamVolume ->
IO CInt
streamVolumeGetMute ::
(B.CallStack.HasCallStack, MonadIO m, IsStreamVolume a) =>
a
-> m Bool
streamVolumeGetMute volume = liftIO $ do
volume' <- unsafeManagedPtrCastPtr volume
result <- gst_stream_volume_get_mute volume'
let result' = (/= 0) result
touchManagedPtr volume
return result'
data StreamVolumeGetMuteMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsStreamVolume a) => O.MethodInfo StreamVolumeGetMuteMethodInfo a signature where
overloadedMethod _ = streamVolumeGetMute
foreign import ccall "gst_stream_volume_get_volume" gst_stream_volume_get_volume ::
Ptr StreamVolume ->
CUInt ->
IO CDouble
streamVolumeGetVolume ::
(B.CallStack.HasCallStack, MonadIO m, IsStreamVolume a) =>
a
-> GstAudio.Enums.StreamVolumeFormat
-> m Double
streamVolumeGetVolume volume format = liftIO $ do
volume' <- unsafeManagedPtrCastPtr volume
let format' = (fromIntegral . fromEnum) format
result <- gst_stream_volume_get_volume volume' format'
let result' = realToFrac result
touchManagedPtr volume
return result'
data StreamVolumeGetVolumeMethodInfo
instance (signature ~ (GstAudio.Enums.StreamVolumeFormat -> m Double), MonadIO m, IsStreamVolume a) => O.MethodInfo StreamVolumeGetVolumeMethodInfo a signature where
overloadedMethod _ = streamVolumeGetVolume
foreign import ccall "gst_stream_volume_set_mute" gst_stream_volume_set_mute ::
Ptr StreamVolume ->
CInt ->
IO ()
streamVolumeSetMute ::
(B.CallStack.HasCallStack, MonadIO m, IsStreamVolume a) =>
a
-> Bool
-> m ()
streamVolumeSetMute volume mute = liftIO $ do
volume' <- unsafeManagedPtrCastPtr volume
let mute' = (fromIntegral . fromEnum) mute
gst_stream_volume_set_mute volume' mute'
touchManagedPtr volume
return ()
data StreamVolumeSetMuteMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsStreamVolume a) => O.MethodInfo StreamVolumeSetMuteMethodInfo a signature where
overloadedMethod _ = streamVolumeSetMute
foreign import ccall "gst_stream_volume_set_volume" gst_stream_volume_set_volume ::
Ptr StreamVolume ->
CUInt ->
CDouble ->
IO ()
streamVolumeSetVolume ::
(B.CallStack.HasCallStack, MonadIO m, IsStreamVolume a) =>
a
-> GstAudio.Enums.StreamVolumeFormat
-> Double
-> m ()
streamVolumeSetVolume volume format val = liftIO $ do
volume' <- unsafeManagedPtrCastPtr volume
let format' = (fromIntegral . fromEnum) format
let val' = realToFrac val
gst_stream_volume_set_volume volume' format' val'
touchManagedPtr volume
return ()
data StreamVolumeSetVolumeMethodInfo
instance (signature ~ (GstAudio.Enums.StreamVolumeFormat -> Double -> m ()), MonadIO m, IsStreamVolume a) => O.MethodInfo StreamVolumeSetVolumeMethodInfo a signature where
overloadedMethod _ = streamVolumeSetVolume
foreign import ccall "gst_stream_volume_convert_volume" gst_stream_volume_convert_volume ::
CUInt ->
CUInt ->
CDouble ->
IO CDouble
streamVolumeConvertVolume ::
(B.CallStack.HasCallStack, MonadIO m) =>
GstAudio.Enums.StreamVolumeFormat
-> GstAudio.Enums.StreamVolumeFormat
-> Double
-> m Double
streamVolumeConvertVolume from to val = liftIO $ do
let from' = (fromIntegral . fromEnum) from
let to' = (fromIntegral . fromEnum) to
let val' = realToFrac val
result <- gst_stream_volume_convert_volume from' to' val'
let result' = realToFrac result
return result'