a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync/***********************************************************
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncCopyright 1987, 1998 The Open Group
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncPermission to use, copy, modify, distribute, and sell this software and its
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncdocumentation for any purpose is hereby granted without fee, provided that
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncthe above copyright notice appear in all copies and that both that
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynccopyright notice and this permission notice appear in supporting
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncdocumentation.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncThe above copyright notice and this permission notice shall be included in
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncall copies or substantial portions of the Software.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncExcept as contained in this notice, the name of The Open Group shall not be
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncused in advertising or otherwise to promote the sale, use or other dealings
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncin this Software without prior written authorization from The Open Group.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync All Rights Reserved
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncPermission to use, copy, modify, and distribute this software and its
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncdocumentation for any purpose and without fee is hereby granted,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncprovided that the above copyright notice appear in all copies and that
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncboth that copyright notice and this permission notice appear in
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncsupporting documentation, and that the name of Digital not be
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncused in advertising or publicity pertaining to distribution of the
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncsoftware without specific, written prior permission.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncSOFTWARE.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync******************************************************************/
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#ifndef PIXMAP_H
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define PIXMAP_H
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#include "misc.h"
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#include "screenint.h"
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#include "regionstr.h"
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync/* types for Drawable */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define DRAWABLE_WINDOW 0
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define DRAWABLE_PIXMAP 1
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define UNDRAWABLE_WINDOW 2
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync/* corresponding type masks for dixLookupDrawable() */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define M_DRAWABLE_WINDOW (1<<0)
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define M_DRAWABLE_PIXMAP (1<<1)
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define M_UNDRAWABLE_WINDOW (1<<2)
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define M_ANY (-1)
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define M_WINDOW (M_DRAWABLE_WINDOW|M_UNDRAWABLE_WINDOW)
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define M_DRAWABLE (M_DRAWABLE_WINDOW|M_DRAWABLE_PIXMAP)
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define M_UNDRAWABLE (M_UNDRAWABLE_WINDOW)
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync/* flags to PaintWindow() */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define PW_BACKGROUND 0
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define PW_BORDER 1
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define NullPixmap ((PixmapPtr)0)
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef struct _Drawable *DrawablePtr;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef struct _Pixmap *PixmapPtr;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef struct _PixmapDirtyUpdate *PixmapDirtyUpdatePtr;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef union _PixUnion {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync PixmapPtr pixmap;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync unsigned long pixel;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync} PixUnion;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define SamePixUnion(a,b,isPixel)\
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync ((isPixel) ? (a).pixel == (b).pixel : (a).pixmap == (b).pixmap)
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define EqualPixUnion(as, a, bs, b) \
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync ((as) == (bs) && (SamePixUnion (a, b, as)))
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define OnScreenDrawable(type) \
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync (type == DRAWABLE_WINDOW)
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define WindowDrawable(type) \
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync ((type == DRAWABLE_WINDOW) || (type == UNDRAWABLE_WINDOW))
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT PixmapPtr GetScratchPixmapHeader(ScreenPtr pScreen,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int width,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int height,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int depth,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int bitsPerPixel,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int devKind,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync void *pPixData);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT void FreeScratchPixmapHeader(PixmapPtr /*pPixmap */ );
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT Bool CreateScratchPixmapsForScreen(ScreenPtr /*pScreen */ );
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT void FreeScratchPixmapsForScreen(ScreenPtr /*pScreen */ );
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT PixmapPtr AllocatePixmap(ScreenPtr /*pScreen */ ,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int /*pixDataSize */ );
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT void FreePixmap(PixmapPtr /*pPixmap */ );
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT PixmapPtr
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncPixmapShareToSlave(PixmapPtr pixmap, ScreenPtr slave);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT Bool
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncPixmapStartDirtyTracking(PixmapPtr src,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync PixmapPtr slave_dst,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int x, int y);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define HAS_DIRTYTRACKING2 1
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT Bool
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncPixmapStartDirtyTracking2(PixmapPtr src,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync PixmapPtr slave_dst,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int x, int y, int dst_x, int dst_y);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT Bool
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncPixmapStopDirtyTracking(PixmapPtr src, PixmapPtr slave_dst);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync/* helper function, drivers can do this themselves if they can do it more
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync efficently */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT Bool
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncPixmapSyncDirtyHelper(PixmapDirtyUpdatePtr dirty, RegionPtr dirty_region);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#endif /* PIXMAP_H */