]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/private/window.h
Fixed dialog units <-> pixels conversion.
[wxWidgets.git] / include / wx / private / window.h
diff --git a/include/wx/private/window.h b/include/wx/private/window.h
new file mode 100644 (file)
index 0000000..3084665
--- /dev/null
@@ -0,0 +1,39 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/private/window.h
+// Purpose:     misc wxWindow helpers
+// Author:      Vaclav Slavik
+// Created:     2010-01-21
+// RCS-ID:      $Id$
+// Copyright:   (c) 2010 Vaclav Slavik
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_PRIVATE_WINDOW_H_
+#define _WX_PRIVATE_WINDOW_H_
+
+#include "wx/gdicmn.h"
+
+namespace wxPrivate
+{
+
+// Windows' computes dialog units using average character width over upper-
+// and lower-case ASCII alphabet and not using the average character width
+// metadata stored in the font; see
+// http://support.microsoft.com/default.aspx/kb/145994 for detailed discussion.
+//
+// This helper function computes font dimensions in the same way. It works with
+// either wxDC or wxWindow argument.
+template<typename T>
+inline wxSize GetAverageASCIILetterSize(const T& of_what)
+{
+    const wxStringCharType *TEXT_TO_MEASURE =
+        wxS("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
+
+    wxSize s = of_what.GetTextExtent(TEXT_TO_MEASURE);
+    s.x = (s.x / 26 + 1) / 2;
+    return s;
+}
+
+} // namespace wxPrivate
+
+#endif // _WX_PRIVATE_WINDOW_H_