X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/63b9e659ef655526cd9ed69113280e864f7e2210..4997d3014cd76b41f2d4036dfd168ad886972f35:/src/common/dcbase.cpp diff --git a/src/common/dcbase.cpp b/src/common/dcbase.cpp index 75b4c6ac79..88612bfdb1 100644 --- a/src/common/dcbase.cpp +++ b/src/common/dcbase.cpp @@ -108,14 +108,14 @@ void wxDCBase::DrawPolygon(const wxList *list, 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; } @@ -126,14 +126,14 @@ wxDCBase::DoDrawPolyPolygon(int n, 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]; } @@ -143,10 +143,10 @@ wxDCBase::DoDrawPolyPolygon(int n, 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; } // ---------------------------------------------------------------------------- @@ -365,6 +365,36 @@ void wxDCBase::DoDrawSpline( wxList *points ) #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