Allow using wxTextMeasure::GetLargestStringExtent() with wxArrayString.

Change the signature of this method to take the number of strings and the
pointer to the first of them instead of wxVector<wxString> as this allows it
to be used with all of wxVector<wxString>, wxArrayString and raw arrays of
wxStrings.

Also return the computed size from it instead of filling output parameters.

Closes #14781.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72802 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-10-27 12:28:00 +00:00
parent 1bce253a23
commit a9f1207c1b
2 changed files with 11 additions and 17 deletions

View File

@@ -11,8 +11,6 @@
#ifndef _WX_PRIVATE_TEXTMEASURE_H_
#define _WX_PRIVATE_TEXTMEASURE_H_
#include "wx/vector.h"
class WXDLLIMPEXP_FWD_CORE wxDC;
class WXDLLIMPEXP_FWD_CORE wxFont;
class WXDLLIMPEXP_FWD_CORE wxWindow;
@@ -48,9 +46,11 @@ public:
wxCoord *heightOneLine = NULL);
// Find the dimensions of the largest string.
void GetLargestStringExtent(const wxVector<wxString>& strings,
wxCoord *width,
wxCoord *height);
wxSize GetLargestStringExtent(size_t n, const wxString* strings);
wxSize GetLargestStringExtent(const wxArrayString& strings)
{
return GetLargestStringExtent(strings.size(), &strings[0]);
}
// Fill the array with the widths for each "0..N" substrings for N from 1
// to text.length().
@@ -93,7 +93,7 @@ protected:
// The main function of this class, to be implemented in platform-specific
// way used by all our public methods except GetLargestStringExtents().
// way used by all our public methods.
//
// The width and height pointers here are never NULL and the input string
// is not empty.

View File

@@ -158,18 +158,15 @@ void wxTextMeasureBase::GetMultiLineTextExtent(const wxString& text,
*heightOneLine = heightLine;
}
void wxTextMeasureBase::GetLargestStringExtent(const wxVector<wxString>& strings,
wxCoord *width,
wxCoord *height)
wxSize wxTextMeasureBase::GetLargestStringExtent(size_t n,
const wxString* strings)
{
MeasuringGuard guard(*this);
wxCoord w, h, widthMax = 0, heightMax = 0;
for ( wxVector<wxString>::const_iterator i = strings.begin();
i != strings.end();
++i )
for ( size_t i = 0; i < n; ++i )
{
CallGetTextExtent(*i, &w, &h);
CallGetTextExtent(strings[i], &w, &h);
if ( w > widthMax )
widthMax = w;
@@ -177,10 +174,7 @@ void wxTextMeasureBase::GetLargestStringExtent(const wxVector<wxString>& strings
heightMax = h;
}
if ( width )
*width = widthMax;
if ( height )
*height = heightMax;
return wxSize(widthMax, heightMax);
}
bool wxTextMeasureBase::GetPartialTextExtents(const wxString& text,