]> git.saurik.com Git - wxWidgets.git/commitdiff
Allow using wxTextMeasure::GetLargestStringExtent() with wxArrayString.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 27 Oct 2012 12:28:00 +0000 (12:28 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 27 Oct 2012 12:28:00 +0000 (12:28 +0000)
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

include/wx/private/textmeasure.h
src/common/textmeasurecmn.cpp

index 1270e8ecdc88b21e81f0d03968131af0b8a7629d..a5432143668db509feffe98e5829376fc65710fe 100644 (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.
index df91ca38bdceb7fd383bd9bfbc4714ef85cc662c..f45de698c12d6aa43596f0d5f39b3a115aa66d5f 100644 (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,