deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * $Id$
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Copyright © 2003 Keith Packard
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Permission to use, copy, modify, distribute, and sell this software and its
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * documentation for any purpose is hereby granted without fee, provided that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * the above copyright notice appear in all copies and that both that
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * copyright notice and this permission notice appear in supporting
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * documentation, and that the name of Keith Packard not be used in
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * advertising or publicity pertaining to distribution of the software without
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * specific, written prior permission. Keith Packard makes no
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * representations about the suitability of this software for any purpose. It
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * is provided "as is" without express or implied warranty.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * PERFORMANCE OF THIS SOFTWARE.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef HAVE_DIX_CONFIG_H
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <dix-config.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef _DAMAGE_H_
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define _DAMAGE_H_
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct _damage *DamagePtr;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef enum _damageReportLevel {
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DamageReportRawRegion,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DamageReportDeltaRegion,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DamageReportBoundingBox,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DamageReportNonEmpty,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DamageReportNone
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync} DamageReportLevel;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef void (*DamageReportFunc) (DamagePtr pDamage, RegionPtr pRegion, void *closure);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef void (*DamageDestroyFunc) (DamagePtr pDamage, void *closure);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncBool
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDamageSetup (ScreenPtr pScreen);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDamagePtr
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDamageCreate (DamageReportFunc damageReport,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DamageDestroyFunc damageDestroy,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DamageReportLevel damageLevel,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync Bool isInternal,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ScreenPtr pScreen,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync void * closure);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDamageDrawInternal (ScreenPtr pScreen, Bool enable);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDamageRegister (DrawablePtr pDrawable,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DamagePtr pDamage);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDamageUnregister (DrawablePtr pDrawable,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DamagePtr pDamage);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDamageDestroy (DamagePtr pDamage);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncBool
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDamageSubtract (DamagePtr pDamage,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync const RegionPtr pRegion);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDamageEmpty (DamagePtr pDamage);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncRegionPtr
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDamageRegion (DamagePtr pDamage);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDamageDamageRegion (DrawablePtr pDrawable,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync const RegionPtr pRegion);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDamageSetReportAfterOp (DamagePtr pDamage, Bool reportAfter);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif /* _DAMAGE_H_ */