xenocara/xserver/hw/xfree86/xaa/xaaFallback.c
2011-11-05 13:32:40 +00:00

352 lines
7.3 KiB
C

#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
#endif
#include "misc.h"
#include "xf86.h"
#include "xf86_OSproc.h"
#include <X11/X.h>
#include "scrnintstr.h"
#include "xf86str.h"
#include "xaa.h"
#include "xaalocal.h"
#include "gcstruct.h"
#include "pixmapstr.h"
#include "xaawrap.h"
static void
XAAFillSpansFallback(
DrawablePtr pDraw,
GC *pGC,
int nInit,
DDXPointPtr pptInit,
int *pwidthInit,
int fSorted )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->FillSpans)(pDraw, pGC, nInit, pptInit, pwidthInit, fSorted);
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAASetSpansFallback(
DrawablePtr pDraw,
GCPtr pGC,
char *pcharsrc,
register DDXPointPtr ppt,
int *pwidth,
int nspans,
int fSorted )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->SetSpans)(pDraw, pGC, pcharsrc, ppt, pwidth, nspans, fSorted);
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPutImageFallback(
DrawablePtr pDraw,
GCPtr pGC,
int depth,
int x, int y, int w, int h,
int leftPad,
int format,
char *pImage )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PutImage)(pDraw, pGC, depth, x, y, w, h,
leftPad, format, pImage);
XAA_GC_OP_EPILOGUE(pGC);
}
static RegionPtr
XAACopyAreaFallback(
DrawablePtr pSrc,
DrawablePtr pDst,
GC *pGC,
int srcx, int srcy,
int width, int height,
int dstx, int dsty )
{
RegionPtr ret;
XAA_GC_OP_PROLOGUE(pGC);
if((pSrc->type == DRAWABLE_WINDOW) || (pDst->type == DRAWABLE_WINDOW) ||
IS_OFFSCREEN_PIXMAP(pSrc) || IS_OFFSCREEN_PIXMAP(pDst)) {
SYNC_CHECK(pGC);
}
ret = (*pGC->ops->CopyArea)(pSrc, pDst,
pGC, srcx, srcy, width, height, dstx, dsty);
XAA_GC_OP_EPILOGUE(pGC);
return ret;
}
static RegionPtr
XAACopyPlaneFallback(
DrawablePtr pSrc,
DrawablePtr pDst,
GCPtr pGC,
int srcx, int srcy,
int width, int height,
int dstx, int dsty,
unsigned long bitPlane )
{
RegionPtr ret;
XAA_GC_OP_PROLOGUE(pGC);
if((pSrc->type == DRAWABLE_WINDOW) || (pDst->type == DRAWABLE_WINDOW) ||
IS_OFFSCREEN_PIXMAP(pSrc) || IS_OFFSCREEN_PIXMAP(pDst)) {
SYNC_CHECK(pGC);
}
ret = (*pGC->ops->CopyPlane)(pSrc, pDst,
pGC, srcx, srcy, width, height, dstx, dsty, bitPlane);
XAA_GC_OP_EPILOGUE(pGC);
return ret;
}
static void
XAAPolyPointFallback(
DrawablePtr pDraw,
GCPtr pGC,
int mode,
int npt,
xPoint *pptInit )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolyPoint)(pDraw, pGC, mode, npt, pptInit);
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolylinesFallback(
DrawablePtr pDraw,
GCPtr pGC,
int mode,
int npt,
DDXPointPtr pptInit )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->Polylines)(pDraw, pGC, mode, npt, pptInit);
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolySegmentFallback(
DrawablePtr pDraw,
GCPtr pGC,
int nseg,
xSegment *pSeg )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolySegment)(pDraw, pGC, nseg, pSeg);
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolyRectangleFallback(
DrawablePtr pDraw,
GCPtr pGC,
int nRectsInit,
xRectangle *pRectsInit )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolyRectangle)(pDraw, pGC, nRectsInit, pRectsInit);
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolyArcFallback(
DrawablePtr pDraw,
GCPtr pGC,
int narcs,
xArc *parcs )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolyArc)(pDraw, pGC, narcs, parcs);
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAFillPolygonFallback(
DrawablePtr pDraw,
GCPtr pGC,
int shape,
int mode,
int count,
DDXPointPtr ptsIn )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->FillPolygon)(pDraw, pGC, shape, mode, count, ptsIn);
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolyFillRectFallback(
DrawablePtr pDraw,
GCPtr pGC,
int nrectFill,
xRectangle *prectInit )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolyFillRect)(pDraw, pGC, nrectFill, prectInit);
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolyFillArcFallback(
DrawablePtr pDraw,
GCPtr pGC,
int narcs,
xArc *parcs )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolyFillArc)(pDraw, pGC, narcs, parcs);
XAA_GC_OP_EPILOGUE(pGC);
}
static int
XAAPolyText8Fallback(
DrawablePtr pDraw,
GCPtr pGC,
int x,
int y,
int count,
char *chars )
{
int ret;
XAA_GC_OP_PROLOGUE(pGC);
SYNC_CHECK(pGC);
ret = (*pGC->ops->PolyText8)(pDraw, pGC, x, y, count, chars);
XAA_GC_OP_EPILOGUE(pGC);
return ret;
}
static int
XAAPolyText16Fallback(
DrawablePtr pDraw,
GCPtr pGC,
int x,
int y,
int count,
unsigned short *chars )
{
int ret;
XAA_GC_OP_PROLOGUE(pGC);
SYNC_CHECK(pGC);
ret = (*pGC->ops->PolyText16)(pDraw, pGC, x, y, count, chars);
XAA_GC_OP_EPILOGUE(pGC);
return ret;
}
static void
XAAImageText8Fallback(
DrawablePtr pDraw,
GCPtr pGC,
int x,
int y,
int count,
char *chars )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->ImageText8)(pDraw, pGC, x, y, count, chars);
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAImageText16Fallback(
DrawablePtr pDraw,
GCPtr pGC,
int x,
int y,
int count,
unsigned short *chars )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->ImageText16)(pDraw, pGC, x, y, count, chars);
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAImageGlyphBltFallback(
DrawablePtr pDraw,
GCPtr pGC,
int xInit, int yInit,
unsigned int nglyph,
CharInfoPtr *ppci,
pointer pglyphBase )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->ImageGlyphBlt)(pDraw, pGC, xInit, yInit, nglyph, ppci, pglyphBase);
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolyGlyphBltFallback(
DrawablePtr pDraw,
GCPtr pGC,
int xInit, int yInit,
unsigned int nglyph,
CharInfoPtr *ppci,
pointer pglyphBase )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolyGlyphBlt)(pDraw, pGC, xInit, yInit, nglyph, ppci, pglyphBase);
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPushPixelsFallback(
GCPtr pGC,
PixmapPtr pBitMap,
DrawablePtr pDraw,
int dx, int dy, int xOrg, int yOrg )
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PushPixels)(pGC, pBitMap, pDraw, dx, dy, xOrg, yOrg);
XAA_GC_OP_EPILOGUE(pGC);
}
GCOps XAAFallbackOps = {
XAAFillSpansFallback, XAASetSpansFallback,
XAAPutImageFallback, XAACopyAreaFallback,
XAACopyPlaneFallback, XAAPolyPointFallback,
XAAPolylinesFallback, XAAPolySegmentFallback,
XAAPolyRectangleFallback, XAAPolyArcFallback,
XAAFillPolygonFallback, XAAPolyFillRectFallback,
XAAPolyFillArcFallback, XAAPolyText8Fallback,
XAAPolyText16Fallback, XAAImageText8Fallback,
XAAImageText16Fallback, XAAImageGlyphBltFallback,
XAAPolyGlyphBltFallback, XAAPushPixelsFallback,
};
GCOps *XAAGetFallbackOps(void)
{
return &XAAFallbackOps;
}