layerstr.h revision b8e299dddd091ae24e0c08c45d91b8f937bd14d2
/*
*
* Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that
* copyright notice and this permission notice appear in supporting
* documentation, and that the name of Keith Packard not be used in
* advertising or publicity pertaining to distribution of the software without
* specific, written prior permission. Keith Packard makes no
* representations about the suitability of this software for any purpose. It
* is provided "as is" without express or implied warranty.
*
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
#ifndef _LAYERSTR_H_
#define _LAYERSTR_H_
#include "scrnintstr.h"
#include "windowstr.h"
#include "dixfontstr.h"
#include "mi.h"
#include "regionstr.h"
#include "globals.h"
#include "gcstruct.h"
#include "layer.h"
#ifdef RENDER
#include "picturestr.h"
#endif
extern int layerScrPrivateIndex;
extern int layerGCPrivateIndex;
extern int layerWinPrivateIndex;
/*
* One of these for each possible set of underlying
* rendering code. The first kind always points at the
* underlying frame buffer code and is created in LayerStartInit
* so that LayerNewKind can unwrap the screen and prepare it
* for another wrapping sequence.
*
* The set of functions wrapped here must be at least the union
* of all functions wrapped by any rendering layer in use; they're
* easy to add, so don't be shy
*/
typedef struct _LayerKind {
int kind; /* kind index */
#ifdef RENDER
#endif
} LayerKindRec;
/*
* This is the window private structure allocated for
* all windows. There are two possible alternatives here,
* either the window belongs to a single layer and uses its
* internal clip/borderClip lists or the window belongs to one
* or more layers and uses a separate clip/borderclip for each
* layer. When this is integrated into the core window struct,
* the LayerWinKind can become a single bit saving 8 bytes per
* window.
*/
typedef struct _LayerWin {
union {
} u;
} LayerWinRec;
typedef struct _LayerList {
} LayerListRec;
#define layerWinLayer(pLayWin) ((pLayWin)->isList ? (pLayWin)->u.pLayList->pLayer : (pLayWin)->u.pLayer)
typedef struct _LayerWinLoop {
#define layerWinFirstLayer(pLayWin,pLayList) ((pLayWin)->isList ? ((pLayList) = (pLayWin)->u.pLayList)->pLayer : pLayWin->u.pLayer)
#define layerWinNextLayer(pLayWin,pLayList) ((pLayWin)->isList ? ((pLayList) = (pLayList)->pNext)->pLayer : 0)
void
/*
* This is the GC private structure allocated for all GCs.
* XXX this is really messed up; I'm not sure how to fix it yet
*/
typedef struct _LayerGC {
} LayerGCRec;
/*
* This is the screen private, it contains
* the layer kinds and the layers themselves
*/
typedef struct _LayerScreen {
int nkinds; /* number of elements in kinds array */
#define layerGetScrPriv(pScreen) ((LayerScreenPtr) (pScreen)->devPrivates[layerScrPrivateIndex].ptr)
void
void
void
#ifdef RENDER
void
void
int nlist,
void
int nRect,
xRectangle *rects);
#endif
void layerChangeGC(GCPtr, unsigned long);
void layerDestroyGC(GCPtr);
void layerDestroyClip(GCPtr);
void
int nInit,
int *pwidthInit,
int fSorted);
void
char *pcharsrc,
int *pwidthInit,
int nspans,
int fSorted);
void
int depth,
int x, int y, int w, int h,
int leftPad,
int format,
char *pImage
);
);
unsigned long bitPlane
);
void
int mode,
int npt,
);
void
int mode,
int npt,
);
void
int nseg,
);
void
int nRects,
);
void
int narcs,
);
void
int shape,
int mode,
int count,
);
void
int nRectsInit,
);
void
int narcs,
);
int
int x,
int y,
int count,
char *chars
);
int
int x,
int y,
int count,
unsigned short *chars
);
void
int x,
int y,
int count,
char *chars
);
void
int x,
int y,
int count,
unsigned short *chars
);
void
int x, int y,
unsigned int nglyph,
);
void
int x, int y,
unsigned int nglyph,
);
void
);
#endif /* _LAYERSTR_H_ */