From a9f1207c1bbff188c5b258040560dc63276f79af Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 27 Oct 2012 12:28:00 +0000 Subject: [PATCH] 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 as this allows it to be used with all of wxVector, 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 --- include/wx/private/textmeasure.h | 12 ++++++------ src/common/textmeasurecmn.cpp | 16 +++++----------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/include/wx/private/textmeasure.h b/include/wx/private/textmeasure.h index 1270e8ecdc..a543214366 100644 --- a/include/wx/private/textmeasure.h +++ b/include/wx/private/textmeasure.h @@ -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& 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. diff --git a/src/common/textmeasurecmn.cpp b/src/common/textmeasurecmn.cpp index df91ca38bd..f45de698c1 100644 --- a/src/common/textmeasurecmn.cpp +++ b/src/common/textmeasurecmn.cpp @@ -158,18 +158,15 @@ void wxTextMeasureBase::GetMultiLineTextExtent(const wxString& text, *heightOneLine = heightLine; } -void wxTextMeasureBase::GetLargestStringExtent(const wxVector& 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::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& strings heightMax = h; } - if ( width ) - *width = widthMax; - if ( height ) - *height = heightMax; + return wxSize(widthMax, heightMax); } bool wxTextMeasureBase::GetPartialTextExtents(const wxString& text, -- 2.45.2