From bf1429b2034a577c994ff16b60d809d05ca99241 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 7 May 2014 09:56:39 -0700 Subject: [PATCH] mi: Create miPolylines as a general-purpose line drawing function Instead of requiring all drivers to figure out which mi function to call for each of the four cases, create a single wrapper in mi that handles them correctly. Now drivers can simply use miPolylines in all cases. Signed-off-by: Keith Packard Reviewed-by: Eric Anholt --- mi/mi.h | 6 ++++++ mi/miwideline.c | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/mi/mi.h b/mi/mi.h index 1209a16c4..b8a4f0568 100644 --- a/mi/mi.h +++ b/mi/mi.h @@ -452,6 +452,12 @@ extern _X_EXPORT void miWideDash(DrawablePtr /*pDrawable */ , DDXPointPtr /*pPts */ ); +extern _X_EXPORT void miPolylines(DrawablePtr pDrawable, + GCPtr pGC, + int mode, + int npt, + DDXPointPtr pPts); + /* miwindow.c */ extern _X_EXPORT void miClearToBackground(WindowPtr /*pWin */ , diff --git a/mi/miwideline.c b/mi/miwideline.c index b76e7a818..29ba12c69 100644 --- a/mi/miwideline.c +++ b/mi/miwideline.c @@ -1979,3 +1979,23 @@ miWideDash(DrawablePtr pDrawable, GCPtr pGC, if (spanData) miCleanupSpanData(pDrawable, pGC, spanData); } + +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); + else + miZeroDashLine(drawable, gc, mode, n, points); + } else { + if (gc->lineStyle == LineSolid) + miWideLine(drawable, gc, mode, n, points); + else + miWideDash(drawable, gc, mode, n, points); + } +}