diff options
Diffstat (limited to 'nx-X11/programs/Xserver/fb')
-rw-r--r-- | nx-X11/programs/Xserver/fb/Imakefile.NX.original | 194 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/fb/Imakefile.X.original | 188 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/fb/fbtrap.c.NX.original | 242 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/fb/fbtrap.c.X.original | 239 |
4 files changed, 0 insertions, 863 deletions
diff --git a/nx-X11/programs/Xserver/fb/Imakefile.NX.original b/nx-X11/programs/Xserver/fb/Imakefile.NX.original deleted file mode 100644 index cb560e7a0..000000000 --- a/nx-X11/programs/Xserver/fb/Imakefile.NX.original +++ /dev/null @@ -1,194 +0,0 @@ -XCOMM $XFree86: xc/programs/Xserver/fb/Imakefile,v 1.16 2002/05/31 16:12:17 dawes Exp $ -XCOMM -XCOMM -XCOMM Id: Imakefile,v 1.1 1999/11/02 03:54:44 keithp Exp $ - -/* - * The X.org 6.8.99.16 snapshot fails to compile with GCC 4. - * Temporarily disable the MMX features until the bug is - * fixed. - * -#if defined(HasGcc34) && HasGcc34 -MMXOPTIONS= -mmmx -msse -Winline --param inline-unit-growth=10000 \ - --param large-function-growth=10000 -DUSE_MMX -USEMMXOPTIONS= -DUSE_MMX -#if defined(i386Architecture) || defined(AMD64Architecture) -SpecialCObjectRule(fbmmx,fbmmx.c,$(MMXOPTIONS)) -SpecialCObjectRule(fbpict,fbpict.c,$(USEMMXOPTIONS)) -SpecialCObjectRule(fbfill,fbfill.c,$(USEMMXOPTIONS)) -SpecialCObjectRule(fbcopy,fbcopy.c,$(USEMMXOPTIONS)) -#endif - -#endif - */ - -#if DoLoadableServer -#if !BuildModuleInSubdir -#define IHaveModules -#elif !defined(IHaveModules) -#define IHaveSubdirs -SUBDIRS = module -#endif -#endif - -#include <Server.tmpl> - -#ifdef FbNoPixelAddrCode -DEFINES=-DFBNOPIXADDR -DFBNO24BIT -#endif - -#if defined(IHaveModules) -XFMODSRC = fbmodule.c -XFMODOBJ = fbmodule.o -#endif - -#if BuildRender -RENDERSRC = fbcompose.c -RENDEROBJ = fbcompose.o -#endif - -SRCS = $(XFMODSRC) \ - fballpriv.c \ - fbbits.c \ - fbblt.c \ - fbbltone.c \ - fbbstore.c \ - fbcmap.c \ - $(RENDERSRC) \ - fbcopy.c \ - fbedge.c \ - fbfill.c \ - fbfillrect.c \ - fbfillsp.c \ - fbgc.c \ - fbgetsp.c \ - fbglyph.c \ - fbimage.c \ - fbline.c \ - fboverlay.c \ - fbpixmap.c \ - fbpoint.c \ - fbpush.c \ - fbscreen.c \ - fbseg.c \ - fbsetsp.c \ - fbsolid.c \ - fbstipple.c \ - fbtile.c \ - fbtrap.c \ - fbutil.c \ - fbwindow.c \ - fb24_32.c \ - fbpict.c \ - fbmmx.c \ - fbpseudocolor.c - -OBJS = $(XFMODOBJ) \ - fbarc.o \ - fballpriv.o \ - fbbits.o \ - fbblt.o \ - fbbltone.o \ - fbbstore.o \ - fbcmap.o \ - $(RENDEROBJ) \ - fbcopy.o \ - fbedge.o \ - fbfill.o \ - fbfillrect.o \ - fbfillsp.o \ - fbgc.o \ - fbgetsp.o \ - fbglyph.o \ - fbimage.o \ - fbline.o \ - fboverlay.o \ - fbpixmap.o \ - fbpoint.o \ - fbpush.o \ - fbscreen.o \ - fbseg.o \ - fbsetsp.o \ - fbsolid.o \ - fbstipple.o \ - fbtile.o \ - fbtrap.o \ - fbutil.o \ - fbwindow.o \ - fb24_32.o \ - fbpict.o \ - fbmmx.o \ - fbpseudocolor.o - - INCLUDES = -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \ - -I$(XINCLUDESRC) \ - -I$(FONTINCSRC) -I$(XF86SRC)/common $(EXTRAINCLUDES) \ - -I$(SERVERSRC)/render -I$(EXTINCSRC) -I$(SERVERSRC)/Xext - LINTLIBS = $(SERVERSRC)/dix/llib-ldix.ln $(SERVERSRC)/os/llib-los.ln \ - $(SERVERSRC)/mi/llib-lmi.ln - -#ifdef IHaveModules -ModuleObjectRule() -LibraryModuleTarget(fb,$(OBJS)) -#else -NormalLibraryObjectRule() -NormalLibraryTarget(fb,$(OBJS)) -#endif - -LintLibraryTarget(fb,$(SRCS)) - -NormalLintTarget($(SRCS)) - -#ifdef IHaveModules -InstallLibraryModule(fb,$(MODULEDIR),.) -#endif - -DependTarget() - -#ifdef IHaveSubdirs -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) -#endif - -#ifdef LinkDirectory -LinkSourceFile(fb24_32.c,LinkDirectory) -LinkSourceFile(fballpriv.c,LinkDirectory) -LinkSourceFile(fbarc.c,LinkDirectory) -LinkSourceFile(fbbits.c,LinkDirectory) -LinkSourceFile(fbblt.c,LinkDirectory) -LinkSourceFile(fbbltone.c,LinkDirectory) -LinkSourceFile(fbbstore.c,LinkDirectory) -LinkSourceFile(fbcmap.c,LinkDirectory) -#if BuildRender -LinkSourceFile(fbcompose.c,LinkDirectory) -#endif -LinkSourceFile(fbcopy.c,LinkDirectory) -LinkSourceFile(fbfill.c,LinkDirectory) -LinkSourceFile(fbfillrect.c,LinkDirectory) -LinkSourceFile(fbfillsp.c,LinkDirectory) -LinkSourceFile(fbgc.c,LinkDirectory) -LinkSourceFile(fbgetsp.c,LinkDirectory) -LinkSourceFile(fbglyph.c,LinkDirectory) -LinkSourceFile(fbimage.c,LinkDirectory) -LinkSourceFile(fbline.c,LinkDirectory) -LinkSourceFile(fbmodule.c,LinkDirectory) -LinkSourceFile(fboverlay.c,LinkDirectory) -LinkSourceFile(fbpict.c,LinkDirectory) -LinkSourceFile(fbpixmap.c,LinkDirectory) -LinkSourceFile(fbpoint.c,LinkDirectory) -LinkSourceFile(fbpush.c,LinkDirectory) -LinkSourceFile(fbscreen.c,LinkDirectory) -LinkSourceFile(fbseg.c,LinkDirectory) -LinkSourceFile(fbsetsp.c,LinkDirectory) -LinkSourceFile(fbsolid.c,LinkDirectory) -LinkSourceFile(fbstipple.c,LinkDirectory) -LinkSourceFile(fbtile.c,LinkDirectory) -LinkSourceFile(fbtrap.c,LinkDirectory) -LinkSourceFile(fbutil.c,LinkDirectory) -LinkSourceFile(fbwindow.c,LinkDirectory) -LinkSourceFile(fbmmx.c,LinkDirectory) -#endif - -InstallDriverSDKLibraryModule(fb,$(DRIVERSDKMODULEDIR),.) -InstallDriverSDKNonExecFile(fb.h,$(DRIVERSDKINCLUDEDIR)) -InstallDriverSDKNonExecFile(fbrop.h,$(DRIVERSDKINCLUDEDIR)) diff --git a/nx-X11/programs/Xserver/fb/Imakefile.X.original b/nx-X11/programs/Xserver/fb/Imakefile.X.original deleted file mode 100644 index df867016a..000000000 --- a/nx-X11/programs/Xserver/fb/Imakefile.X.original +++ /dev/null @@ -1,188 +0,0 @@ -XCOMM $XFree86: xc/programs/Xserver/fb/Imakefile,v 1.16 2002/05/31 16:12:17 dawes Exp $ -XCOMM -XCOMM -XCOMM Id: Imakefile,v 1.1 1999/11/02 03:54:44 keithp Exp $ - -#if defined(HasGcc34) && HasGcc34 -MMXOPTIONS= -mmmx -msse -Winline --param inline-unit-growth=10000 \ - --param large-function-growth=10000 -DUSE_MMX -USEMMXOPTIONS= -DUSE_MMX -#if defined(i386Architecture) || defined(AMD64Architecture) -SpecialCObjectRule(fbmmx,fbmmx.c,$(MMXOPTIONS)) -SpecialCObjectRule(fbpict,fbpict.c,$(USEMMXOPTIONS)) -SpecialCObjectRule(fbfill,fbfill.c,$(USEMMXOPTIONS)) -SpecialCObjectRule(fbcopy,fbcopy.c,$(USEMMXOPTIONS)) -#endif - -#endif - -#if DoLoadableServer -#if !BuildModuleInSubdir -#define IHaveModules -#elif !defined(IHaveModules) -#define IHaveSubdirs -SUBDIRS = module -#endif -#endif - -#include <Server.tmpl> - -#ifdef FbNoPixelAddrCode -DEFINES=-DFBNOPIXADDR -DFBNO24BIT -#endif - -#if defined(IHaveModules) -XFMODSRC = fbmodule.c -XFMODOBJ = fbmodule.o -#endif - -#if BuildRender -RENDERSRC = fbcompose.c -RENDEROBJ = fbcompose.o -#endif - -SRCS = $(XFMODSRC) \ - fballpriv.c \ - fbbits.c \ - fbblt.c \ - fbbltone.c \ - fbbstore.c \ - fbcmap.c \ - $(RENDERSRC) \ - fbcopy.c \ - fbedge.c \ - fbfill.c \ - fbfillrect.c \ - fbfillsp.c \ - fbgc.c \ - fbgetsp.c \ - fbglyph.c \ - fbimage.c \ - fbline.c \ - fboverlay.c \ - fbpixmap.c \ - fbpoint.c \ - fbpush.c \ - fbscreen.c \ - fbseg.c \ - fbsetsp.c \ - fbsolid.c \ - fbstipple.c \ - fbtile.c \ - fbtrap.c \ - fbutil.c \ - fbwindow.c \ - fb24_32.c \ - fbpict.c \ - fbmmx.c \ - fbpseudocolor.c - -OBJS = $(XFMODOBJ) \ - fbarc.o \ - fballpriv.o \ - fbbits.o \ - fbblt.o \ - fbbltone.o \ - fbbstore.o \ - fbcmap.o \ - $(RENDEROBJ) \ - fbcopy.o \ - fbedge.o \ - fbfill.o \ - fbfillrect.o \ - fbfillsp.o \ - fbgc.o \ - fbgetsp.o \ - fbglyph.o \ - fbimage.o \ - fbline.o \ - fboverlay.o \ - fbpixmap.o \ - fbpoint.o \ - fbpush.o \ - fbscreen.o \ - fbseg.o \ - fbsetsp.o \ - fbsolid.o \ - fbstipple.o \ - fbtile.o \ - fbtrap.o \ - fbutil.o \ - fbwindow.o \ - fb24_32.o \ - fbpict.o \ - fbmmx.o \ - fbpseudocolor.o - - INCLUDES = -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi -I$(SERVERSRC)/include \ - -I$(XINCLUDESRC) \ - -I$(FONTINCSRC) -I$(XF86SRC)/common $(EXTRAINCLUDES) \ - -I$(SERVERSRC)/render -I$(EXTINCSRC) -I$(SERVERSRC)/Xext - LINTLIBS = $(SERVERSRC)/dix/llib-ldix.ln $(SERVERSRC)/os/llib-los.ln \ - $(SERVERSRC)/mi/llib-lmi.ln - -#ifdef IHaveModules -ModuleObjectRule() -LibraryModuleTarget(fb,$(OBJS)) -#else -NormalLibraryObjectRule() -NormalLibraryTarget(fb,$(OBJS)) -#endif - -LintLibraryTarget(fb,$(SRCS)) - -NormalLintTarget($(SRCS)) - -#ifdef IHaveModules -InstallLibraryModule(fb,$(MODULEDIR),.) -#endif - -DependTarget() - -#ifdef IHaveSubdirs -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) -#endif - -#ifdef LinkDirectory -LinkSourceFile(fb24_32.c,LinkDirectory) -LinkSourceFile(fballpriv.c,LinkDirectory) -LinkSourceFile(fbarc.c,LinkDirectory) -LinkSourceFile(fbbits.c,LinkDirectory) -LinkSourceFile(fbblt.c,LinkDirectory) -LinkSourceFile(fbbltone.c,LinkDirectory) -LinkSourceFile(fbbstore.c,LinkDirectory) -LinkSourceFile(fbcmap.c,LinkDirectory) -#if BuildRender -LinkSourceFile(fbcompose.c,LinkDirectory) -#endif -LinkSourceFile(fbcopy.c,LinkDirectory) -LinkSourceFile(fbfill.c,LinkDirectory) -LinkSourceFile(fbfillrect.c,LinkDirectory) -LinkSourceFile(fbfillsp.c,LinkDirectory) -LinkSourceFile(fbgc.c,LinkDirectory) -LinkSourceFile(fbgetsp.c,LinkDirectory) -LinkSourceFile(fbglyph.c,LinkDirectory) -LinkSourceFile(fbimage.c,LinkDirectory) -LinkSourceFile(fbline.c,LinkDirectory) -LinkSourceFile(fbmodule.c,LinkDirectory) -LinkSourceFile(fboverlay.c,LinkDirectory) -LinkSourceFile(fbpict.c,LinkDirectory) -LinkSourceFile(fbpixmap.c,LinkDirectory) -LinkSourceFile(fbpoint.c,LinkDirectory) -LinkSourceFile(fbpush.c,LinkDirectory) -LinkSourceFile(fbscreen.c,LinkDirectory) -LinkSourceFile(fbseg.c,LinkDirectory) -LinkSourceFile(fbsetsp.c,LinkDirectory) -LinkSourceFile(fbsolid.c,LinkDirectory) -LinkSourceFile(fbstipple.c,LinkDirectory) -LinkSourceFile(fbtile.c,LinkDirectory) -LinkSourceFile(fbtrap.c,LinkDirectory) -LinkSourceFile(fbutil.c,LinkDirectory) -LinkSourceFile(fbwindow.c,LinkDirectory) -LinkSourceFile(fbmmx.c,LinkDirectory) -#endif - -InstallDriverSDKLibraryModule(fb,$(DRIVERSDKMODULEDIR),.) -InstallDriverSDKNonExecFile(fb.h,$(DRIVERSDKINCLUDEDIR)) -InstallDriverSDKNonExecFile(fbrop.h,$(DRIVERSDKINCLUDEDIR)) diff --git a/nx-X11/programs/Xserver/fb/fbtrap.c.NX.original b/nx-X11/programs/Xserver/fb/fbtrap.c.NX.original deleted file mode 100644 index 1940bc209..000000000 --- a/nx-X11/programs/Xserver/fb/fbtrap.c.NX.original +++ /dev/null @@ -1,242 +0,0 @@ -/* - * $Id: fbtrap.c,v 1.5 2005/07/03 07:01:23 daniels Exp $ - * - * Copyright © 2004 Keith Packard - * - * 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 - -#include "fb.h" - -#ifdef RENDER - -#include "picturestr.h" -#include "mipict.h" -#include "renderedge.h" -#include "fbpict.h" - -void -fbAddTraps (PicturePtr pPicture, - INT16 x_off, - INT16 y_off, - int ntrap, - xTrap *traps) -{ - FbBits *buf; - int bpp; - int width; - int stride; - int height; - int pxoff, pyoff; - - xFixed x_off_fixed; - xFixed y_off_fixed; - RenderEdge l, r; - xFixed t, b; - - fbGetDrawable (pPicture->pDrawable, buf, stride, bpp, pxoff, pyoff); - - width = pPicture->pDrawable->width; - height = pPicture->pDrawable->height; - x_off += pxoff; - y_off += pyoff; - - x_off_fixed = IntToxFixed(y_off); - y_off_fixed = IntToxFixed(y_off); - - while (ntrap--) - { - t = traps->top.y + y_off_fixed; - if (t < 0) - t = 0; - t = RenderSampleCeilY (t, bpp); - - b = traps->bot.y + y_off_fixed; - if (xFixedToInt (b) >= height) - b = IntToxFixed (height) - 1; - b = RenderSampleFloorY (b, bpp); - - if (b >= t) - { - /* initialize edge walkers */ - RenderEdgeInit (&l, bpp, t, - traps->top.l + x_off_fixed, - traps->top.y + y_off_fixed, - traps->bot.l + x_off_fixed, - traps->bot.y + y_off_fixed); - - RenderEdgeInit (&r, bpp, t, - traps->top.r + x_off_fixed, - traps->top.y + y_off_fixed, - traps->bot.r + x_off_fixed, - traps->bot.y + y_off_fixed); - - fbRasterizeEdges (buf, bpp, width, stride, &l, &r, t, b); - } - traps++; - } -} - -void -fbRasterizeTrapezoid (PicturePtr pPicture, - xTrapezoid *trap, - int x_off, - int y_off) -{ - FbBits *buf; - int bpp; - int width; - int stride; - int height; - int pxoff, pyoff; - - xFixed x_off_fixed; - xFixed y_off_fixed; - RenderEdge l, r; - xFixed t, b; - - if (!xTrapezoidValid (trap)) - return; - - fbGetDrawable (pPicture->pDrawable, buf, stride, bpp, pxoff, pyoff); - - width = pPicture->pDrawable->width; - height = pPicture->pDrawable->height; - x_off += pxoff; - y_off += pyoff; - - x_off_fixed = IntToxFixed(x_off); - y_off_fixed = IntToxFixed(y_off); - t = trap->top + y_off_fixed; - if (t < 0) - t = 0; - t = RenderSampleCeilY (t, bpp); - - b = trap->bottom + y_off_fixed; - if (xFixedToInt (b) >= height) - b = IntToxFixed (height) - 1; - b = RenderSampleFloorY (b, bpp); - - if (b >= t) - { - /* initialize edge walkers */ - RenderLineFixedEdgeInit (&l, bpp, t, &trap->left, x_off, y_off); - RenderLineFixedEdgeInit (&r, bpp, t, &trap->right, x_off, y_off); - - fbRasterizeEdges (buf, bpp, width, stride, &l, &r, t, b); - } -} - -static int -_GreaterY (xPointFixed *a, xPointFixed *b) -{ - if (a->y == b->y) - return a->x > b->x; - return a->y > b->y; -} - -/* - * Note that the definition of this function is a bit odd because - * of the X coordinate space (y increasing downwards). - */ -static int -_Clockwise (xPointFixed *ref, xPointFixed *a, xPointFixed *b) -{ - xPointFixed ad, bd; - - ad.x = a->x - ref->x; - ad.y = a->y - ref->y; - bd.x = b->x - ref->x; - bd.y = b->y - ref->y; - - return ((xFixed_32_32) bd.y * ad.x - (xFixed_32_32) ad.y * bd.x) < 0; -} - -/* FIXME -- this could be made more efficient */ -void -fbAddTriangles (PicturePtr pPicture, - INT16 x_off, - INT16 y_off, - int ntri, - xTriangle *tris) -{ - xPointFixed *top, *left, *right, *tmp; - xTrapezoid trap; - - for (; ntri; ntri--, tris++) - { - top = &tris->p1; - left = &tris->p2; - right = &tris->p3; - if (_GreaterY (top, left)) { - tmp = left; left = top; top = tmp; - } - if (_GreaterY (top, right)) { - tmp = right; right = top; top = tmp; - } - if (_Clockwise (top, right, left)) { - tmp = right; right = left; left = tmp; - } - - /* - * Two cases: - * - * + + - * / \ / \ - * / \ / \ - * / + + \ - * / -- -- \ - * / -- -- \ - * / --- --- \ - * +-- --+ - */ - - trap.top = top->y; - trap.left.p1 = *top; - trap.left.p2 = *left; - trap.right.p1 = *top; - trap.right.p2 = *right; - if (right->y < left->y) - trap.bottom = right->y; - else - trap.bottom = left->y; - fbRasterizeTrapezoid (pPicture, &trap, x_off, y_off); - if (right->y < left->y) - { - trap.top = right->y; - trap.bottom = left->y; - trap.right.p1 = *right; - trap.right.p2 = *left; - } - else - { - trap.top = left->y; - trap.bottom = right->y; - trap.left.p1 = *left; - trap.left.p2 = *right; - } - fbRasterizeTrapezoid (pPicture, &trap, x_off, y_off); - } -} - -#endif /* RENDER */ diff --git a/nx-X11/programs/Xserver/fb/fbtrap.c.X.original b/nx-X11/programs/Xserver/fb/fbtrap.c.X.original deleted file mode 100644 index 39483d8cd..000000000 --- a/nx-X11/programs/Xserver/fb/fbtrap.c.X.original +++ /dev/null @@ -1,239 +0,0 @@ -/* - * $Id: fbtrap.c,v 1.5 2005/07/03 07:01:23 daniels Exp $ - * - * Copyright © 2004 Keith Packard - * - * 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 - -#include "fb.h" - -#ifdef RENDER - -#include "picturestr.h" -#include "mipict.h" -#include "renderedge.h" -#include "fbpict.h" - -void -fbAddTraps (PicturePtr pPicture, - INT16 x_off, - INT16 y_off, - int ntrap, - xTrap *traps) -{ - FbBits *buf; - int bpp; - int width; - int stride; - int height; - int pxoff, pyoff; - - xFixed x_off_fixed; - xFixed y_off_fixed; - RenderEdge l, r; - xFixed t, b; - - fbGetDrawable (pPicture->pDrawable, buf, stride, bpp, pxoff, pyoff); - - width = pPicture->pDrawable->width; - height = pPicture->pDrawable->height; - x_off += pxoff; - y_off += pyoff; - - x_off_fixed = IntToxFixed(y_off); - y_off_fixed = IntToxFixed(y_off); - - while (ntrap--) - { - t = traps->top.y + y_off_fixed; - if (t < 0) - t = 0; - t = RenderSampleCeilY (t, bpp); - - b = traps->bot.y + y_off_fixed; - if (xFixedToInt (b) >= height) - b = IntToxFixed (height) - 1; - b = RenderSampleFloorY (b, bpp); - - if (b >= t) - { - /* initialize edge walkers */ - RenderEdgeInit (&l, bpp, t, - traps->top.l + x_off_fixed, - traps->top.y + y_off_fixed, - traps->bot.l + x_off_fixed, - traps->bot.y + y_off_fixed); - - RenderEdgeInit (&r, bpp, t, - traps->top.r + x_off_fixed, - traps->top.y + y_off_fixed, - traps->bot.r + x_off_fixed, - traps->bot.y + y_off_fixed); - - fbRasterizeEdges (buf, bpp, width, stride, &l, &r, t, b); - } - traps++; - } -} - -void -fbRasterizeTrapezoid (PicturePtr pPicture, - xTrapezoid *trap, - int x_off, - int y_off) -{ - FbBits *buf; - int bpp; - int width; - int stride; - int height; - int pxoff, pyoff; - - xFixed x_off_fixed; - xFixed y_off_fixed; - RenderEdge l, r; - xFixed t, b; - - fbGetDrawable (pPicture->pDrawable, buf, stride, bpp, pxoff, pyoff); - - width = pPicture->pDrawable->width; - height = pPicture->pDrawable->height; - x_off += pxoff; - y_off += pyoff; - - x_off_fixed = IntToxFixed(x_off); - y_off_fixed = IntToxFixed(y_off); - t = trap->top + y_off_fixed; - if (t < 0) - t = 0; - t = RenderSampleCeilY (t, bpp); - - b = trap->bottom + y_off_fixed; - if (xFixedToInt (b) >= height) - b = IntToxFixed (height) - 1; - b = RenderSampleFloorY (b, bpp); - - if (b >= t) - { - /* initialize edge walkers */ - RenderLineFixedEdgeInit (&l, bpp, t, &trap->left, x_off, y_off); - RenderLineFixedEdgeInit (&r, bpp, t, &trap->right, x_off, y_off); - - fbRasterizeEdges (buf, bpp, width, stride, &l, &r, t, b); - } -} - -static int -_GreaterY (xPointFixed *a, xPointFixed *b) -{ - if (a->y == b->y) - return a->x > b->x; - return a->y > b->y; -} - -/* - * Note that the definition of this function is a bit odd because - * of the X coordinate space (y increasing downwards). - */ -static int -_Clockwise (xPointFixed *ref, xPointFixed *a, xPointFixed *b) -{ - xPointFixed ad, bd; - - ad.x = a->x - ref->x; - ad.y = a->y - ref->y; - bd.x = b->x - ref->x; - bd.y = b->y - ref->y; - - return ((xFixed_32_32) bd.y * ad.x - (xFixed_32_32) ad.y * bd.x) < 0; -} - -/* FIXME -- this could be made more efficient */ -void -fbAddTriangles (PicturePtr pPicture, - INT16 x_off, - INT16 y_off, - int ntri, - xTriangle *tris) -{ - xPointFixed *top, *left, *right, *tmp; - xTrapezoid trap; - - for (; ntri; ntri--, tris++) - { - top = &tris->p1; - left = &tris->p2; - right = &tris->p3; - if (_GreaterY (top, left)) { - tmp = left; left = top; top = tmp; - } - if (_GreaterY (top, right)) { - tmp = right; right = top; top = tmp; - } - if (_Clockwise (top, right, left)) { - tmp = right; right = left; left = tmp; - } - - /* - * Two cases: - * - * + + - * / \ / \ - * / \ / \ - * / + + \ - * / -- -- \ - * / -- -- \ - * / --- --- \ - * +-- --+ - */ - - trap.top = top->y; - trap.left.p1 = *top; - trap.left.p2 = *left; - trap.right.p1 = *top; - trap.right.p2 = *right; - if (right->y < left->y) - trap.bottom = right->y; - else - trap.bottom = left->y; - fbRasterizeTrapezoid (pPicture, &trap, x_off, y_off); - if (right->y < left->y) - { - trap.top = right->y; - trap.bottom = left->y; - trap.right.p1 = *right; - trap.right.p2 = *left; - } - else - { - trap.top = left->y; - trap.bottom = right->y; - trap.left.p1 = *left; - trap.left.p2 = *right; - } - fbRasterizeTrapezoid (pPicture, &trap, x_off, y_off); - } -} - -#endif /* RENDER */ |