{-# LINE 1 "Graphics/X11/Xdamage.hsc" #-}
--------------------------------------------------------------------
{-# LINE 2 "Graphics/X11/Xdamage.hsc" #-}
-- |
-- Module    : Graphics.X11.Xdamage
-- Copyright : (c) Haskell.org, 2008
-- License   : BSD3
--
-- Maintainer: Ewan Higgs <ewan_higgs@yahoo.co.uk>
-- Stability : unstable 
-- Portability: unportable 
--
--------------------------------------------------------------------
--
-- Interface to Xdamage API
--

module Graphics.X11.Xdamage(
    DamageReportLevel,
    DamageNotify(..), 
    xdamageCreate,
    xdamageDestroy,
    xdamageSubtract,
    xdamageQueryExtension,
    xdamageQueryVersion
 ) where

import Foreign
import Foreign.C.Types
import Graphics.X11.Xlib
import Graphics.X11.Xlib.Region
import Control.Monad

-- | DAMAGE is a 32 bit value where the top three bits are guaranteed to be 0
type Damage = CInt

-- | 
type DamageReportLevel = CInt

{--
                         DamageReportRawRectangles
                       | DamageReportDeltaRectangles
                       | DamageReportBoundingBox
                       | DamageReportNonEmpty
--}
data DamageNotify  = DamageNotify
                   { xdn_type       :: CInt,
                     xdn_serial     :: CUInt,
                     xdn_send_event :: Bool,
                     xdn_display    :: Display,
                     xdn_drawable   :: Drawable,
                     xdn_damage     :: Damage,
                     xdn_level      :: CInt,
                     xdn_more       :: Bool,
                     xdn_timestamp  :: Time,
                     xdn_area       :: Rectangle,
                     xdn_geometry   :: Rectangle }


{-# LINE 111 "Graphics/X11/Xdamage.hsc" #-}

-- No Xdamage, but if we fake a non-active Xdamage interface, we can still have
-- an active interface
compiledWithXdamage :: Bool
compiledWithXdamage = False

xdamageIsActive :: Display -> IO Bool
xdamageIsActive _ = return False

xdamageQueryExtension :: Display -> IO (Maybe (CInt, CInt))
xdamageQueryExtension _  = return Nothing

xdamageQueryVersion :: Display -> IO (Maybe (CInt, CInt))
xdamageQueryVersion _ = return Nothing

xdamageCreate :: Display -> Drawable -> DamageReportLevel -> IO(Damage)
xdamageCreate _ _ _ = return 0

xdamageDestroy :: Display -> Damage -> IO()
xdamageDestroy _ _ = return ()

xdamageSubtract :: Display -> Damage -> Region -> Region -> IO()
xdamageSubtract _ _ _ _ = return ()

{-# LINE 135 "Graphics/X11/Xdamage.hsc" #-}