#ifndef MI_H
#define MI_H
#include <X11/X.h>
#include "region.h"
#include "validate.h"
#include "window.h"
#include "gc.h"
#include <X11/fonts/font.h>
#include "input.h"
#include "cursor.h"
#define MiBits CARD32
typedef struct _miDash *miDashPtr;
#define EVEN_DASH 0
#define ODD_DASH ~0
extern void miPolyArc(
DrawablePtr ,
GCPtr ,
int ,
xArc *
);
extern RegionPtr miCopyArea(
DrawablePtr ,
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
int ,
int ,
int
);
extern RegionPtr miCopyPlane(
DrawablePtr ,
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
int ,
int ,
int ,
unsigned long
);
extern void miGetImage(
DrawablePtr ,
int ,
int ,
int ,
int ,
unsigned int ,
unsigned long ,
char *
);
extern void miPutImage(
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
int ,
int ,
int ,
int ,
char *
);
extern void miRecolorCursor(
ScreenPtr ,
CursorPtr ,
Bool
);
extern void miStepDash(
int ,
int * ,
unsigned char * ,
int ,
int *
);
#ifndef INPUT_H
typedef struct _DeviceRec *DevicePtr;
#endif
extern Bool mieqInit(
void
);
extern void mieqEnqueue(
DeviceIntPtr ,
xEventPtr
);
extern void mieqSwitchScreen(
ScreenPtr ,
Bool
);
extern void mieqProcessInputEvents(
void
);
typedef void (*mieqHandler)(int, xEventPtr, DeviceIntPtr, int);
void mieqSetHandler(int event, mieqHandler handler);
extern RegionPtr miHandleExposures(
DrawablePtr ,
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
int ,
int ,
int ,
unsigned long
);
extern void miSendGraphicsExpose(
ClientPtr ,
RegionPtr ,
XID ,
int ,
int
);
extern void miSendExposures(
WindowPtr ,
RegionPtr ,
int ,
int
);
extern void miWindowExposures(
WindowPtr ,
RegionPtr ,
RegionPtr
);
extern void miPaintWindow(
WindowPtr ,
RegionPtr ,
int
);
extern void miClearDrawable(
DrawablePtr ,
GCPtr
);
extern void miPolyFillRect(
DrawablePtr ,
GCPtr ,
int ,
xRectangle *
);
extern void miPolyGlyphBlt(
DrawablePtr ,
GCPtr ,
int ,
int ,
unsigned int ,
CharInfoPtr * ,
pointer
);
extern void miImageGlyphBlt(
DrawablePtr ,
GCPtr ,
int ,
int ,
unsigned int ,
CharInfoPtr * ,
pointer
);
extern void miFillPolygon(
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
DDXPointPtr
);
extern Bool miFillConvexPoly(
DrawablePtr ,
GCPtr ,
int ,
DDXPointPtr
);
extern Bool miFillGeneralPoly(
DrawablePtr ,
GCPtr ,
int ,
DDXPointPtr
);
extern void miPolyPoint(
DrawablePtr ,
GCPtr ,
int ,
int ,
xPoint *
);
extern void miPolyRectangle(
DrawablePtr ,
GCPtr ,
int ,
xRectangle *
);
extern void miPolySegment(
DrawablePtr ,
GCPtr ,
int ,
xSegment *
);
extern int miPolyText8(
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
char *
);
extern int miPolyText16(
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
unsigned short *
);
extern void miImageText8(
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
char *
);
extern void miImageText16(
DrawablePtr ,
GCPtr ,
int ,
int ,
int ,
unsigned short *
);
extern void miPushPixels(
GCPtr ,
PixmapPtr ,
DrawablePtr ,
int ,
int ,
int ,
int
);
extern Bool miRectAlloc(
RegionPtr ,
int
);
extern int miFindMaxBand(
RegionPtr
);
#ifdef DEBUG
extern Bool miValidRegion(
RegionPtr
);
#endif
extern Bool miRegionBroken(RegionPtr pReg);
extern Bool miModifyPixmapHeader(
PixmapPtr ,
int ,
int ,
int ,
int ,
int ,
pointer
);
extern Bool miCreateScreenResources(
ScreenPtr
);
extern Bool miScreenDevPrivateInit(
ScreenPtr ,
int ,
pointer
);
extern Bool miScreenInit(
ScreenPtr ,
pointer ,
int ,
int ,
int ,
int ,
int ,
int ,
int ,
DepthPtr ,
VisualID ,
int ,
VisualPtr
);
extern int miAllocateGCPrivateIndex(
void
);
extern PixmapPtr miGetScreenPixmap(
ScreenPtr pScreen
);
extern void miSetScreenPixmap(
PixmapPtr pPix
);
extern int miShapedWindowIn(
ScreenPtr ,
RegionPtr ,
RegionPtr ,
BoxPtr ,
int ,
int
);
typedef void
(*SetRedirectBorderClipProcPtr) (WindowPtr pWindow, RegionPtr pRegion);
typedef RegionPtr
(*GetRedirectBorderClipProcPtr) (WindowPtr pWindow);
void
miRegisterRedirectBorderClipProc (SetRedirectBorderClipProcPtr setBorderClip,
GetRedirectBorderClipProcPtr getBorderClip);
extern int miValidateTree(
WindowPtr ,
WindowPtr ,
VTKind
);
extern void miWideLine(
DrawablePtr ,
GCPtr ,
int ,
int ,
DDXPointPtr
);
extern void miWideDash(
DrawablePtr ,
GCPtr ,
int ,
int ,
DDXPointPtr
);
extern void miClearToBackground(
WindowPtr ,
int ,
int ,
int ,
int ,
Bool
);
extern Bool miChangeSaveUnder(
WindowPtr ,
WindowPtr
);
extern void miPostChangeSaveUnder(
WindowPtr ,
WindowPtr
);
extern void miMarkWindow(
WindowPtr
);
extern Bool miMarkOverlappedWindows(
WindowPtr ,
WindowPtr ,
WindowPtr *
);
extern void miHandleValidateExposures(
WindowPtr
);
extern void miMoveWindow(
WindowPtr ,
int ,
int ,
WindowPtr ,
VTKind
);
extern void miSlideAndSizeWindow(
WindowPtr ,
int ,
int ,
unsigned int ,
unsigned int ,
WindowPtr
);
extern WindowPtr miGetLayerWindow(
WindowPtr
);
extern void miSetShape(
WindowPtr
);
extern void miChangeBorderWidth(
WindowPtr ,
unsigned int
);
extern void miMarkUnrealizedWindow(
WindowPtr ,
WindowPtr ,
Bool
);
extern void miSegregateChildren(WindowPtr pWin, RegionPtr pReg, int depth);
extern void miZeroPolyArc(
DrawablePtr ,
GCPtr ,
int ,
xArc *
);
extern void miZeroLine(
DrawablePtr ,
GCPtr ,
int ,
int ,
DDXPointRec *
);
extern void miZeroDashLine(
DrawablePtr ,
GCPtr ,
int ,
int ,
DDXPointRec *
);
extern void miPolyFillArc(
DrawablePtr ,
GCPtr ,
int ,
xArc *
);
#endif