+ PsPrint( "closepath\n" );
+ PsPrint( "stroke\n" );
+ }
+}
+
+void wxPostScriptDC::DoDrawPolyPolygon (int n, int count[], wxPoint points[], wxCoord xoffset, wxCoord yoffset, int fillStyle)
+{
+ wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
+
+ if (n <= 0) return;
+
+ if (m_brush.GetStyle () != wxTRANSPARENT)
+ {
+ SetBrush( m_brush );
+
+ PsPrint( "newpath\n" );
+
+ int ofs = 0;
+ for (int i = 0; i < n; ofs += count[i++])
+ {
+ wxCoord xx = LogicalToDeviceX(points[ofs].x + xoffset);
+ wxCoord yy = LogicalToDeviceY(points[ofs].y + yoffset);
+
+ PsPrintf( wxT("%d %d moveto\n"), xx, yy );
+
+ CalcBoundingBox( points[ofs].x + xoffset, points[ofs].y + yoffset );
+
+ for (int j = 1; j < count[i]; j++)
+ {
+ xx = LogicalToDeviceX(points[ofs+j].x + xoffset);
+ yy = LogicalToDeviceY(points[ofs+j].y + yoffset);
+
+ PsPrintf( wxT("%d %d lineto\n"), xx, yy );
+
+ CalcBoundingBox( points[ofs+j].x + xoffset, points[ofs+j].y + yoffset);
+ }
+ }
+ PsPrint( (fillStyle == wxODDEVEN_RULE ? "eofill\n" : "fill\n") );
+ }
+
+ if (m_pen.GetStyle () != wxTRANSPARENT)
+ {
+ SetPen( m_pen );
+
+ PsPrint( "newpath\n" );
+
+ int ofs = 0;
+ for (int i = 0; i < n; ofs += count[i++])
+ {
+ wxCoord xx = LogicalToDeviceX(points[ofs].x + xoffset);
+ wxCoord yy = LogicalToDeviceY(points[ofs].y + yoffset);
+
+ PsPrintf( wxT("%d %d moveto\n"), xx, yy );
+
+ CalcBoundingBox( points[ofs].x + xoffset, points[ofs].y + yoffset );
+
+ for (int j = 1; j < count[i]; j++)
+ {
+ xx = LogicalToDeviceX(points[ofs+j].x + xoffset);
+ yy = LogicalToDeviceY(points[ofs+j].y + yoffset);
+
+ PsPrintf( wxT("%d %d lineto\n"), xx, yy );
+
+ CalcBoundingBox( points[ofs+j].x + xoffset, points[ofs+j].y + yoffset);
+ }
+ }
+ PsPrint( "closepath\n" );
+ PsPrint( "stroke\n" );