{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)
-}

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

module GI.GstTag.Enums
    (

 -- * Enumerations
-- ** TagDemuxResult #enum:TagDemuxResult#

    TagDemuxResult(..)                      ,


-- ** TagImageType #enum:TagImageType#

    TagImageType(..)                        ,




    ) 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.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


-- Enum TagImageType
{- |
Type of image contained in an image tag (specified as \"image-type\" field in
the info structure in the image\'s 'GI.Gst.Structs.Sample.Sample')
-}
data TagImageType =
      TagImageTypeNone
    {- ^
    No image type. Can be used to
         tell functions such as 'GI.GstTag.Functions.tagImageDataToImageSample' that no
         image type should be set.
    -}
    | TagImageTypeUndefined
    {- ^
    Undefined\/other image type
    -}
    | TagImageTypeFrontCover
    {- ^
    Cover (front)
    -}
    | TagImageTypeBackCover
    {- ^
    Cover (back)
    -}
    | TagImageTypeLeafletPage
    {- ^
    Leaflet page
    -}
    | TagImageTypeMedium
    {- ^
    Medium (e.g. label side of CD)
    -}
    | TagImageTypeLeadArtist
    {- ^
    Lead artist\/lead performer\/soloist
    -}
    | TagImageTypeArtist
    {- ^
    Artist\/performer
    -}
    | TagImageTypeConductor
    {- ^
    Conductor
    -}
    | TagImageTypeBandOrchestra
    {- ^
    Band\/orchestra
    -}
    | TagImageTypeComposer
    {- ^
    Composer
    -}
    | TagImageTypeLyricist
    {- ^
    Lyricist\/text writer
    -}
    | TagImageTypeRecordingLocation
    {- ^
    Recording location
    -}
    | TagImageTypeDuringRecording
    {- ^
    During recording
    -}
    | TagImageTypeDuringPerformance
    {- ^
    During performance
    -}
    | TagImageTypeVideoCapture
    {- ^
    Movie\/video screen capture
    -}
    | TagImageTypeFish
    {- ^
    A fish as funny as the ID3v2 spec
    -}
    | TagImageTypeIllustration
    {- ^
    Illustration
    -}
    | TagImageTypeBandArtistLogo
    {- ^
    Band\/artist logotype
    -}
    | TagImageTypePublisherStudioLogo
    {- ^
    Publisher\/studio logotype
    -}
    | AnotherTagImageType Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum TagImageType where
    fromEnum TagImageTypeNone = -1
    fromEnum TagImageTypeUndefined = 0
    fromEnum TagImageTypeFrontCover = 1
    fromEnum TagImageTypeBackCover = 2
    fromEnum TagImageTypeLeafletPage = 3
    fromEnum TagImageTypeMedium = 4
    fromEnum TagImageTypeLeadArtist = 5
    fromEnum TagImageTypeArtist = 6
    fromEnum TagImageTypeConductor = 7
    fromEnum TagImageTypeBandOrchestra = 8
    fromEnum TagImageTypeComposer = 9
    fromEnum TagImageTypeLyricist = 10
    fromEnum TagImageTypeRecordingLocation = 11
    fromEnum TagImageTypeDuringRecording = 12
    fromEnum TagImageTypeDuringPerformance = 13
    fromEnum TagImageTypeVideoCapture = 14
    fromEnum TagImageTypeFish = 15
    fromEnum TagImageTypeIllustration = 16
    fromEnum TagImageTypeBandArtistLogo = 17
    fromEnum TagImageTypePublisherStudioLogo = 18
    fromEnum (AnotherTagImageType k) = k

    toEnum -1 = TagImageTypeNone
    toEnum 0 = TagImageTypeUndefined
    toEnum 1 = TagImageTypeFrontCover
    toEnum 2 = TagImageTypeBackCover
    toEnum 3 = TagImageTypeLeafletPage
    toEnum 4 = TagImageTypeMedium
    toEnum 5 = TagImageTypeLeadArtist
    toEnum 6 = TagImageTypeArtist
    toEnum 7 = TagImageTypeConductor
    toEnum 8 = TagImageTypeBandOrchestra
    toEnum 9 = TagImageTypeComposer
    toEnum 10 = TagImageTypeLyricist
    toEnum 11 = TagImageTypeRecordingLocation
    toEnum 12 = TagImageTypeDuringRecording
    toEnum 13 = TagImageTypeDuringPerformance
    toEnum 14 = TagImageTypeVideoCapture
    toEnum 15 = TagImageTypeFish
    toEnum 16 = TagImageTypeIllustration
    toEnum 17 = TagImageTypeBandArtistLogo
    toEnum 18 = TagImageTypePublisherStudioLogo
    toEnum k = AnotherTagImageType k

instance P.Ord TagImageType where
    compare a b = P.compare (P.fromEnum a) (P.fromEnum b)

foreign import ccall "gst_tag_image_type_get_type" c_gst_tag_image_type_get_type ::
    IO GType

instance BoxedEnum TagImageType where
    boxedEnumType _ = c_gst_tag_image_type_get_type

-- Enum TagDemuxResult
{- |
Result values from the parse_tag virtual function.
-}
data TagDemuxResult =
      TagDemuxResultBrokenTag
    {- ^
    cannot parse tag, just skip it
    -}
    | TagDemuxResultAgain
    {- ^
    call again with less or more data
    -}
    | TagDemuxResultOk
    {- ^
    parsed tag successfully
    -}
    | AnotherTagDemuxResult Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum TagDemuxResult where
    fromEnum TagDemuxResultBrokenTag = 0
    fromEnum TagDemuxResultAgain = 1
    fromEnum TagDemuxResultOk = 2
    fromEnum (AnotherTagDemuxResult k) = k

    toEnum 0 = TagDemuxResultBrokenTag
    toEnum 1 = TagDemuxResultAgain
    toEnum 2 = TagDemuxResultOk
    toEnum k = AnotherTagDemuxResult k

instance P.Ord TagDemuxResult where
    compare a b = P.compare (P.fromEnum a) (P.fromEnum b)

foreign import ccall "gst_tag_demux_result_get_type" c_gst_tag_demux_result_get_type ::
    IO GType

instance BoxedEnum TagDemuxResult where
    boxedEnumType _ = c_gst_tag_demux_result_get_type