This is strictly the application of the script 'x-indent-all.sh' from util/modular. Compared to the patch that Daniel posted in January, I've added a few indent flags: -bap -psl -T PrivatePtr -T pmWait -T _XFUNCPROTOBEGIN -T _XFUNCPROTOEND -T _X_EXPORT The typedefs were needed to make the output of sdksyms.sh match the previous output, otherwise, the code is formatted badly enough that sdksyms.sh generates incorrect output. The generated code was compared with the previous version and found to be essentially identical -- "assert" line numbers and BUILD_TIME were the only differences found. The comparison was done with this script: dir1=$1 dir2=$2 for dir in $dir1 $dir2; do (cd $dir && find . -name '*.o' | while read file; do dir=`dirname $file` base=`basename $file .o` dump=$dir/$base.dump objdump -d $file > $dump done) done find $dir1 -name '*.dump' | while read dump; do otherdump=`echo $dump | sed "s;$dir1;$dir2;"` diff -u $dump $otherdump done Signed-off-by: Keith Packard <keithp@keithp.com> Acked-by: Daniel Stone <daniel@fooishbar.org> Acked-by: Alan Coopersmith <alan.coopersmith@oracle.com>
122 lines
4.4 KiB
C
122 lines
4.4 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 "pixmapstr.h"
|
|
#include "xf86str.h"
|
|
#include "xaa.h"
|
|
#include "xaalocal.h"
|
|
|
|
/*
|
|
Much of this file based on code by
|
|
Harm Hanemaayer (H.Hanemaayer@inter.nl.net).
|
|
*/
|
|
|
|
void
|
|
XAAPolyRectangleThinSolid(DrawablePtr pDrawable,
|
|
GCPtr pGC, int nRectsInit, xRectangle *pRectsInit)
|
|
{
|
|
XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC);
|
|
int nClipRects; /* number of clip rectangles */
|
|
BoxPtr pClipRects; /* points to the list of clip rects */
|
|
int xOrigin; /* Drawables x origin */
|
|
int yOrigin; /* Drawables x origin */
|
|
xRectangle *pRect; /* list of rects */
|
|
int nRects; /* running count of number of rects */
|
|
int origX1, origY1; /* original rectangle's U/L corner */
|
|
int origX2, origY2; /* original rectangle's L/R corner */
|
|
int clippedX1; /* clipped rectangle's left x */
|
|
int clippedY1; /* clipped rectangle's top y */
|
|
int clippedX2; /* clipped rectangle's right x */
|
|
int clippedY2; /* clipped rectangle's bottom y */
|
|
int clipXMin; /* upper left corner of clip rect */
|
|
int clipYMin; /* upper left corner of clip rect */
|
|
int clipXMax; /* lower right corner of clip rect */
|
|
int clipYMax; /* lower right corner of clip rect */
|
|
int width, height; /* width and height of rect */
|
|
|
|
nClipRects = RegionNumRects(pGC->pCompositeClip);
|
|
pClipRects = RegionRects(pGC->pCompositeClip);
|
|
|
|
if (!nClipRects)
|
|
return;
|
|
|
|
xOrigin = pDrawable->x;
|
|
yOrigin = pDrawable->y;
|
|
|
|
(*infoRec->SetupForSolidLine) (infoRec->pScrn,
|
|
pGC->fgPixel, pGC->alu, pGC->planemask);
|
|
|
|
for (; nClipRects > 0; nClipRects--, pClipRects++) {
|
|
clipYMin = pClipRects->y1;
|
|
clipYMax = pClipRects->y2 - 1;
|
|
clipXMin = pClipRects->x1;
|
|
clipXMax = pClipRects->x2 - 1;
|
|
|
|
for (pRect = pRectsInit, nRects = nRectsInit;
|
|
nRects > 0; nRects--, pRect++) {
|
|
/* translate rectangle data over to the drawable */
|
|
origX1 = pRect->x + xOrigin;
|
|
origY1 = pRect->y + yOrigin;
|
|
origX2 = origX1 + pRect->width;
|
|
origY2 = origY1 + pRect->height;
|
|
|
|
/* reject entire rectangle if completely outside clip rect */
|
|
if ((origX1 > clipXMax) || (origX2 < clipXMin) ||
|
|
(origY1 > clipYMax) || (origY2 < clipYMin))
|
|
continue;
|
|
|
|
/* clip the rectangle */
|
|
clippedX1 = max(origX1, clipXMin);
|
|
clippedX2 = min(origX2, clipXMax);
|
|
clippedY1 = max(origY1, clipYMin);
|
|
clippedY2 = min(origY2, clipYMax);
|
|
|
|
width = clippedX2 - clippedX1 + 1;
|
|
|
|
if (origY1 >= clipYMin) {
|
|
(*infoRec->SubsequentSolidHorVertLine) (infoRec->pScrn,
|
|
clippedX1, clippedY1,
|
|
width, DEGREES_0);
|
|
|
|
/* don't overwrite corner */
|
|
clippedY1++;
|
|
}
|
|
|
|
if ((origY2 <= clipYMax) && (origY1 != origY2)) {
|
|
(*infoRec->SubsequentSolidHorVertLine) (infoRec->pScrn,
|
|
clippedX1, clippedY2,
|
|
width, DEGREES_0);
|
|
|
|
/* don't overwrite corner */
|
|
clippedY2--;
|
|
}
|
|
|
|
if (clippedY2 < clippedY1)
|
|
continue;
|
|
|
|
height = clippedY2 - clippedY1 + 1;
|
|
|
|
/* draw vertical edges using lines if not clipped out */
|
|
if (origX1 >= clipXMin)
|
|
(*infoRec->SubsequentSolidHorVertLine) (infoRec->pScrn,
|
|
clippedX1, clippedY1,
|
|
height, DEGREES_270);
|
|
|
|
if ((origX2 <= clipXMax) && (origX2 != origX1))
|
|
(*infoRec->SubsequentSolidHorVertLine) (infoRec->pScrn,
|
|
clippedX2, clippedY1,
|
|
height, DEGREES_270);
|
|
}
|
|
}
|
|
|
|
SET_SYNC_FLAG(infoRec);
|
|
}
|