# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1319940827 0 # Node ID 885b55c0d7d7ae907afde3d3e1b242f424c88ca5 # Parent dfecd7b3c81e712b28259f66dc41d3ec3792bb81 Implemented DW_DRAW_FULL and DW_DRAW_FILL on OS/2. diff -r dfecd7b3c81e -r 885b55c0d7d7 os2/dw.c --- a/os2/dw.c Sun Oct 30 02:10:24 2011 +0000 +++ b/os2/dw.c Sun Oct 30 02:13:47 2011 +0000 @@ -8685,7 +8685,15 @@ POINTL pts[2]; double r, a1, a2, a; int x3, y3; - + + /* Handle full circle/ellipse */ + if(flags & DW_DRAW_FULL) + { + /* Draw one half... */ + dw_draw_arc(handle, pixmap, flags & ~DW_DRAW_FULL, xorigin, yorigin, x2, y2, x1, y1); + /* ... then continue to draw the other half */ + } + if(handle) { hps = _set_colors(handle); @@ -8698,7 +8706,10 @@ } else return; - + + /* For a filled polygon we need to start an area */ + if(flags & DW_DRAW_FILL) + GpiBeginArea(hps, 0L); /* Setup the arc info on the presentation space */ GpiSetArcParams(hps, &ap); pts[0].x = x1; @@ -8720,6 +8731,8 @@ pts[1].y = thisheight - y2 - 1; /* Actually draw the arc */ GpiPointArc(hps, pts); + if(flags & DW_DRAW_FILL) + GpiEndArea(hps); if(!pixmap) WinReleasePS(hps);