{- |
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.Poppler.Flags
    (

 -- * Flags
-- ** AnnotFlag #flag:AnnotFlag#

    AnnotFlag(..)                           ,


-- ** FindFlags #flag:FindFlags#

    FindFlags(..)                           ,


-- ** Permissions #flag:Permissions#

    Permissions(..)                         ,


-- ** PrintFlags #flag:PrintFlags#

    PrintFlags(..)                          ,


-- ** StructureGetTextFlags #flag:StructureGetTextFlags#

    StructureGetTextFlags(..)               ,


-- ** ViewerPreferences #flag:ViewerPreferences#

    ViewerPreferences(..)                   ,




    ) 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


-- Flags ViewerPreferences
{- |
Viewer preferences
-}
data ViewerPreferences =
      ViewerPreferencesUnset
    {- ^
    no preferences set
    -}
    | ViewerPreferencesHideToolbar
    {- ^
    hider toolbars when document is active
    -}
    | ViewerPreferencesHideMenubar
    {- ^
    hide menu bar when document is active
    -}
    | ViewerPreferencesHideWindowui
    {- ^
    hide UI elements in document\'s window
    -}
    | ViewerPreferencesFitWindow
    {- ^
    resize document\'s window to fit the size of the first displayed page
    -}
    | ViewerPreferencesCenterWindow
    {- ^
    position the document\'s window in the center of the screen
    -}
    | ViewerPreferencesDisplayDocTitle
    {- ^
    display document title in window\'s title bar
    -}
    | ViewerPreferencesDirectionRtl
    {- ^
    the predominant reading order for text is right to left
    -}
    | AnotherViewerPreferences Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum ViewerPreferences where
    fromEnum ViewerPreferencesUnset = 0
    fromEnum ViewerPreferencesHideToolbar = 1
    fromEnum ViewerPreferencesHideMenubar = 2
    fromEnum ViewerPreferencesHideWindowui = 4
    fromEnum ViewerPreferencesFitWindow = 8
    fromEnum ViewerPreferencesCenterWindow = 16
    fromEnum ViewerPreferencesDisplayDocTitle = 32
    fromEnum ViewerPreferencesDirectionRtl = 64
    fromEnum (AnotherViewerPreferences k) = k

    toEnum 0 = ViewerPreferencesUnset
    toEnum 1 = ViewerPreferencesHideToolbar
    toEnum 2 = ViewerPreferencesHideMenubar
    toEnum 4 = ViewerPreferencesHideWindowui
    toEnum 8 = ViewerPreferencesFitWindow
    toEnum 16 = ViewerPreferencesCenterWindow
    toEnum 32 = ViewerPreferencesDisplayDocTitle
    toEnum 64 = ViewerPreferencesDirectionRtl
    toEnum k = AnotherViewerPreferences k

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

foreign import ccall "poppler_viewer_preferences_get_type" c_poppler_viewer_preferences_get_type ::
    IO GType

instance BoxedFlags ViewerPreferences where
    boxedFlagsType _ = c_poppler_viewer_preferences_get_type

instance IsGFlag ViewerPreferences

-- Flags StructureGetTextFlags
{- |
/No description available in the introspection data./
-}
data StructureGetTextFlags =
      StructureGetTextFlagsNone
    {- ^
    No flags.
    -}
    | StructureGetTextFlagsRecursive
    {- ^
    For non-leaf, non-content
       elements, recursively obtain the text from all the elements
       enclosed in the subtree.
    -}
    | AnotherStructureGetTextFlags Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum StructureGetTextFlags where
    fromEnum StructureGetTextFlagsNone = 0
    fromEnum StructureGetTextFlagsRecursive = 1
    fromEnum (AnotherStructureGetTextFlags k) = k

    toEnum 0 = StructureGetTextFlagsNone
    toEnum 1 = StructureGetTextFlagsRecursive
    toEnum k = AnotherStructureGetTextFlags k

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

foreign import ccall "poppler_structure_get_text_flags_get_type" c_poppler_structure_get_text_flags_get_type ::
    IO GType

instance BoxedFlags StructureGetTextFlags where
    boxedFlagsType _ = c_poppler_structure_get_text_flags_get_type

instance IsGFlag StructureGetTextFlags

-- Flags PrintFlags
{- |
Printing flags

/Since: 0.16/
-}
data PrintFlags =
      PrintFlagsDocument
    {- ^
    print main document contents
    -}
    | PrintFlagsMarkupAnnots
    {- ^
    print document and markup annotations
    -}
    | PrintFlagsStampAnnotsOnly
    {- ^
    print document and only stamp annotations
    -}
    | PrintFlagsAll
    {- ^
    print main document contents and all markup annotations
    -}
    | AnotherPrintFlags Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum PrintFlags where
    fromEnum PrintFlagsDocument = 0
    fromEnum PrintFlagsMarkupAnnots = 1
    fromEnum PrintFlagsStampAnnotsOnly = 2
    fromEnum PrintFlagsAll = 1
    fromEnum (AnotherPrintFlags k) = k

    toEnum 0 = PrintFlagsDocument
    toEnum 1 = PrintFlagsMarkupAnnots
    toEnum 2 = PrintFlagsStampAnnotsOnly
    toEnum k = AnotherPrintFlags k

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

foreign import ccall "poppler_print_flags_get_type" c_poppler_print_flags_get_type ::
    IO GType

instance BoxedFlags PrintFlags where
    boxedFlagsType _ = c_poppler_print_flags_get_type

instance IsGFlag PrintFlags

-- Flags Permissions
{- |
Permissions
-}
data Permissions =
      PermissionsOkToPrint
    {- ^
    document can be printer
    -}
    | PermissionsOkToModify
    {- ^
    document contents can be modified
    -}
    | PermissionsOkToCopy
    {- ^
    document can be copied
    -}
    | PermissionsOkToAddNotes
    {- ^
    annotations can added to the document
    -}
    | PermissionsOkToFillForm
    {- ^
    interactive form fields can be filled in
    -}
    | PermissionsOkToExtractContents
    {- ^
    extract text and graphics
    (in support of accessibility to users with disabilities or for other purposes). Since 0.18
    -}
    | PermissionsOkToAssemble
    {- ^
    assemble the document (insert, rotate, or delete pages and create
    bookmarks or thumbnail images). Since 0.18
    -}
    | PermissionsOkToPrintHighResolution
    {- ^
    document can be printer at high resolution. Since 0.18
    -}
    | PermissionsFull
    {- ^
    document permits all operations
    -}
    | AnotherPermissions Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum Permissions where
    fromEnum PermissionsOkToPrint = 1
    fromEnum PermissionsOkToModify = 2
    fromEnum PermissionsOkToCopy = 4
    fromEnum PermissionsOkToAddNotes = 8
    fromEnum PermissionsOkToFillForm = 16
    fromEnum PermissionsOkToExtractContents = 32
    fromEnum PermissionsOkToAssemble = 64
    fromEnum PermissionsOkToPrintHighResolution = 128
    fromEnum PermissionsFull = 255
    fromEnum (AnotherPermissions k) = k

    toEnum 1 = PermissionsOkToPrint
    toEnum 2 = PermissionsOkToModify
    toEnum 4 = PermissionsOkToCopy
    toEnum 8 = PermissionsOkToAddNotes
    toEnum 16 = PermissionsOkToFillForm
    toEnum 32 = PermissionsOkToExtractContents
    toEnum 64 = PermissionsOkToAssemble
    toEnum 128 = PermissionsOkToPrintHighResolution
    toEnum 255 = PermissionsFull
    toEnum k = AnotherPermissions k

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

foreign import ccall "poppler_permissions_get_type" c_poppler_permissions_get_type ::
    IO GType

instance BoxedFlags Permissions where
    boxedFlagsType _ = c_poppler_permissions_get_type

instance IsGFlag Permissions

-- Flags FindFlags
{- |
Flags using while searching text in a page

/Since: 0.22/
-}
data FindFlags =
      FindFlagsDefault
    {- ^
    use default search settings
    -}
    | FindFlagsCaseSensitive
    {- ^
    do case sensitive search
    -}
    | FindFlagsBackwards
    {- ^
    search backwards
    -}
    | FindFlagsWholeWordsOnly
    {- ^
    search only whole words
    -}
    | FindFlagsIgnoreDiacritics
    {- ^
    do diacritics insensitive search,
    i.e. ignore accents, umlauts, diaeresis,etc. while matching. This
    option will be ignored if the search term is not pure ascii. Since 0.73.
    -}
    | AnotherFindFlags Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum FindFlags where
    fromEnum FindFlagsDefault = 0
    fromEnum FindFlagsCaseSensitive = 1
    fromEnum FindFlagsBackwards = 2
    fromEnum FindFlagsWholeWordsOnly = 4
    fromEnum FindFlagsIgnoreDiacritics = 8
    fromEnum (AnotherFindFlags k) = k

    toEnum 0 = FindFlagsDefault
    toEnum 1 = FindFlagsCaseSensitive
    toEnum 2 = FindFlagsBackwards
    toEnum 4 = FindFlagsWholeWordsOnly
    toEnum 8 = FindFlagsIgnoreDiacritics
    toEnum k = AnotherFindFlags k

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

foreign import ccall "poppler_find_flags_get_type" c_poppler_find_flags_get_type ::
    IO GType

instance BoxedFlags FindFlags where
    boxedFlagsType _ = c_poppler_find_flags_get_type

instance IsGFlag FindFlags

-- Flags AnnotFlag
{- |
/No description available in the introspection data./
-}
data AnnotFlag =
      AnnotFlagUnknown
    {- ^
    /No description available in the introspection data./
    -}
    | AnnotFlagInvisible
    {- ^
    /No description available in the introspection data./
    -}
    | AnnotFlagHidden
    {- ^
    /No description available in the introspection data./
    -}
    | AnnotFlagPrint
    {- ^
    /No description available in the introspection data./
    -}
    | AnnotFlagNoZoom
    {- ^
    /No description available in the introspection data./
    -}
    | AnnotFlagNoRotate
    {- ^
    /No description available in the introspection data./
    -}
    | AnnotFlagNoView
    {- ^
    /No description available in the introspection data./
    -}
    | AnnotFlagReadOnly
    {- ^
    /No description available in the introspection data./
    -}
    | AnnotFlagLocked
    {- ^
    /No description available in the introspection data./
    -}
    | AnnotFlagToggleNoView
    {- ^
    /No description available in the introspection data./
    -}
    | AnnotFlagLockedContents
    {- ^
    /No description available in the introspection data./
    -}
    | AnotherAnnotFlag Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum AnnotFlag where
    fromEnum AnnotFlagUnknown = 0
    fromEnum AnnotFlagInvisible = 1
    fromEnum AnnotFlagHidden = 2
    fromEnum AnnotFlagPrint = 4
    fromEnum AnnotFlagNoZoom = 8
    fromEnum AnnotFlagNoRotate = 16
    fromEnum AnnotFlagNoView = 32
    fromEnum AnnotFlagReadOnly = 64
    fromEnum AnnotFlagLocked = 128
    fromEnum AnnotFlagToggleNoView = 256
    fromEnum AnnotFlagLockedContents = 512
    fromEnum (AnotherAnnotFlag k) = k

    toEnum 0 = AnnotFlagUnknown
    toEnum 1 = AnnotFlagInvisible
    toEnum 2 = AnnotFlagHidden
    toEnum 4 = AnnotFlagPrint
    toEnum 8 = AnnotFlagNoZoom
    toEnum 16 = AnnotFlagNoRotate
    toEnum 32 = AnnotFlagNoView
    toEnum 64 = AnnotFlagReadOnly
    toEnum 128 = AnnotFlagLocked
    toEnum 256 = AnnotFlagToggleNoView
    toEnum 512 = AnnotFlagLockedContents
    toEnum k = AnotherAnnotFlag k

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

foreign import ccall "poppler_annot_flag_get_type" c_poppler_annot_flag_get_type ::
    IO GType

instance BoxedFlags AnnotFlag where
    boxedFlagsType _ = c_poppler_annot_flag_get_type

instance IsGFlag AnnotFlag