From 512be5eca22dba617e7b5598a9497a746648d0c9 Mon Sep 17 00:00:00 2001 From: Fred Kiefer Date: Tue, 30 Dec 2003 15:29:16 +0000 Subject: [PATCH] Made non-zero fill winding rule and dash patterns working. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@18291 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 8 ++++++++ Source/gsc/GSGState.m | 2 +- Source/xlib/XGGState.m | 16 +++++++--------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7777c48..dd7fc79 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2003-12-30 Fred Kiefer + + * Source/gsc/path.m (-GSSendBezierPath:) preset the count + variable, as this is expected by the method [NSBezierPath + getLineDash:count:phase:]. + * Source/xlib/XGGState.m (-_doPath::draw:) allways set fill rule + for path_fill. + 2003-12-30 Fred Kiefer * Source/art/path.m (-DPSrectstroke::::, diff --git a/Source/gsc/GSGState.m b/Source/gsc/GSGState.m index 97a8fc1..78dedd7 100644 --- a/Source/gsc/GSGState.m +++ b/Source/gsc/GSGState.m @@ -841,7 +841,7 @@ - (void) GSSendBezierPath: (NSBezierPath *)newpath { - int count; + int count = 10; float pattern[10]; float phase; diff --git a/Source/xlib/XGGState.m b/Source/xlib/XGGState.m index 660a1f6..9887d9e 100644 --- a/Source/xlib/XGGState.m +++ b/Source/xlib/XGGState.m @@ -835,10 +835,11 @@ static Region emptyRegion; } break; case path_eofill: - gcv.fill_rule = EvenOddRule; - [self setGCValues: gcv withMask: GCFillRule]; + fill_rule = EvenOddRule; /* NO BREAK */ case path_fill: + gcv.fill_rule = fill_rule; + [self setGCValues: gcv withMask: GCFillRule]; // Hack: Only draw when alpha is not zero if (drawingAlpha == NO || fillColor.field[AINDEX] != 0.0) XFillPolygon(XDPY, draw, xgcntxt, pts, count, Complex, @@ -851,12 +852,7 @@ static Region emptyRegion; XFillPolygon(XDPY, alpha_buffer, agcntxt, pts, count, Complex, CoordModeOrigin); } - - if (gcv.fill_rule == EvenOddRule) - { - gcv.fill_rule = WindingRule; - [self setGCValues: gcv withMask: GCFillRule]; - } + break; case path_eoclip: fill_rule = EvenOddRule; @@ -1487,7 +1483,9 @@ typedef enum { // FIXME: How to convert those values? dash_offset = (int)pat_offset; for (i = 0; i < size; i++) - dash_list[i] = (char)pat[i]; + { + dash_list[i] = (char)pat[i]; + } // We can only set the dash pattern, if xgcntxt exists. if (xgcntxt == 0)