diff options
author | Keith Packard <keithp@keithp.com> | 2014-05-07 09:56:39 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2014-06-12 22:52:47 -0700 |
commit | bf1429b2034a577c994ff16b60d809d05ca99241 (patch) | |
tree | f52f56882fb1c0fef16edd9c1f7514ed33ecc1ea | |
parent | 14d82a2bc3179160803c62c20746630d14e1b7d7 (diff) |
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 <keithp@keithp.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | mi/mi.h | 6 | ||||
-rw-r--r-- | mi/miwideline.c | 20 |
2 files changed, 26 insertions, 0 deletions
@@ -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); + } +} |