xenocara/xserver/hw/xfree86/xaa/xaaFallback.c

282 lines
7.9 KiB
C
Raw Normal View History

2006-11-26 11:13:41 -07:00
#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)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->FillSpans) (pDraw, pGC, nInit, pptInit, pwidthInit, fSorted);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAASetSpansFallback(DrawablePtr pDraw,
GCPtr pGC,
char *pcharsrc,
register DDXPointPtr ppt,
int *pwidth, int nspans, int fSorted)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->SetSpans) (pDraw, pGC, pcharsrc, ppt, pwidth, nspans, fSorted);
2006-11-26 11:13:41 -07:00
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)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PutImage) (pDraw, pGC, depth, x, y, w, h,
leftPad, format, pImage);
2006-11-26 11:13:41 -07:00
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)
2006-11-26 11:13:41 -07:00
{
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);
2006-11-26 11:13:41 -07:00
}
ret = (*pGC->ops->CopyArea) (pSrc, pDst,
pGC, srcx, srcy, width, height, dstx, dsty);
2006-11-26 11:13:41 -07:00
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)
2006-11-26 11:13:41 -07:00
{
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);
2006-11-26 11:13:41 -07:00
}
ret = (*pGC->ops->CopyPlane) (pSrc, pDst,
pGC, srcx, srcy, width, height, dstx, dsty,
bitPlane);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
return ret;
}
static void
XAAPolyPointFallback(DrawablePtr pDraw,
GCPtr pGC, int mode, int npt, xPoint * pptInit)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolyPoint) (pDraw, pGC, mode, npt, pptInit);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolylinesFallback(DrawablePtr pDraw,
GCPtr pGC, int mode, int npt, DDXPointPtr pptInit)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->Polylines) (pDraw, pGC, mode, npt, pptInit);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolySegmentFallback(DrawablePtr pDraw, GCPtr pGC, int nseg, xSegment * pSeg)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolySegment) (pDraw, pGC, nseg, pSeg);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolyRectangleFallback(DrawablePtr pDraw,
GCPtr pGC, int nRectsInit, xRectangle *pRectsInit)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolyRectangle) (pDraw, pGC, nRectsInit, pRectsInit);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolyArcFallback(DrawablePtr pDraw, GCPtr pGC, int narcs, xArc * parcs)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolyArc) (pDraw, pGC, narcs, parcs);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAFillPolygonFallback(DrawablePtr pDraw,
GCPtr pGC,
int shape, int mode, int count, DDXPointPtr ptsIn)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->FillPolygon) (pDraw, pGC, shape, mode, count, ptsIn);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolyFillRectFallback(DrawablePtr pDraw,
GCPtr pGC, int nrectFill, xRectangle *prectInit)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolyFillRect) (pDraw, pGC, nrectFill, prectInit);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolyFillArcFallback(DrawablePtr pDraw, GCPtr pGC, int narcs, xArc * parcs)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolyFillArc) (pDraw, pGC, narcs, parcs);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
}
static int
XAAPolyText8Fallback(DrawablePtr pDraw,
GCPtr pGC, int x, int y, int count, char *chars)
2006-11-26 11:13:41 -07:00
{
int ret;
XAA_GC_OP_PROLOGUE(pGC);
SYNC_CHECK(pGC);
ret = (*pGC->ops->PolyText8) (pDraw, pGC, x, y, count, chars);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
return ret;
}
static int
XAAPolyText16Fallback(DrawablePtr pDraw,
GCPtr pGC, int x, int y, int count, unsigned short *chars)
2006-11-26 11:13:41 -07:00
{
int ret;
XAA_GC_OP_PROLOGUE(pGC);
SYNC_CHECK(pGC);
ret = (*pGC->ops->PolyText16) (pDraw, pGC, x, y, count, chars);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
return ret;
}
static void
XAAImageText8Fallback(DrawablePtr pDraw,
GCPtr pGC, int x, int y, int count, char *chars)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->ImageText8) (pDraw, pGC, x, y, count, chars);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAImageText16Fallback(DrawablePtr pDraw,
GCPtr pGC,
int x, int y, int count, unsigned short *chars)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->ImageText16) (pDraw, pGC, x, y, count, chars);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAImageGlyphBltFallback(DrawablePtr pDraw,
GCPtr pGC,
int xInit, int yInit,
unsigned int nglyph,
CharInfoPtr * ppci, pointer pglyphBase)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->ImageGlyphBlt) (pDraw, pGC, xInit, yInit, nglyph, ppci,
pglyphBase);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPolyGlyphBltFallback(DrawablePtr pDraw,
GCPtr pGC,
int xInit, int yInit,
unsigned int nglyph,
CharInfoPtr * ppci, pointer pglyphBase)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PolyGlyphBlt) (pDraw, pGC, xInit, yInit, nglyph, ppci,
pglyphBase);
2006-11-26 11:13:41 -07:00
XAA_GC_OP_EPILOGUE(pGC);
}
static void
XAAPushPixelsFallback(GCPtr pGC,
PixmapPtr pBitMap,
DrawablePtr pDraw, int dx, int dy, int xOrg, int yOrg)
2006-11-26 11:13:41 -07:00
{
XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC);
SYNC_CHECK(pGC);
(*pGC->ops->PushPixels) (pGC, pBitMap, pDraw, dx, dy, xOrg, yOrg);
2006-11-26 11:13:41 -07:00
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,
2006-11-26 11:13:41 -07:00
XAAPolyGlyphBltFallback, XAAPushPixelsFallback,
};
GCOps *
XAAGetFallbackOps(void)
2006-11-26 11:13:41 -07:00
{
return &XAAFallbackOps;
}