delete [] points;
}
+void
+wxDCBase::DoDrawPolyPolygon(int n,
+ int count[],
+ wxPoint points[],
+ wxCoord xoffset, wxCoord yoffset,
+ int fillStyle)
+{
+ if ( n == 1 )
+ {
+ DoDrawPolygon(count[0], points, xoffset, yoffset, fillStyle);
+ return;
+ }
+
+ int i, j, lastOfs;
+ wxPoint* pts;
+ wxPen pen;
+
+ for (i = j = lastOfs = 0; i < n; i++)
+ {
+ lastOfs = j;
+ j += count[i];
+ }
+ pts = new wxPoint[j+n-1];
+ for (i = 0; i < j; i++)
+ pts[i] = points[i];
+ for (i = 2; i <= n; i++)
+ {
+ lastOfs -= count[n-i];
+ pts[j++] = pts[lastOfs];
+ }
+
+ pen = GetPen();
+ SetPen(wxPen(*wxBLACK, 0, wxTRANSPARENT));
+ DoDrawPolygon(j, pts, xoffset, yoffset, fillStyle);
+ SetPen(pen);
+ for (i = j = 0; i < n; i++)
+ {
+ DoDrawLines(count[i], pts+j, xoffset, yoffset);
+ j += count[i];
+ }
+ delete[] pts;
+}
+
// ----------------------------------------------------------------------------
// splines
// ----------------------------------------------------------------------------
#endif // wxUSE_SPLINES
+// ----------------------------------------------------------------------------
+// Partial Text Extents
+// ----------------------------------------------------------------------------
+
+
+// Each element of the array will be the width of the string up to and
+// including the coresoponding character in text. This is the generic
+// implementation, the port-specific classes should do this with native APIs
+// if available.
+
+bool wxDCBase::DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const
+{
+ int totalWidth = 0;
+ size_t i;
+
+ widths.Empty();
+ widths.Add(0, text.Length());
+
+ // Calculate the position of each character based on the widths of
+ // the previous characters
+ for (i=0; i<text.Length(); i++) {
+ int w, h;
+ GetTextExtent(text[i], &w, &h);
+ totalWidth += w;
+ widths[i] = totalWidth;
+ }
+ return true;
+}
+
+
// ----------------------------------------------------------------------------
// enhanced text drawing
// ----------------------------------------------------------------------------
}
// first draw the pie without pen, if necessary
- if( GetBrush() != *wxTRANSPARENT_BRUSH )
+ if( GetBrush() != *wxTRANSPARENT_BRUSH )
{
wxPen tempPen( GetPen() );
SetPen( *wxTRANSPARENT_PEN );
}
// then draw the arc without brush, if necessary
- if( GetPen() != *wxTRANSPARENT_PEN )
+ if( GetPen() != *wxTRANSPARENT_PEN )
{
// without center
DoDrawLines( n-1, points, 0, 0 );