aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/fb
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/programs/Xserver/fb')
-rw-r--r--nx-X11/programs/Xserver/fb/Imakefile.NX.original194
-rw-r--r--nx-X11/programs/Xserver/fb/Imakefile.X.original188
-rw-r--r--nx-X11/programs/Xserver/fb/fbtrap.c.NX.original242
-rw-r--r--nx-X11/programs/Xserver/fb/fbtrap.c.X.original239
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 */