Doing this in DIX makes the drivers all simpler and fixes bugs in a couple of wrappers which got CoordModePrevious wrong.
Signed-off-by: Keith Packard <[email protected]> --- dix/dispatch.c | 36 ++++++++++-- exa/exa_accel.c | 26 +++------ exa/exa_priv.h | 4 +- exa/exa_unaccel.c | 10 ++-- fb/fb.h | 15 ++--- fb/fbbits.h | 5 +- fb/fbline.c | 27 ++------- fb/fbpoint.c | 15 +---- fb/wfbrename.h | 1 - glamor/glamor_dash.c | 6 +- glamor/glamor_lines.c | 35 ++++-------- glamor/glamor_points.c | 20 ++----- glamor/glamor_priv.h | 6 +- hw/dmx/dmxgcops.c | 12 ++-- hw/dmx/dmxgcops.h | 6 +- hw/xfree86/common/xf86VGAarbiter.c | 12 ++-- hw/xfree86/common/xf86VGAarbiterPriv.h | 6 +- hw/xnest/GCOps.c | 12 ++-- hw/xnest/GCOps.h | 6 +- include/gcstruct.h | 3 - mi/mi.h | 7 --- mi/mipoly.c | 14 +---- mi/mipolypnt.c | 17 +----- mi/mipolyrect.c | 4 +- mi/mipolyseg.c | 2 +- mi/miwideline.c | 63 ++++----------------- mi/mizerarc.c | 4 +- mi/mizerline.c | 10 +--- miext/damage/damage.c | 92 +++++++++--------------------- miext/rootless/rootlessGC.c | 100 ++++++++++----------------------- 30 files changed, 182 insertions(+), 394 deletions(-) diff --git a/dix/dispatch.c b/dix/dispatch.c index 26a461b..277f821 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -1683,6 +1683,21 @@ SendGraphicsExpose(ClientPtr client, RegionPtr pRgn, XID drawable, } } +static void +FixCoordModePrevious(int npt, xPoint *ppt) +{ + int x, y; + + x = ppt->x; + y = ppt->y; + npt--; + while (npt--) { + ppt++; + x = (ppt->x += x); + y = (ppt->y += y); + } +} + int ProcCopyArea(ClientPtr client) { @@ -1785,9 +1800,12 @@ ProcPolyPoint(ClientPtr client) } VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess); npoint = bytes_to_int32((client->req_len << 2) - sizeof(xPolyPointReq)); - if (npoint) - (*pGC->ops->PolyPoint) (pDraw, pGC, stuff->coordMode, npoint, + if (npoint) { + if (stuff->coordMode == CoordModePrevious) + FixCoordModePrevious(npoint, (xPoint *) &stuff[1]); + (*pGC->ops->PolyPoint) (pDraw, pGC, npoint, (xPoint *) &stuff[1]); + } return Success; } @@ -1808,9 +1826,12 @@ ProcPolyLine(ClientPtr client) } VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess); npoint = bytes_to_int32((client->req_len << 2) - sizeof(xPolyLineReq)); - if (npoint > 1) - (*pGC->ops->Polylines) (pDraw, pGC, stuff->coordMode, npoint, + if (npoint > 1) { + if (stuff->coordMode == CoordModePrevious) + FixCoordModePrevious(npoint, (xPoint *) &stuff[1]); + (*pGC->ops->Polylines) (pDraw, pGC, npoint, (DDXPointPtr) &stuff[1]); + } return Success; } @@ -1898,10 +1919,13 @@ ProcFillPoly(ClientPtr client) VALIDATE_DRAWABLE_AND_GC(stuff->drawable, pDraw, DixWriteAccess); things = bytes_to_int32((client->req_len << 2) - sizeof(xFillPolyReq)); - if (things) + if (things > 2) { + if (stuff->coordMode == CoordModePrevious) + FixCoordModePrevious(things, (xPoint *) &stuff[1]); (*pGC->ops->FillPolygon) (pDraw, pGC, stuff->shape, - stuff->coordMode, things, + things, (DDXPointPtr) &stuff[1]); + } return Success; } diff --git a/exa/exa_accel.c b/exa/exa_accel.c index b26d5c8..ae23928 100644 --- a/exa/exa_accel.c +++ b/exa/exa_accel.c @@ -611,7 +611,7 @@ exaCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC, } static void -exaPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, +exaPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int npt, DDXPointPtr ppt) { ExaScreenPriv(pDrawable->pScreen); @@ -622,7 +622,7 @@ exaPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, * points. */ if (pExaScr->fallback_counter || pGC->fillStyle != FillSolid) { - ExaCheckPolyPoint(pDrawable, pGC, mode, npt, ppt); + ExaCheckPolyPoint(pDrawable, pGC, npt, ppt); return; } @@ -630,10 +630,6 @@ exaPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, for (i = 0; i < npt; i++) { prect[i].x = ppt[i].x; prect[i].y = ppt[i].y; - if (i > 0 && mode == CoordModePrevious) { - prect[i].x += prect[i - 1].x; - prect[i].y += prect[i - 1].y; - } prect[i].width = 1; prect[i].height = 1; } @@ -647,7 +643,7 @@ exaPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, * acceleration if so. */ static void -exaPolylines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, +exaPolylines(DrawablePtr pDrawable, GCPtr pGC, int npt, DDXPointPtr ppt) { ExaScreenPriv(pDrawable->pScreen); @@ -656,14 +652,14 @@ exaPolylines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, int i; if (pExaScr->fallback_counter) { - ExaCheckPolylines(pDrawable, pGC, mode, npt, ppt); + ExaCheckPolylines(pDrawable, pGC, npt, ppt); return; } /* Don't try to do wide lines or non-solid fill style. */ if (pGC->lineWidth != 0 || pGC->lineStyle != LineSolid || pGC->fillStyle != FillSolid) { - ExaCheckPolylines(pDrawable, pGC, mode, npt, ppt); + ExaCheckPolylines(pDrawable, pGC, npt, ppt); return; } @@ -672,18 +668,12 @@ exaPolylines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, y1 = ppt[0].y; /* If we have any non-horizontal/vertical, fall back. */ for (i = 0; i < npt - 1; i++) { - if (mode == CoordModePrevious) { - x2 = x1 + ppt[i + 1].x; - y2 = y1 + ppt[i + 1].y; - } - else { - x2 = ppt[i + 1].x; - y2 = ppt[i + 1].y; - } + x2 = ppt[i + 1].x; + y2 = ppt[i + 1].y; if (x1 != x2 && y1 != y2) { free(prect); - ExaCheckPolylines(pDrawable, pGC, mode, npt, ppt); + ExaCheckPolylines(pDrawable, pGC, npt, ppt); return; } diff --git a/exa/exa_priv.h b/exa/exa_priv.h index ca4db72..ba0830a 100644 --- a/exa/exa_priv.h +++ b/exa/exa_priv.h @@ -393,13 +393,13 @@ ExaCheckCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, void -ExaCheckPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, +ExaCheckPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int npt, DDXPointPtr pptInit); void ExaCheckPolylines(DrawablePtr pDrawable, GCPtr pGC, - int mode, int npt, DDXPointPtr ppt); + int npt, DDXPointPtr ppt); void diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c index 73eada9..efee8d0 100644 --- a/exa/exa_unaccel.c +++ b/exa/exa_unaccel.c @@ -242,29 +242,29 @@ ExaCheckCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, } void -ExaCheckPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, +ExaCheckPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int npt, DDXPointPtr pptInit) { EXA_PRE_FALLBACK_GC(pGC); EXA_FALLBACK(("to %p (%c)\n", pDrawable, exaDrawableLocation(pDrawable))); exaPrepareAccess(pDrawable, EXA_PREPARE_DEST); - pGC->ops->PolyPoint(pDrawable, pGC, mode, npt, pptInit); + pGC->ops->PolyPoint(pDrawable, pGC, npt, pptInit); exaFinishAccess(pDrawable, EXA_PREPARE_DEST); EXA_POST_FALLBACK_GC(pGC); } void ExaCheckPolylines(DrawablePtr pDrawable, GCPtr pGC, - int mode, int npt, DDXPointPtr ppt) + int npt, DDXPointPtr ppt) { EXA_PRE_FALLBACK_GC(pGC); EXA_FALLBACK(("to %p (%c), width %d, mode %d, count %d\n", pDrawable, exaDrawableLocation(pDrawable), - pGC->lineWidth, mode, npt)); + pGC->lineWidth, npt)); exaPrepareAccess(pDrawable, EXA_PREPARE_DEST); exaPrepareAccessGC(pGC); - pGC->ops->Polylines(pDrawable, pGC, mode, npt, ppt); + pGC->ops->Polylines(pDrawable, pGC, npt, ppt); exaFinishAccessGC(pGC); exaFinishAccess(pDrawable, EXA_PREPARE_DEST); EXA_POST_FALLBACK_GC(pGC); diff --git a/fb/fb.h b/fb/fb.h index c687aa7..c9b1a57 100644 --- a/fb/fb.h +++ b/fb/fb.h @@ -657,7 +657,7 @@ fbGlyph8(FbBits * dstLine, extern _X_EXPORT void fbPolyline8(DrawablePtr pDrawable, - GCPtr pGC, int mode, int npt, DDXPointPtr ptsOrig); + GCPtr pGC, int npt, DDXPointPtr ptsOrig); extern _X_EXPORT void fbPolySegment8(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pseg); @@ -705,7 +705,7 @@ fbGlyph16(FbBits * dstLine, extern _X_EXPORT void fbPolyline16(DrawablePtr pDrawable, - GCPtr pGC, int mode, int npt, DDXPointPtr ptsOrig); + GCPtr pGC, int npt, DDXPointPtr ptsOrig); extern _X_EXPORT void fbPolySegment16(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pseg); @@ -746,7 +746,7 @@ fbArc24(FbBits * dst, extern _X_EXPORT void fbPolyline24(DrawablePtr pDrawable, - GCPtr pGC, int mode, int npt, DDXPointPtr ptsOrig); + GCPtr pGC, int npt, DDXPointPtr ptsOrig); extern _X_EXPORT void fbPolySegment24(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pseg); @@ -793,7 +793,7 @@ fbGlyph32(FbBits * dstLine, extern _X_EXPORT void fbPolyline32(DrawablePtr pDrawable, - GCPtr pGC, int mode, int npt, DDXPointPtr ptsOrig); + GCPtr pGC, int npt, DDXPointPtr ptsOrig); extern _X_EXPORT void fbPolySegment32(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pseg); @@ -1094,10 +1094,7 @@ fbGetImage(DrawablePtr pDrawable, extern _X_EXPORT void fbPolyLine(DrawablePtr pDrawable, - GCPtr pGC, int mode, int npt, DDXPointPtr ppt); - -extern _X_EXPORT void - fbFixCoordModePrevious(int npt, DDXPointPtr ppt); + GCPtr pGC, int npt, DDXPointPtr ppt); extern _X_EXPORT void fbPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pseg); @@ -1141,7 +1138,7 @@ extern _X_EXPORT RegionPtr extern _X_EXPORT void fbPolyPoint(DrawablePtr pDrawable, - GCPtr pGC, int mode, int npt, xPoint * pptInit); + GCPtr pGC, int npt, xPoint * pptInit); /* * fbpush.c diff --git a/fb/fbbits.h b/fb/fbbits.h index be32d8c..7d7eb89 100644 --- a/fb/fbbits.h +++ b/fb/fbbits.h @@ -594,7 +594,7 @@ GLYPH(FbBits * dstBits, #ifdef POLYLINE void POLYLINE(DrawablePtr pDrawable, - GCPtr pGC, int mode, int npt, DDXPointPtr ptsOrig) + GCPtr pGC, int npt, DDXPointPtr ptsOrig) { INT32 *pts = (INT32 *) ptsOrig; int xoff = pDrawable->x; @@ -620,9 +620,6 @@ POLYLINE(DrawablePtr pDrawable, int stepmajor, stepminor; int octant; - if (mode == CoordModePrevious) - fbFixCoordModePrevious(npt, ptsOrig); - fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff); bitsStride = dstStride * (sizeof(FbBits) / sizeof(UNIT)); bitsBase = diff --git a/fb/fbline.c b/fb/fbline.c index 3e582e6..07cd18e 100644 --- a/fb/fbline.c +++ b/fb/fbline.c @@ -27,7 +27,7 @@ #include "fb.h" static void -fbZeroLine(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, DDXPointPtr ppt) +fbZeroLine(DrawablePtr pDrawable, GCPtr pGC, int npt, DDXPointPtr ppt) { int x1, y1, x2, y2; int x, y; @@ -42,10 +42,6 @@ fbZeroLine(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, DDXPointPtr ppt) ++ppt; x2 = ppt->x; y2 = ppt->y; - if (mode == CoordModePrevious) { - x2 += x1; - y2 += y1; - } fbSegment(pDrawable, pGC, x1 + x, y1 + y, x2 + x, y2 + y, npt == 1 && pGC->capStyle != CapNotLast, &dashOffset); @@ -73,24 +69,9 @@ fbZeroSegment(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pSegs) } void -fbFixCoordModePrevious(int npt, DDXPointPtr ppt) -{ - int x, y; - - x = ppt->x; - y = ppt->y; - npt--; - while (npt--) { - ppt++; - x = (ppt->x += x); - y = (ppt->y += y); - } -} - -void -fbPolyLine(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, DDXPointPtr ppt) +fbPolyLine(DrawablePtr pDrawable, GCPtr pGC, int npt, DDXPointPtr ppt) { - void (*line) (DrawablePtr, GCPtr, int mode, int npt, DDXPointPtr ppt); + void (*line) (DrawablePtr, GCPtr, int npt, DDXPointPtr ppt); if (pGC->lineWidth == 0) { line = fbZeroLine; @@ -119,7 +100,7 @@ fbPolyLine(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, DDXPointPtr ppt) else line = miWideLine; } - (*line) (pDrawable, pGC, mode, npt, ppt); + (*line) (pDrawable, pGC, npt, ppt); } void diff --git a/fb/fbpoint.c b/fb/fbpoint.c index be7c801..62c2b78 100644 --- a/fb/fbpoint.c +++ b/fb/fbpoint.c @@ -94,7 +94,7 @@ fbDots(FbBits * dstOrig, void fbPolyPoint(DrawablePtr pDrawable, - GCPtr pGC, int mode, int nptInit, xPoint * pptInit) + GCPtr pGC, int nptInit, xPoint * pptInit) { FbGCPrivPtr pPriv = fbGetGCPrivate(pGC); RegionPtr pClip = fbGetCompositeClip(pGC); @@ -104,22 +104,9 @@ fbPolyPoint(DrawablePtr pDrawable, int dstXoff, dstYoff; FbDots dots; FbBits and, xor; - xPoint *ppt; - int npt; BoxPtr pBox; int nBox; - /* make pointlist origin relative */ - ppt = pptInit; - npt = nptInit; - if (mode == CoordModePrevious) { - npt--; - while (npt--) { - ppt++; - ppt->x += (ppt - 1)->x; - ppt->y += (ppt - 1)->y; - } - } fbGetDrawable(pDrawable, dst, dstStride, dstBpp, dstXoff, dstYoff); and = pPriv->and; xor = pPriv->xor; diff --git a/fb/wfbrename.h b/fb/wfbrename.h index baa80f8..dc53034 100644 --- a/fb/wfbrename.h +++ b/fb/wfbrename.h @@ -62,7 +62,6 @@ #define fbFill wfbFill #define fbFillRegionSolid wfbFillRegionSolid #define fbFillSpans wfbFillSpans -#define fbFixCoordModePrevious wfbFixCoordModePrevious #define fbGCFuncs wfbGCFuncs #define fbGCOps wfbGCOps #define fbGeneration wfbGeneration diff --git a/glamor/glamor_dash.c b/glamor/glamor_dash.c index 3c19dba..fe39b90 100644 --- a/glamor/glamor_dash.c +++ b/glamor/glamor_dash.c @@ -238,7 +238,7 @@ glamor_line_length(short x1, short y1, short x2, short y2) Bool glamor_poly_lines_dash_gl(DrawablePtr drawable, GCPtr gc, - int mode, int n, DDXPointPtr points) + int n, DDXPointPtr points) { ScreenPtr screen = drawable->pScreen; glamor_program *prog; @@ -275,10 +275,6 @@ glamor_poly_lines_dash_gl(DrawablePtr drawable, GCPtr gc, int this_x = points[i].x; int this_y = points[i].y; if (i) { - if (mode == CoordModePrevious) { - this_x += prev_x; - this_y += prev_y; - } dash_pos += glamor_line_length(prev_x, prev_y, this_x, this_y); } diff --git a/glamor/glamor_lines.c b/glamor/glamor_lines.c index a2c9b1f..dc98841 100644 --- a/glamor/glamor_lines.c +++ b/glamor/glamor_lines.c @@ -34,7 +34,7 @@ static const glamor_facet glamor_facet_poly_lines = { static Bool glamor_poly_lines_solid_gl(DrawablePtr drawable, GCPtr gc, - int mode, int n, DDXPointPtr points) + int n, DDXPointPtr points) { ScreenPtr screen = drawable->pScreen; glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); @@ -77,18 +77,7 @@ glamor_poly_lines_solid_gl(DrawablePtr drawable, GCPtr gc, glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_SHORT, GL_FALSE, sizeof (DDXPointRec), vbo_offset); - if (mode == CoordModePrevious) { - int i; - DDXPointRec here = { 0, 0 }; - - for (i = 0; i < n; i++) { - here.x += points[i].x; - here.y += points[i].y; - v[i] = here; - } - } else { - memcpy(v, points, n * sizeof (DDXPointRec)); - } + memcpy(v, points, n * sizeof (DDXPointRec)); if (add_last) { v[n].x = v[n-1].x + 1; @@ -126,21 +115,21 @@ bail: static Bool glamor_poly_lines_gl(DrawablePtr drawable, GCPtr gc, - int mode, int n, DDXPointPtr points) + int n, DDXPointPtr points) { if (gc->lineWidth != 0) return FALSE; switch (gc->lineStyle) { case LineSolid: - return glamor_poly_lines_solid_gl(drawable, gc, mode, n, points); + return glamor_poly_lines_solid_gl(drawable, gc, n, points); case LineOnOffDash: - return glamor_poly_lines_dash_gl(drawable, gc, mode, n, points); + return glamor_poly_lines_dash_gl(drawable, gc, n, points); case LineDoubleDash: if (gc->fillStyle == FillTiled) - return glamor_poly_lines_solid_gl(drawable, gc, mode, n, points); + return glamor_poly_lines_solid_gl(drawable, gc, n, points); else - return glamor_poly_lines_dash_gl(drawable, gc, mode, n, points); + return glamor_poly_lines_dash_gl(drawable, gc, n, points); default: return FALSE; } @@ -148,19 +137,19 @@ glamor_poly_lines_gl(DrawablePtr drawable, GCPtr gc, static void glamor_poly_lines_bail(DrawablePtr drawable, GCPtr gc, - int mode, int n, DDXPointPtr points) + int n, DDXPointPtr points) { glamor_fallback("to %p (%c)\n", drawable, glamor_get_drawable_location(drawable)); - miPolylines(drawable, gc, mode, n, points); + miPolylines(drawable, gc, n, points); } void glamor_poly_lines(DrawablePtr drawable, GCPtr gc, - int mode, int n, DDXPointPtr points) + int n, DDXPointPtr points) { - if (glamor_poly_lines_gl(drawable, gc, mode, n, points)) + if (glamor_poly_lines_gl(drawable, gc, n, points)) return; - glamor_poly_lines_bail(drawable, gc, mode, n, points); + glamor_poly_lines_bail(drawable, gc, n, points); } diff --git a/glamor/glamor_points.c b/glamor/glamor_points.c index facfe82..5027ade 100644 --- a/glamor/glamor_points.c +++ b/glamor/glamor_points.c @@ -36,7 +36,7 @@ static const glamor_facet glamor_facet_point = { }; static Bool -glamor_poly_point_gl(DrawablePtr drawable, GCPtr gc, int mode, int npt, DDXPointPtr ppt) +glamor_poly_point_gl(DrawablePtr drawable, GCPtr gc, int npt, DDXPointPtr ppt) { ScreenPtr screen = drawable->pScreen; glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); @@ -71,17 +71,7 @@ glamor_poly_point_gl(DrawablePtr drawable, GCPtr gc, int mode, int npt, DDXPoint vbo_ppt = glamor_get_vbo_space(screen, npt * (2 * sizeof (INT16)), &vbo_offset); glEnableVertexAttribArray(GLAMOR_VERTEX_POS); glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_SHORT, GL_FALSE, 0, vbo_offset); - if (mode == CoordModePrevious) { - int n = npt; - INT16 x = 0, y = 0; - while (n--) { - vbo_ppt[0] = (x += ppt->x); - vbo_ppt[1] = (y += ppt->y); - vbo_ppt += 2; - ppt++; - } - } else - memcpy(vbo_ppt, ppt, npt * (2 * sizeof (INT16))); + memcpy(vbo_ppt, ppt, npt * (2 * sizeof (INT16))); glamor_put_vbo_space(screen); glEnable(GL_SCISSOR_TEST); @@ -113,10 +103,10 @@ bail: } void -glamor_poly_point(DrawablePtr drawable, GCPtr gc, int mode, int npt, +glamor_poly_point(DrawablePtr drawable, GCPtr gc, int npt, DDXPointPtr ppt) { - if (glamor_poly_point_gl(drawable, gc, mode, npt, ppt)) + if (glamor_poly_point_gl(drawable, gc, npt, ppt)) return; - miPolyPoint(drawable, gc, mode, npt, ppt); + miPolyPoint(drawable, gc, npt, ppt); } diff --git a/glamor/glamor_priv.h b/glamor/glamor_priv.h index 2e491a6..5af7336 100644 --- a/glamor/glamor_priv.h +++ b/glamor/glamor_priv.h @@ -767,7 +767,7 @@ glamor_get_image(DrawablePtr pDrawable, int x, int y, int w, int h, /* glamor_dash.c */ Bool glamor_poly_lines_dash_gl(DrawablePtr drawable, GCPtr gc, - int mode, int n, DDXPointPtr points); + int n, DDXPointPtr points); Bool glamor_poly_segment_dash_gl(DrawablePtr drawable, GCPtr gc, @@ -776,7 +776,7 @@ glamor_poly_segment_dash_gl(DrawablePtr drawable, GCPtr gc, /* glamor_lines.c */ void glamor_poly_lines(DrawablePtr drawable, GCPtr gc, - int mode, int n, DDXPointPtr points); + int n, DDXPointPtr points); /* glamor_segs.c */ void @@ -818,7 +818,7 @@ void glamor_poly_glyph_blt(DrawablePtr pDrawable, GCPtr pGC, void glamor_push_pixels(GCPtr pGC, PixmapPtr pBitmap, DrawablePtr pDrawable, int w, int h, int x, int y); -void glamor_poly_point(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, +void glamor_poly_point(DrawablePtr pDrawable, GCPtr pGC, int npt, DDXPointPtr ppt); void glamor_composite_rectangles(CARD8 op, diff --git a/hw/dmx/dmxgcops.c b/hw/dmx/dmxgcops.c index 0ebd69a..f699088 100644 --- a/hw/dmx/dmxgcops.c +++ b/hw/dmx/dmxgcops.c @@ -225,7 +225,7 @@ dmxCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, * partially visible. */ void dmxPolyPoint(DrawablePtr pDrawable, GCPtr pGC, - int mode, int npt, DDXPointPtr pptInit) + int npt, DDXPointPtr pptInit) { DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum]; dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC); @@ -237,7 +237,7 @@ dmxPolyPoint(DrawablePtr pDrawable, GCPtr pGC, DMX_GCOPS_SET_DRAWABLE(pDrawable, draw); XDrawPoints(dmxScreen->beDisplay, draw, pGCPriv->gc, - (XPoint *) pptInit, npt, mode); + (XPoint *) pptInit, npt, CoordModeOrigin); dmxSync(dmxScreen, FALSE); } @@ -247,7 +247,7 @@ dmxPolyPoint(DrawablePtr pDrawable, GCPtr pGC, * least partially visible. */ void dmxPolylines(DrawablePtr pDrawable, GCPtr pGC, - int mode, int npt, DDXPointPtr pptInit) + int npt, DDXPointPtr pptInit) { DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum]; dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC); @@ -259,7 +259,7 @@ dmxPolylines(DrawablePtr pDrawable, GCPtr pGC, DMX_GCOPS_SET_DRAWABLE(pDrawable, draw); XDrawLines(dmxScreen->beDisplay, draw, pGCPriv->gc, - (XPoint *) pptInit, npt, mode); + (XPoint *) pptInit, npt, CoordModeOrigin); dmxSync(dmxScreen, FALSE); } @@ -333,7 +333,7 @@ dmxPolyArc(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc * parcs) * partially visible. */ void dmxFillPolygon(DrawablePtr pDrawable, GCPtr pGC, - int shape, int mode, int count, DDXPointPtr pPts) + int shape, int count, DDXPointPtr pPts) { DMXScreenInfo *dmxScreen = &dmxScreens[pDrawable->pScreen->myNum]; dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC); @@ -345,7 +345,7 @@ dmxFillPolygon(DrawablePtr pDrawable, GCPtr pGC, DMX_GCOPS_SET_DRAWABLE(pDrawable, draw); XFillPolygon(dmxScreen->beDisplay, draw, pGCPriv->gc, - (XPoint *) pPts, count, shape, mode); + (XPoint *) pPts, count, shape, CoordModeOrigin); dmxSync(dmxScreen, FALSE); } diff --git a/hw/dmx/dmxgcops.h b/hw/dmx/dmxgcops.h index 529b6ff..bebe1c9 100644 --- a/hw/dmx/dmxgcops.h +++ b/hw/dmx/dmxgcops.h @@ -53,9 +53,9 @@ extern RegionPtr dmxCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, int srcx, int srcy, int width, int height, int dstx, int dsty, unsigned long bitPlane); extern void dmxPolyPoint(DrawablePtr pDrawable, GCPtr pGC, - int mode, int npt, DDXPointPtr pptInit); + int npt, DDXPointPtr pptInit); extern void dmxPolylines(DrawablePtr pDrawable, GCPtr pGC, - int mode, int npt, DDXPointPtr pptInit); + int npt, DDXPointPtr pptInit); extern void dmxPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nseg, xSegment * pSegs); extern void dmxPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, @@ -63,7 +63,7 @@ extern void dmxPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, extern void dmxPolyArc(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc * parcs); extern void dmxFillPolygon(DrawablePtr pDrawable, GCPtr pGC, - int shape, int mode, int count, DDXPointPtr pPts); + int shape, int count, DDXPointPtr pPts); extern void dmxPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nrectFill, xRectangle *prectInit); extern void dmxPolyFillArc(DrawablePtr pDrawable, GCPtr pGC, diff --git a/hw/xfree86/common/xf86VGAarbiter.c b/hw/xfree86/common/xf86VGAarbiter.c index 40f241a..7b88d08 100644 --- a/hw/xfree86/common/xf86VGAarbiter.c +++ b/hw/xfree86/common/xf86VGAarbiter.c @@ -697,26 +697,26 @@ VGAarbiterCopyPlane(DrawablePtr pSrc, static void VGAarbiterPolyPoint(DrawablePtr pDraw, - GCPtr pGC, int mode, int npt, xPoint * pptInit) + GCPtr pGC, int npt, xPoint * pptInit) { ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); VGAGet(pScreen); - (*pGC->ops->PolyPoint) (pDraw, pGC, mode, npt, pptInit); + (*pGC->ops->PolyPoint) (pDraw, pGC, npt, pptInit); VGAPut(); GC_WRAP(pGC); } static void VGAarbiterPolylines(DrawablePtr pDraw, - GCPtr pGC, int mode, int npt, DDXPointPtr pptInit) + GCPtr pGC, int npt, DDXPointPtr pptInit) { ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); VGAGet(pScreen); - (*pGC->ops->Polylines) (pDraw, pGC, mode, npt, pptInit); + (*pGC->ops->Polylines) (pDraw, pGC, npt, pptInit); VGAPut(); GC_WRAP(pGC); } @@ -761,13 +761,13 @@ VGAarbiterPolyArc(DrawablePtr pDraw, GCPtr pGC, int narcs, xArc * parcs) static void VGAarbiterFillPolygon(DrawablePtr pDraw, GCPtr pGC, - int shape, int mode, int count, DDXPointPtr ptsIn) + int shape, int count, DDXPointPtr ptsIn) { ScreenPtr pScreen = pGC->pScreen; GC_UNWRAP(pGC); VGAGet(pScreen); - (*pGC->ops->FillPolygon) (pDraw, pGC, shape, mode, count, ptsIn); + (*pGC->ops->FillPolygon) (pDraw, pGC, shape, count, ptsIn); VGAPut(); GC_WRAP(pGC); } diff --git a/hw/xfree86/common/xf86VGAarbiterPriv.h b/hw/xfree86/common/xf86VGAarbiterPriv.h index 09be10a..2b43b68 100644 --- a/hw/xfree86/common/xf86VGAarbiterPriv.h +++ b/hw/xfree86/common/xf86VGAarbiterPriv.h @@ -212,9 +212,9 @@ static RegionPtr VGAarbiterCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, int srcx, int srcy, int width, int height, int dstx, int dsty, unsigned long bitPlane); -static void VGAarbiterPolyPoint(DrawablePtr pDraw, GCPtr pGC, int mode, int npt, +static void VGAarbiterPolyPoint(DrawablePtr pDraw, GCPtr pGC, int npt, xPoint * pptInit); -static void VGAarbiterPolylines(DrawablePtr pDraw, GCPtr pGC, int mode, int npt, +static void VGAarbiterPolylines(DrawablePtr pDraw, GCPtr pGC, int npt, DDXPointPtr pptInit); static void VGAarbiterPolySegment(DrawablePtr pDraw, GCPtr pGC, int nseg, xSegment * pSeg); @@ -223,7 +223,7 @@ static void VGAarbiterPolyRectangle(DrawablePtr pDraw, GCPtr pGC, static void VGAarbiterPolyArc(DrawablePtr pDraw, GCPtr pGC, int narcs, xArc * parcs); static void VGAarbiterFillPolygon(DrawablePtr pDraw, GCPtr pGC, int shape, - int mode, int count, DDXPointPtr ptsIn); + int count, DDXPointPtr ptsIn); static void VGAarbiterPolyFillRect(DrawablePtr pDraw, GCPtr pGC, int nrectFill, xRectangle *prectInit); static void VGAarbiterPolyFillArc(DrawablePtr pDraw, GCPtr pGC, int narcs, diff --git a/hw/xnest/GCOps.c b/hw/xnest/GCOps.c index e1cf9d6..4bdb813 100644 --- a/hw/xnest/GCOps.c +++ b/hw/xnest/GCOps.c @@ -200,19 +200,19 @@ xnestCopyPlane(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, } void -xnestPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int nPoints, +xnestPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int nPoints, DDXPointPtr pPoints) { XDrawPoints(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - (XPoint *) pPoints, nPoints, mode); + (XPoint *) pPoints, nPoints, CoordModeOrigin); } void -xnestPolylines(DrawablePtr pDrawable, GCPtr pGC, int mode, int nPoints, +xnestPolylines(DrawablePtr pDrawable, GCPtr pGC, int nPoints, DDXPointPtr pPoints) { XDrawLines(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - (XPoint *) pPoints, nPoints, mode); + (XPoint *) pPoints, nPoints, CoordModeOrigin); } void @@ -239,11 +239,11 @@ xnestPolyArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs, xArc * pArcs) } void -xnestFillPolygon(DrawablePtr pDrawable, GCPtr pGC, int shape, int mode, +xnestFillPolygon(DrawablePtr pDrawable, GCPtr pGC, int shape, int nPoints, DDXPointPtr pPoints) { XFillPolygon(xnestDisplay, xnestDrawable(pDrawable), xnestGC(pGC), - (XPoint *) pPoints, nPoints, shape, mode); + (XPoint *) pPoints, nPoints, shape, CoordModeOrigin); } void diff --git a/hw/xnest/GCOps.h b/hw/xnest/GCOps.h index fd1f6bf..40a3d6f 100644 --- a/hw/xnest/GCOps.h +++ b/hw/xnest/GCOps.h @@ -33,16 +33,16 @@ RegionPtr xnestCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, RegionPtr xnestCopyPlane(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC, int srcx, int srcy, int width, int height, int dstx, int dsty, unsigned long plane); -void xnestPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int nPoints, +void xnestPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int nPoints, DDXPointPtr pPoints); -void xnestPolylines(DrawablePtr pDrawable, GCPtr pGC, int mode, int nPoints, +void xnestPolylines(DrawablePtr pDrawable, GCPtr pGC, int nPoints, DDXPointPtr pPoints); void xnestPolySegment(DrawablePtr pDrawable, GCPtr pGC, int nSegments, xSegment * pSegments); void xnestPolyRectangle(DrawablePtr pDrawable, GCPtr pGC, int nRectangles, xRectangle *pRectangles); void xnestPolyArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs, xArc * pArcs); -void xnestFillPolygon(DrawablePtr pDrawable, GCPtr pGC, int shape, int mode, +void xnestFillPolygon(DrawablePtr pDrawable, GCPtr pGC, int shape, int nPoints, DDXPointPtr pPoints); void xnestPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nRectangles, xRectangle *pRectangles); diff --git a/include/gcstruct.h b/include/gcstruct.h index e28950f..1a590aa 100644 --- a/include/gcstruct.h +++ b/include/gcstruct.h @@ -140,13 +140,11 @@ typedef struct _GCOps { unsigned long /*bitPlane */ ); void (*PolyPoint) (DrawablePtr /*pDrawable */ , GCPtr /*pGC */ , - int /*mode */ , int /*npt */ , DDXPointPtr /*pptInit */ ); void (*Polylines) (DrawablePtr /*pDrawable */ , GCPtr /*pGC */ , - int /*mode */ , int /*npt */ , DDXPointPtr /*pptInit */ ); @@ -168,7 +166,6 @@ typedef struct _GCOps { void (*FillPolygon) (DrawablePtr /*pDrawable */ , GCPtr /*pGC */ , int /*shape */ , - int /*mode */ , int /*count */ , DDXPointPtr /*pPts */ ); diff --git a/mi/mi.h b/mi/mi.h index db62c91..da6570d 100644 --- a/mi/mi.h +++ b/mi/mi.h @@ -283,7 +283,6 @@ extern _X_EXPORT void miImageGlyphBlt(DrawablePtr pDrawable, extern _X_EXPORT void miFillPolygon(DrawablePtr /*dst */ , GCPtr /*pgc */ , int /*shape */ , - int /*mode */ , int /*count */ , DDXPointPtr /*pPts */ ); @@ -292,7 +291,6 @@ extern _X_EXPORT void miFillPolygon(DrawablePtr /*dst */ , extern _X_EXPORT void miPolyPoint(DrawablePtr /*pDrawable */ , GCPtr /*pGC */ , - int /*mode */ , int /*npt */ , xPoint * /*pptInit */ ); @@ -408,21 +406,18 @@ extern _X_EXPORT int miValidateTree(WindowPtr /*pParent */ , extern _X_EXPORT void miWideLine(DrawablePtr /*pDrawable */ , GCPtr /*pGC */ , - int /*mode */ , int /*npt */ , DDXPointPtr /*pPts */ ); extern _X_EXPORT void miWideDash(DrawablePtr /*pDrawable */ , GCPtr /*pGC */ , - int /*mode */ , int /*npt */ , DDXPointPtr /*pPts */ ); extern _X_EXPORT void miPolylines(DrawablePtr pDrawable, GCPtr pGC, - int mode, int npt, DDXPointPtr pPts); @@ -494,14 +489,12 @@ extern _X_EXPORT void miZeroPolyArc(DrawablePtr /*pDraw */ , extern _X_EXPORT void miZeroLine(DrawablePtr /*dst */ , GCPtr /*pgc */ , - int /*mode */ , int /*nptInit */ , DDXPointRec * /*pptInit */ ); extern _X_EXPORT void miZeroDashLine(DrawablePtr /*dst */ , GCPtr /*pgc */ , - int /*mode */ , int /*nptInit */ , DDXPointRec * /*pptInit */ ); diff --git a/mi/mipoly.c b/mi/mipoly.c index 12fdf01..46b6967 100644 --- a/mi/mipoly.c +++ b/mi/mipoly.c @@ -674,23 +674,11 @@ miFillGeneralPoly(DrawablePtr dst, GCPtr pgc, int count, DDXPointPtr ptsIn) */ void miFillPolygon(DrawablePtr dst, GCPtr pgc, - int shape, int mode, int count, DDXPointPtr pPts) + int shape, int count, DDXPointPtr pPts) { - int i; - DDXPointPtr ppt; - if (count == 0) return; - ppt = pPts; - if (mode == CoordModePrevious) { - ppt++; - for (i = 1; i < count; i++) { - ppt->x += (ppt - 1)->x; - ppt->y += (ppt - 1)->y; - ppt++; - } - } if (shape == Convex) miFillConvexPoly(dst, pgc, count, pPts); else diff --git a/mi/mipolypnt.c b/mi/mipolypnt.c index 0b3adfb..d857869 100644 --- a/mi/mipolypnt.c +++ b/mi/mipolypnt.c @@ -55,31 +55,16 @@ SOFTWARE. #include "mi.h" void -miPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, /* Origin or Previous */ +miPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int npt, xPoint * pptInit) { - - int nptTmp; ChangeGCVal fsOld, fsNew; int *pwidthInit, *pwidth; int i; - xPoint *ppt; if (!(pwidthInit = xallocarray(npt, sizeof(int)))) return; - /* make pointlist origin relative */ - if (mode == CoordModePrevious) { - ppt = pptInit; - nptTmp = npt; - nptTmp--; - while (nptTmp--) { - ppt++; - ppt->x += (ppt - 1)->x; - ppt->y += (ppt - 1)->y; - } - } - fsOld.val = pGC->fillStyle; fsNew.val = FillSolid; if (pGC->fillStyle != FillSolid) { diff --git a/mi/mipolyrect.c b/mi/mipolyrect.c index 7ebf9db..db4c6a8 100644 --- a/mi/mipolyrect.c +++ b/mi/mipolyrect.c @@ -103,7 +103,7 @@ miPolyRectangle(DrawablePtr pDraw, GCPtr pGC, int nrects, xRectangle *pRects) rect[0].y = y; rect[1].x = x; rect[1].y = y; - (*pGC->ops->Polylines) (pDraw, pGC, CoordModeOrigin, 2, rect); + (*pGC->ops->Polylines) (pDraw, pGC, 2, rect); } else if (height < offset2 || width < offset1) { if (height == 0) { @@ -168,7 +168,7 @@ miPolyRectangle(DrawablePtr pDraw, GCPtr pGC, int nrects, xRectangle *pRects) rect[4].x = rect[0].x; rect[4].y = rect[0].y; - (*pGC->ops->Polylines) (pDraw, pGC, CoordModeOrigin, 5, rect); + (*pGC->ops->Polylines) (pDraw, pGC, 5, rect); pR++; } } diff --git a/mi/mipolyseg.c b/mi/mipolyseg.c index 7909b39..dc69135 100644 --- a/mi/mipolyseg.c +++ b/mi/mipolyseg.c @@ -70,7 +70,7 @@ miPolySegment(DrawablePtr pDraw, GCPtr pGC, int nseg, xSegment * pSegs) int i; for (i = 0; i < nseg; i++) { - (*pGC->ops->Polylines) (pDraw, pGC, CoordModeOrigin, 2, + (*pGC->ops->Polylines) (pDraw, pGC, 2, (DDXPointPtr) pSegs); pSegs++; } diff --git a/mi/miwideline.c b/mi/miwideline.c index 9c49eb8..7d42dbb 100644 --- a/mi/miwideline.c +++ b/mi/miwideline.c @@ -945,7 +945,7 @@ miLineOnePoint(DrawablePtr pDrawable, if (pGC->fillStyle == FillSolid) { pt.x = x; pt.y = y; - (*pGC->ops->PolyPoint) (pDrawable, pGC, CoordModeOrigin, 1, &pt); + (*pGC->ops->PolyPoint) (pDrawable, pGC, 1, &pt); } else { wid = 1; @@ -1872,7 +1872,7 @@ miCleanupSpanData(DrawablePtr pDrawable, GCPtr pGC, SpanDataPtr spanData) void miWideLine(DrawablePtr pDrawable, GCPtr pGC, - int mode, int npt, DDXPointPtr pPts) + int npt, DDXPointPtr pPts) { int x1, y1, x2, y2; SpanDataRec spanDataRec; @@ -1892,23 +1892,7 @@ miWideLine(DrawablePtr pDrawable, GCPtr pGC, first = TRUE; selfJoin = FALSE; if (npt > 1) { - if (mode == CoordModePrevious) { - int nptTmp; - DDXPointPtr pPtsTmp; - - x1 = x2; - y1 = y2; - nptTmp = npt; - pPtsTmp = pPts + 1; - while (--nptTmp) { - x1 += pPtsTmp->x; - y1 += pPtsTmp->y; - ++pPtsTmp; - } - if (x2 == x1 && y2 == y1) - selfJoin = TRUE; - } - else if (x2 == pPts[npt - 1].x && y2 == pPts[npt - 1].y) { + if (x2 == pPts[npt - 1].x && y2 == pPts[npt - 1].y) { selfJoin = TRUE; } } @@ -1920,10 +1904,6 @@ miWideLine(DrawablePtr pDrawable, GCPtr pGC, ++pPts; x2 = pPts->x; y2 = pPts->y; - if (mode == CoordModePrevious) { - x2 += x1; - y2 += y1; - } if (x1 != x2 || y1 != y2) { somethingDrawn = TRUE; if (npt == 1 && pGC->capStyle == CapProjecting && !selfJoin) @@ -2312,7 +2292,7 @@ miWideDashSegment(DrawablePtr pDrawable, void miWideDash(DrawablePtr pDrawable, GCPtr pGC, - int mode, int npt, DDXPointPtr pPts) + int npt, DDXPointPtr pPts) { int x1, y1, x2, y2; unsigned long pixel; @@ -2332,13 +2312,13 @@ miWideDash(DrawablePtr pDrawable, GCPtr pGC, #if 0 /* XXX backward compatibility */ if (pGC->lineWidth == 0) { - miZeroDashLine(pDrawable, pGC, mode, npt, pPts); + miZeroDashLine(pDrawable, pGC, npt, pPts); return; } #endif if (pGC->lineStyle == LineDoubleDash && (pGC->fillStyle == FillOpaqueStippled || pGC->fillStyle == FillTiled)) { - miWideLine(pDrawable, pGC, mode, npt, pPts); + miWideLine(pDrawable, pGC, npt, pPts); return; } if (npt == 0) @@ -2348,23 +2328,7 @@ miWideDash(DrawablePtr pDrawable, GCPtr pGC, y2 = pPts->y; first = TRUE; selfJoin = FALSE; - if (mode == CoordModePrevious) { - int nptTmp; - DDXPointPtr pPtsTmp; - - x1 = x2; - y1 = y2; - nptTmp = npt; - pPtsTmp = pPts + 1; - while (--nptTmp) { - x1 += pPtsTmp->x; - y1 += pPtsTmp->y; - ++pPtsTmp; - } - if (x2 == x1 && y2 == y1) - selfJoin = TRUE; - } - else if (x2 == pPts[npt - 1].x && y2 == pPts[npt - 1].y) { + if (x2 == pPts[npt - 1].x && y2 == pPts[npt - 1].y) { selfJoin = TRUE; } projectLeft = pGC->capStyle == CapProjecting && !selfJoin; @@ -2379,10 +2343,6 @@ miWideDash(DrawablePtr pDrawable, GCPtr pGC, ++pPts; x2 = pPts->x; y2 = pPts->y; - if (mode == CoordModePrevious) { - x2 += x1; - y2 += y1; - } if (x1 != x2 || y1 != y2) { somethingDrawn = TRUE; if (npt == 1 && pGC->capStyle == CapProjecting && @@ -2473,19 +2433,18 @@ miWideDash(DrawablePtr pDrawable, GCPtr pGC, void miPolylines(DrawablePtr drawable, GCPtr gc, - int mode, int n, DDXPointPtr points) { if (gc->lineWidth == 0) { if (gc->lineStyle == LineSolid) - miZeroLine(drawable, gc, mode, n, points); + miZeroLine(drawable, gc, n, points); else - miZeroDashLine(drawable, gc, mode, n, points); + miZeroDashLine(drawable, gc, n, points); } else { if (gc->lineStyle == LineSolid) - miWideLine(drawable, gc, mode, n, points); + miWideLine(drawable, gc, n, points); else - miWideDash(drawable, gc, mode, n, points); + miWideDash(drawable, gc, n, points); } } diff --git a/mi/mizerarc.c b/mi/mizerarc.c index 85e12f0..9f6ea97 100644 --- a/mi/mizerarc.c +++ b/mi/mizerarc.c @@ -707,7 +707,7 @@ miZeroPolyArc(DrawablePtr pDraw, GCPtr pGC, int narcs, xArc * parcs) } n = pts - points; if (!dospans) - (*pGC->ops->PolyPoint) (pDraw, pGC, CoordModeOrigin, n, points); + (*pGC->ops->PolyPoint) (pDraw, pGC, n, points); else { if (n > maxw) { while (maxw < n) @@ -729,7 +729,7 @@ miZeroPolyArc(DrawablePtr pDraw, GCPtr pGC, int narcs, xArc * parcs) oddPts++; n = pts - oddPts; if (!dospans) - (*pGC->ops->PolyPoint) (pDraw, pGC, CoordModeOrigin, n, oddPts); + (*pGC->ops->PolyPoint) (pDraw, pGC, n, oddPts); else { if (n > maxw) { while (maxw < n) diff --git a/mi/mizerline.c b/mi/mizerline.c index e36e080..3deb059 100644 --- a/mi/mizerline.c +++ b/mi/mizerline.c @@ -97,7 +97,7 @@ SOFTWARE. } void -miZeroLine(DrawablePtr pDraw, GCPtr pGC, int mode, /* Origin or Previous */ +miZeroLine(DrawablePtr pDraw, GCPtr pGC, int npt, /* number of points */ DDXPointPtr pptInit) { @@ -174,10 +174,6 @@ miZeroLine(DrawablePtr pDraw, GCPtr pGC, int mode, /* Origin or Previous */ x2 = ppt->x; y2 = ppt->y; - if (mode == CoordModePrevious) { - x2 += x1; - y2 += y1; - } oc2 = 0; MIOUTCODES(oc2, x2, y2, xleft, ytop, xright, ybottom); @@ -331,12 +327,12 @@ miZeroLine(DrawablePtr pDraw, GCPtr pGC, int mode, /* Origin or Previous */ } void -miZeroDashLine(DrawablePtr dst, GCPtr pgc, int mode, int nptInit, /* number of points in polyline */ +miZeroDashLine(DrawablePtr dst, GCPtr pgc, int nptInit, /* number of points in polyline */ DDXPointRec * pptInit /* points in the polyline */ ) { /* XXX kludge until real zero-width dash code is written */ pgc->lineWidth = 1; - miWideDash(dst, pgc, mode, nptInit, pptInit); + miWideDash(dst, pgc, nptInit, pptInit); pgc->lineWidth = 0; } diff --git a/miext/damage/damage.c b/miext/damage/damage.c index c9ddeea..2f26f06 100644 --- a/miext/damage/damage.c +++ b/miext/damage/damage.c @@ -802,7 +802,7 @@ damageCopyPlane(DrawablePtr pSrc, static void damagePolyPoint(DrawablePtr pDrawable, - GCPtr pGC, int mode, int npt, xPoint * ppt) + GCPtr pGC, int npt, xPoint * ppt) { DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); @@ -835,14 +835,14 @@ damagePolyPoint(DrawablePtr pDrawable, if (BOX_NOT_EMPTY(box)) damageDamageBox(pDrawable, &box, pGC->subWindowMode); } - (*pGC->ops->PolyPoint) (pDrawable, pGC, mode, npt, ppt); + (*pGC->ops->PolyPoint) (pDrawable, pGC, npt, ppt); damageRegionProcessPending(pDamage); DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); } static void damagePolylines(DrawablePtr pDrawable, - GCPtr pGC, int mode, int npt, DDXPointPtr ppt) + GCPtr pGC, int npt, DDXPointPtr ppt) { DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); @@ -862,36 +862,16 @@ damagePolylines(DrawablePtr pDrawable, extra = pGC->lineWidth; } - if (mode == CoordModePrevious) { - int x = box.x1; - int y = box.y1; - - while (--nptTmp) { - pptTmp++; - x += pptTmp->x; - y += pptTmp->y; - if (box.x1 > x) - box.x1 = x; - else if (box.x2 < x) - box.x2 = x; - if (box.y1 > y) - box.y1 = y; - else if (box.y2 < y) - box.y2 = y; - } - } - else { - while (--nptTmp) { - pptTmp++; - if (box.x1 > pptTmp->x) - box.x1 = pptTmp->x; - else if (box.x2 < pptTmp->x) - box.x2 = pptTmp->x; - if (box.y1 > pptTmp->y) - box.y1 = pptTmp->y; - else if (box.y2 < pptTmp->y) - box.y2 = pptTmp->y; - } + while (--nptTmp) { + pptTmp++; + if (box.x1 > pptTmp->x) + box.x1 = pptTmp->x; + else if (box.x2 < pptTmp->x) + box.x2 = pptTmp->x; + if (box.y1 > pptTmp->y) + box.y1 = pptTmp->y; + else if (box.y2 < pptTmp->y) + box.y2 = pptTmp->y; } box.x2++; @@ -908,7 +888,7 @@ damagePolylines(DrawablePtr pDrawable, if (BOX_NOT_EMPTY(box)) damageDamageBox(pDrawable, &box, pGC->subWindowMode); } - (*pGC->ops->Polylines) (pDrawable, pGC, mode, npt, ppt); + (*pGC->ops->Polylines) (pDrawable, pGC, npt, ppt); damageRegionProcessPending(pDamage); DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); } @@ -1100,7 +1080,7 @@ damagePolyArc(DrawablePtr pDrawable, GCPtr pGC, int nArcs, xArc * pArcs) static void damageFillPolygon(DrawablePtr pDrawable, - GCPtr pGC, int shape, int mode, int npt, DDXPointPtr ppt) + GCPtr pGC, int shape, int npt, DDXPointPtr ppt) { DAMAGE_GC_OP_PROLOGUE(pGC, pDrawable); @@ -1112,36 +1092,16 @@ damageFillPolygon(DrawablePtr pDrawable, box.x2 = box.x1 = pptTmp->x; box.y2 = box.y1 = pptTmp->y; - if (mode != CoordModeOrigin) { - int x = box.x1; - int y = box.y1; - - while (--nptTmp) { - pptTmp++; - x += pptTmp->x; - y += pptTmp->y; - if (box.x1 > x) - box.x1 = x; - else if (box.x2 < x) - box.x2 = x; - if (box.y1 > y) - box.y1 = y; - else if (box.y2 < y) - box.y2 = y; - } - } - else { - while (--nptTmp) { - pptTmp++; - if (box.x1 > pptTmp->x) - box.x1 = pptTmp->x; - else if (box.x2 < pptTmp->x) - box.x2 = pptTmp->x; - if (box.y1 > pptTmp->y) - box.y1 = pptTmp->y; - else if (box.y2 < pptTmp->y) - box.y2 = pptTmp->y; - } + while (--nptTmp) { + pptTmp++; + if (box.x1 > pptTmp->x) + box.x1 = pptTmp->x; + else if (box.x2 < pptTmp->x) + box.x2 = pptTmp->x; + if (box.y1 > pptTmp->y) + box.y1 = pptTmp->y; + else if (box.y2 < pptTmp->y) + box.y2 = pptTmp->y; } box.x2++; @@ -1152,7 +1112,7 @@ damageFillPolygon(DrawablePtr pDrawable, damageDamageBox(pDrawable, &box, pGC->subWindowMode); } - (*pGC->ops->FillPolygon) (pDrawable, pGC, shape, mode, npt, ppt); + (*pGC->ops->FillPolygon) (pDrawable, pGC, shape, npt, ppt); damageRegionProcessPending(pDamage); DAMAGE_GC_OP_EPILOGUE(pGC, pDrawable); } diff --git a/miext/rootless/rootlessGC.c b/miext/rootless/rootlessGC.c index 235b3ab..94cb1b7 100644 --- a/miext/rootless/rootlessGC.c +++ b/miext/rootless/rootlessGC.c @@ -88,16 +88,16 @@ static RegionPtr RootlessCopyPlane(DrawablePtr pSrc, DrawablePtr dst, int w, int h, int dstx, int dsty, unsigned long plane); static void RootlessPolyPoint(DrawablePtr dst, GCPtr pGC, - int mode, int npt, DDXPointPtr pptInit); + int npt, DDXPointPtr pptInit); static void RootlessPolylines(DrawablePtr dst, GCPtr pGC, - int mode, int npt, DDXPointPtr pptInit); + int npt, DDXPointPtr pptInit); static void RootlessPolySegment(DrawablePtr dst, GCPtr pGC, int nseg, xSegment * pSeg); static void RootlessPolyRectangle(DrawablePtr dst, GCPtr pGC, int nRects, xRectangle *pRects); static void RootlessPolyArc(DrawablePtr dst, GCPtr pGC, int narcs, xArc * parcs); -static void RootlessFillPolygon(DrawablePtr dst, GCPtr pGC, int shape, int mode, +static void RootlessFillPolygon(DrawablePtr dst, GCPtr pGC, int shape, int count, DDXPointPtr pptInit); static void RootlessPolyFillRect(DrawablePtr dst, GCPtr pGC, int nRectsInit, xRectangle *pRectsInit); @@ -624,13 +624,13 @@ RootlessCopyPlane(DrawablePtr pSrc, DrawablePtr dst, /* changed area is box around all points */ static void RootlessPolyPoint(DrawablePtr dst, GCPtr pGC, - int mode, int npt, DDXPointPtr pptInit) + int npt, DDXPointPtr pptInit) { GCOP_UNWRAP(pGC); RL_DEBUG_MSG("polypoint start "); RootlessStartDrawing((WindowPtr) dst); - pGC->ops->PolyPoint(dst, pGC, mode, npt, pptInit); + pGC->ops->PolyPoint(dst, pGC, npt, pptInit); if (npt > 0) { #if ROOTLESS_CHANGED_AREA==0 @@ -722,13 +722,13 @@ RootlessPolyPoint(DrawablePtr dst, GCPtr pGC, /* changed area is box around each line */ static void RootlessPolylines(DrawablePtr dst, GCPtr pGC, - int mode, int npt, DDXPointPtr pptInit) + int npt, DDXPointPtr pptInit) { GCOP_UNWRAP(pGC); RL_DEBUG_MSG("poly lines start "); RootlessStartDrawing((WindowPtr) dst); - pGC->ops->Polylines(dst, pGC, mode, npt, pptInit); + pGC->ops->Polylines(dst, pGC, npt, pptInit); if (npt > 0) { BoxRec box; @@ -744,36 +744,16 @@ RootlessPolylines(DrawablePtr dst, GCPtr pGC, extra = pGC->lineWidth; } - if (mode == CoordModePrevious) { - int x = box.x1; - int y = box.y1; - - while (--npt) { - pptInit++; - x += pptInit->x; - y += pptInit->y; - if (box.x1 > x) - box.x1 = x; - else if (box.x2 < x) - box.x2 = x; - if (box.y1 > y) - box.y1 = y; - else if (box.y2 < y) - box.y2 = y; - } - } - else { - while (--npt) { - pptInit++; - if (box.x1 > pptInit->x) - box.x1 = pptInit->x; - else if (box.x2 < pptInit->x) - box.x2 = pptInit->x; - if (box.y1 > pptInit->y) - box.y1 = pptInit->y; - else if (box.y2 < pptInit->y) - box.y2 = pptInit->y; - } + while (--npt) { + pptInit++; + if (box.x1 > pptInit->x) + box.x1 = pptInit->x; + else if (box.x2 < pptInit->x) + box.x2 = pptInit->x; + if (box.y1 > pptInit->y) + box.y1 = pptInit->y; + else if (box.y2 < pptInit->y) + box.y2 = pptInit->y; } box.x2++; @@ -994,7 +974,7 @@ RootlessPolyArc(DrawablePtr dst, GCPtr pGC, int narcs, xArc * parcs) /* changed area is box around each poly */ static void RootlessFillPolygon(DrawablePtr dst, GCPtr pGC, - int shape, int mode, int count, DDXPointPtr pptInit) + int shape, int count, DDXPointPtr pptInit) { GC_SAVE(pGC); GCOP_UNWRAP(pGC); @@ -1002,7 +982,7 @@ RootlessFillPolygon(DrawablePtr dst, GCPtr pGC, pGC->fillStyle); if (count <= 2) { - pGC->ops->FillPolygon(dst, pGC, shape, mode, count, pptInit); + pGC->ops->FillPolygon(dst, pGC, shape, count, pptInit); } else { DDXPointPtr ppt = pptInit; @@ -1012,36 +992,16 @@ RootlessFillPolygon(DrawablePtr dst, GCPtr pGC, box.x2 = box.x1 = ppt->x; box.y2 = box.y1 = ppt->y; - if (mode != CoordModeOrigin) { - int x = box.x1; - int y = box.y1; - - while (--i) { - ppt++; - x += ppt->x; - y += ppt->y; - if (box.x1 > x) - box.x1 = x; - else if (box.x2 < x) - box.x2 = x; - if (box.y1 > y) - box.y1 = y; - else if (box.y2 < y) - box.y2 = y; - } - } - else { - while (--i) { - ppt++; - if (box.x1 > ppt->x) - box.x1 = ppt->x; - else if (box.x2 < ppt->x) - box.x2 = ppt->x; - if (box.y1 > ppt->y) - box.y1 = ppt->y; - else if (box.y2 < ppt->y) - box.y2 = ppt->y; - } + while (--i) { + ppt++; + if (box.x1 > ppt->x) + box.x1 = ppt->x; + else if (box.x2 < ppt->x) + box.x2 = ppt->x; + if (box.y1 > ppt->y) + box.y1 = ppt->y; + else if (box.y2 < ppt->y) + box.y2 = ppt->y; } box.x2++; @@ -1053,7 +1013,7 @@ RootlessFillPolygon(DrawablePtr dst, GCPtr pGC, GC_UNSET_PM(pGC, dst); } - pGC->ops->FillPolygon(dst, pGC, shape, mode, count, pptInit); + pGC->ops->FillPolygon(dst, pGC, shape, count, pptInit); TRIM_AND_TRANSLATE_BOX(box, dst, pGC); if (BOX_NOT_EMPTY(box)) -- 2.9.3 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
