void
wxDCBase::DoDrawPolyPolygon(int n,
- int start[],
+ int count[],
wxPoint points[],
wxCoord xoffset, wxCoord yoffset,
int fillStyle)
{
if ( n == 1 )
{
- DoDrawPolygon(start[0], points, xoffset, yoffset, fillStyle);
+ DoDrawPolygon(count[0], points, xoffset, yoffset, fillStyle);
return;
}
for (i = j = lastOfs = 0; i < n; i++)
{
lastOfs = j;
- j += start[i];
+ 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 -= start[n-i];
+ lastOfs -= count[n-i];
pts[j++] = pts[lastOfs];
}
SetPen(pen);
for (i = j = 0; i < n; i++)
{
- DoDrawLines(start[i], pts+j, xoffset, yoffset);
- j += start[i];
+ DoDrawLines(count[i], pts+j, xoffset, yoffset);
+ j += count[i];
}
- delete pts;
+ delete[] pts;
}
// ----------------------------------------------------------------------------
#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
// ----------------------------------------------------------------------------