From 8cd79b7af0760eb91d42ff9ac7c0ccead8d50c6b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 17 Oct 2012 22:35:49 +0000 Subject: [PATCH] Factor out text measurement from wxDC and wxWindow into wxTextMeasure. Add a new private wxTextMeasure class implementing methods for measuring text and move the often duplicated (but not always identically) code for doing the same from wxDC and wxWindow into it. Currently this class is only really implemented in wxMSW and wxGTK. Also extend the test for text measuring functions and rename it to MeasuringTextTestCase from MeasuringContextTestCase as it's not wxGC-specific any more. Closes #14705. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72699 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- Makefile.in | 268 ++++++++++++++++++++++- build/bakefiles/files.bkl | 10 + build/msw/makefile.bcc | 56 +++++ build/msw/makefile.gcc | 56 +++++ build/msw/makefile.vc | 56 +++++ build/msw/makefile.wat | 56 +++++ build/msw/wx_core.dsp | 8 + build/msw/wx_vc7_core.vcproj | 6 + build/msw/wx_vc8_core.vcproj | 8 + build/msw/wx_vc9_core.vcproj | 8 + include/wx/generic/private/textmeasure.h | 40 ++++ include/wx/gtk/private/textmeasure.h | 65 ++++++ include/wx/msw/private/textmeasure.h | 62 ++++++ include/wx/private/textmeasure.h | 138 ++++++++++++ src/common/dcbase.cpp | 134 +----------- src/common/textmeasurecmn.cpp | 178 +++++++++++++++ src/generic/textmeasure.cpp | 131 +++++++++++ src/gtk/dcclient.cpp | 96 +------- src/gtk/textmeasure.cpp | 185 ++++++++++++++++ src/gtk/window.cpp | 53 +---- src/msw/dc.cpp | 103 +-------- src/msw/textmeasure.cpp | 172 +++++++++++++++ src/msw/window.cpp | 32 +-- tests/graphics/measuring.cpp | 91 ++++++-- 24 files changed, 1616 insertions(+), 396 deletions(-) create mode 100644 include/wx/generic/private/textmeasure.h create mode 100644 include/wx/gtk/private/textmeasure.h create mode 100644 include/wx/msw/private/textmeasure.h create mode 100644 include/wx/private/textmeasure.h create mode 100644 src/common/textmeasurecmn.cpp create mode 100644 src/generic/textmeasure.cpp create mode 100644 src/gtk/textmeasure.cpp create mode 100644 src/msw/textmeasure.cpp diff --git a/Makefile.in b/Makefile.in index 073ae2ebef..ce7fc8ac94 100644 --- a/Makefile.in +++ b/Makefile.in @@ -4814,6 +4814,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS = \ monodll_tbarbase.o \ monodll_textcmn.o \ monodll_textentrycmn.o \ + monodll_textmeasurecmn.o \ monodll_toplvcmn.o \ monodll_treebase.o \ monodll_uiactioncmn.o \ @@ -5031,6 +5032,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS = \ monodll_tbarbase.o \ monodll_textcmn.o \ monodll_textentrycmn.o \ + monodll_textmeasurecmn.o \ monodll_toplvcmn.o \ monodll_treebase.o \ monodll_uiactioncmn.o \ @@ -5086,6 +5088,7 @@ COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS = \ monodll_generic_icon.o \ monodll_generic_imaglist.o \ monodll_mask.o \ + monodll_generic_textmeasure.o \ monodll_dfb_app.o \ monodll_dfb_bitmap.o \ monodll_dfb_brush.o \ @@ -5119,6 +5122,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION____LOWLEVEL_SRC_OBJECTS = \ monodll_utilsx11.o \ monodll_generic_icon.o \ monodll_paletteg.o \ + monodll_generic_textmeasure.o \ monodll_gtk1_app.o \ monodll_gtk1_bitmap.o \ monodll_gtk1_brush.o \ @@ -5176,6 +5180,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___LOWLEVEL_SRC_OBJECTS = \ monodll_gtk_region.o \ monodll_gtk_renderer.o \ monodll_gtk_settings.o \ + monodll_gtk_textmeasure.o \ monodll_gtk_timer.o \ monodll_gtk_tooltip.o \ monodll_gtk_toplevel.o \ @@ -5213,6 +5218,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_3___LOWLEVEL_SRC_OBJECTS = \ monodll_gtk_region.o \ monodll_gtk_renderer.o \ monodll_gtk_settings.o \ + monodll_gtk_textmeasure.o \ monodll_gtk_timer.o \ monodll_gtk_tooltip.o \ monodll_gtk_toplevel.o \ @@ -5229,6 +5235,7 @@ COND_TOOLKIT_MOTIF___LOWLEVEL_SRC_OBJECTS = \ monodll_unix_fontutil.o \ monodll_uiactionx11.o \ monodll_utilsx11.o \ + monodll_generic_textmeasure.o \ monodll_x11_bitmap.o \ monodll_x11_brush.o \ monodll_x11_palette.o \ @@ -5279,6 +5286,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS = \ monodll_msw_region.o \ monodll_msw_renderer.o \ monodll_msw_settings.o \ + monodll_msw_textmeasure.o \ monodll_msw_tooltip.o \ monodll_msw_toplevel.o \ monodll_uiaction.o \ @@ -5341,6 +5349,7 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS = \ monodll_msw_region.o \ monodll_msw_renderer.o \ monodll_msw_settings.o \ + monodll_msw_textmeasure.o \ monodll_msw_tooltip.o \ monodll_msw_toplevel.o \ monodll_uiaction.o \ @@ -5359,6 +5368,7 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS = \ monodll_uiactionx11.o \ monodll_utilsx11.o \ monodll_generic_icon.o \ + monodll_generic_textmeasure.o \ monodll_generic_timer.o \ monodll_x11_app.o \ monodll_x11_bitmap.o \ @@ -5476,7 +5486,8 @@ COND_TOOLKIT_COCOA___GUI_SRC_OBJECTS = \ monodll_generic_listctrl.o \ monodll_paletteg.o \ monodll_regiong.o \ - monodll_generic_statusbr.o + monodll_generic_statusbr.o \ + monodll_generic_textmeasure.o @COND_TOOLKIT_COCOA@__GUI_SRC_OBJECTS = $(COND_TOOLKIT_COCOA___GUI_SRC_OBJECTS) COND_TOOLKIT_GTK_TOOLKIT_VERSION____GUI_SRC_OBJECTS = \ monodll_generic_accel.o \ @@ -5871,6 +5882,7 @@ COND_TOOLKIT_PM___GUI_SRC_OBJECTS = \ monodll_mdig.o \ monodll_prntdlgg.o \ monodll_generic_statusbr.o \ + monodll_generic_textmeasure.o \ monodll_os2_accel.o \ monodll_os2_app.o \ monodll_os2_bitmap.o \ @@ -6024,6 +6036,7 @@ COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_1 = \ monodll_generic_icon.o \ monodll_generic_imaglist.o \ monodll_mask.o \ + monodll_generic_textmeasure.o \ monodll_dfb_app.o \ monodll_dfb_bitmap.o \ monodll_dfb_brush.o \ @@ -6057,6 +6070,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION____LOWLEVEL_SRC_OBJECTS_1 = \ monodll_utilsx11.o \ monodll_generic_icon.o \ monodll_paletteg.o \ + monodll_generic_textmeasure.o \ monodll_gtk1_app.o \ monodll_gtk1_bitmap.o \ monodll_gtk1_brush.o \ @@ -6114,6 +6128,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___LOWLEVEL_SRC_OBJECTS_1 = \ monodll_gtk_region.o \ monodll_gtk_renderer.o \ monodll_gtk_settings.o \ + monodll_gtk_textmeasure.o \ monodll_gtk_timer.o \ monodll_gtk_tooltip.o \ monodll_gtk_toplevel.o \ @@ -6151,6 +6166,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_3___LOWLEVEL_SRC_OBJECTS_1 = \ monodll_gtk_region.o \ monodll_gtk_renderer.o \ monodll_gtk_settings.o \ + monodll_gtk_textmeasure.o \ monodll_gtk_timer.o \ monodll_gtk_tooltip.o \ monodll_gtk_toplevel.o \ @@ -6167,6 +6183,7 @@ COND_TOOLKIT_MOTIF___LOWLEVEL_SRC_OBJECTS_1 = \ monodll_unix_fontutil.o \ monodll_uiactionx11.o \ monodll_utilsx11.o \ + monodll_generic_textmeasure.o \ monodll_x11_bitmap.o \ monodll_x11_brush.o \ monodll_x11_palette.o \ @@ -6217,6 +6234,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_1 = \ monodll_msw_region.o \ monodll_msw_renderer.o \ monodll_msw_settings.o \ + monodll_msw_textmeasure.o \ monodll_msw_tooltip.o \ monodll_msw_toplevel.o \ monodll_uiaction.o \ @@ -6279,6 +6297,7 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_1 = \ monodll_msw_region.o \ monodll_msw_renderer.o \ monodll_msw_settings.o \ + monodll_msw_textmeasure.o \ monodll_msw_tooltip.o \ monodll_msw_toplevel.o \ monodll_uiaction.o \ @@ -6297,6 +6316,7 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_1 = \ monodll_uiactionx11.o \ monodll_utilsx11.o \ monodll_generic_icon.o \ + monodll_generic_textmeasure.o \ monodll_generic_timer.o \ monodll_x11_app.o \ monodll_x11_bitmap.o \ @@ -7024,6 +7044,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_1 = \ monolib_tbarbase.o \ monolib_textcmn.o \ monolib_textentrycmn.o \ + monolib_textmeasurecmn.o \ monolib_toplvcmn.o \ monolib_treebase.o \ monolib_uiactioncmn.o \ @@ -7241,6 +7262,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_1 = \ monolib_tbarbase.o \ monolib_textcmn.o \ monolib_textentrycmn.o \ + monolib_textmeasurecmn.o \ monolib_toplvcmn.o \ monolib_treebase.o \ monolib_uiactioncmn.o \ @@ -7296,6 +7318,7 @@ COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_2 = \ monolib_generic_icon.o \ monolib_generic_imaglist.o \ monolib_mask.o \ + monolib_generic_textmeasure.o \ monolib_dfb_app.o \ monolib_dfb_bitmap.o \ monolib_dfb_brush.o \ @@ -7329,6 +7352,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION____LOWLEVEL_SRC_OBJECTS_2 = \ monolib_utilsx11.o \ monolib_generic_icon.o \ monolib_paletteg.o \ + monolib_generic_textmeasure.o \ monolib_gtk1_app.o \ monolib_gtk1_bitmap.o \ monolib_gtk1_brush.o \ @@ -7386,6 +7410,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___LOWLEVEL_SRC_OBJECTS_2 = \ monolib_gtk_region.o \ monolib_gtk_renderer.o \ monolib_gtk_settings.o \ + monolib_gtk_textmeasure.o \ monolib_gtk_timer.o \ monolib_gtk_tooltip.o \ monolib_gtk_toplevel.o \ @@ -7423,6 +7448,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_3___LOWLEVEL_SRC_OBJECTS_2 = \ monolib_gtk_region.o \ monolib_gtk_renderer.o \ monolib_gtk_settings.o \ + monolib_gtk_textmeasure.o \ monolib_gtk_timer.o \ monolib_gtk_tooltip.o \ monolib_gtk_toplevel.o \ @@ -7439,6 +7465,7 @@ COND_TOOLKIT_MOTIF___LOWLEVEL_SRC_OBJECTS_2 = \ monolib_unix_fontutil.o \ monolib_uiactionx11.o \ monolib_utilsx11.o \ + monolib_generic_textmeasure.o \ monolib_x11_bitmap.o \ monolib_x11_brush.o \ monolib_x11_palette.o \ @@ -7489,6 +7516,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_2 = \ monolib_msw_region.o \ monolib_msw_renderer.o \ monolib_msw_settings.o \ + monolib_msw_textmeasure.o \ monolib_msw_tooltip.o \ monolib_msw_toplevel.o \ monolib_uiaction.o \ @@ -7551,6 +7579,7 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_2 = \ monolib_msw_region.o \ monolib_msw_renderer.o \ monolib_msw_settings.o \ + monolib_msw_textmeasure.o \ monolib_msw_tooltip.o \ monolib_msw_toplevel.o \ monolib_uiaction.o \ @@ -7569,6 +7598,7 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_2 = \ monolib_uiactionx11.o \ monolib_utilsx11.o \ monolib_generic_icon.o \ + monolib_generic_textmeasure.o \ monolib_generic_timer.o \ monolib_x11_app.o \ monolib_x11_bitmap.o \ @@ -7686,7 +7716,8 @@ COND_TOOLKIT_COCOA___GUI_SRC_OBJECTS_1 = \ monolib_generic_listctrl.o \ monolib_paletteg.o \ monolib_regiong.o \ - monolib_generic_statusbr.o + monolib_generic_statusbr.o \ + monolib_generic_textmeasure.o @COND_TOOLKIT_COCOA@__GUI_SRC_OBJECTS_1 = $(COND_TOOLKIT_COCOA___GUI_SRC_OBJECTS_1) COND_TOOLKIT_GTK_TOOLKIT_VERSION____GUI_SRC_OBJECTS_1 = \ monolib_generic_accel.o \ @@ -8081,6 +8112,7 @@ COND_TOOLKIT_PM___GUI_SRC_OBJECTS_1 = \ monolib_mdig.o \ monolib_prntdlgg.o \ monolib_generic_statusbr.o \ + monolib_generic_textmeasure.o \ monolib_os2_accel.o \ monolib_os2_app.o \ monolib_os2_bitmap.o \ @@ -8234,6 +8266,7 @@ COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_3 = \ monolib_generic_icon.o \ monolib_generic_imaglist.o \ monolib_mask.o \ + monolib_generic_textmeasure.o \ monolib_dfb_app.o \ monolib_dfb_bitmap.o \ monolib_dfb_brush.o \ @@ -8267,6 +8300,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION____LOWLEVEL_SRC_OBJECTS_3 = \ monolib_utilsx11.o \ monolib_generic_icon.o \ monolib_paletteg.o \ + monolib_generic_textmeasure.o \ monolib_gtk1_app.o \ monolib_gtk1_bitmap.o \ monolib_gtk1_brush.o \ @@ -8324,6 +8358,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___LOWLEVEL_SRC_OBJECTS_3 = \ monolib_gtk_region.o \ monolib_gtk_renderer.o \ monolib_gtk_settings.o \ + monolib_gtk_textmeasure.o \ monolib_gtk_timer.o \ monolib_gtk_tooltip.o \ monolib_gtk_toplevel.o \ @@ -8361,6 +8396,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_3___LOWLEVEL_SRC_OBJECTS_3 = \ monolib_gtk_region.o \ monolib_gtk_renderer.o \ monolib_gtk_settings.o \ + monolib_gtk_textmeasure.o \ monolib_gtk_timer.o \ monolib_gtk_tooltip.o \ monolib_gtk_toplevel.o \ @@ -8377,6 +8413,7 @@ COND_TOOLKIT_MOTIF___LOWLEVEL_SRC_OBJECTS_3 = \ monolib_unix_fontutil.o \ monolib_uiactionx11.o \ monolib_utilsx11.o \ + monolib_generic_textmeasure.o \ monolib_x11_bitmap.o \ monolib_x11_brush.o \ monolib_x11_palette.o \ @@ -8427,6 +8464,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_3 = \ monolib_msw_region.o \ monolib_msw_renderer.o \ monolib_msw_settings.o \ + monolib_msw_textmeasure.o \ monolib_msw_tooltip.o \ monolib_msw_toplevel.o \ monolib_uiaction.o \ @@ -8489,6 +8527,7 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_3 = \ monolib_msw_region.o \ monolib_msw_renderer.o \ monolib_msw_settings.o \ + monolib_msw_textmeasure.o \ monolib_msw_tooltip.o \ monolib_msw_toplevel.o \ monolib_uiaction.o \ @@ -8507,6 +8546,7 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_3 = \ monolib_uiactionx11.o \ monolib_utilsx11.o \ monolib_generic_icon.o \ + monolib_generic_textmeasure.o \ monolib_generic_timer.o \ monolib_x11_app.o \ monolib_x11_bitmap.o \ @@ -9409,6 +9449,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_2 = \ coredll_tbarbase.o \ coredll_textcmn.o \ coredll_textentrycmn.o \ + coredll_textmeasurecmn.o \ coredll_toplvcmn.o \ coredll_treebase.o \ coredll_uiactioncmn.o \ @@ -9626,6 +9667,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_2 = \ coredll_tbarbase.o \ coredll_textcmn.o \ coredll_textentrycmn.o \ + coredll_textmeasurecmn.o \ coredll_toplvcmn.o \ coredll_treebase.o \ coredll_uiactioncmn.o \ @@ -9681,6 +9723,7 @@ COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_4 = \ coredll_generic_icon.o \ coredll_generic_imaglist.o \ coredll_mask.o \ + coredll_generic_textmeasure.o \ coredll_dfb_app.o \ coredll_dfb_bitmap.o \ coredll_dfb_brush.o \ @@ -9714,6 +9757,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION____LOWLEVEL_SRC_OBJECTS_4 = \ coredll_utilsx11.o \ coredll_generic_icon.o \ coredll_paletteg.o \ + coredll_generic_textmeasure.o \ coredll_gtk1_app.o \ coredll_gtk1_bitmap.o \ coredll_gtk1_brush.o \ @@ -9771,6 +9815,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___LOWLEVEL_SRC_OBJECTS_4 = \ coredll_gtk_region.o \ coredll_gtk_renderer.o \ coredll_gtk_settings.o \ + coredll_gtk_textmeasure.o \ coredll_gtk_timer.o \ coredll_gtk_tooltip.o \ coredll_gtk_toplevel.o \ @@ -9808,6 +9853,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_3___LOWLEVEL_SRC_OBJECTS_4 = \ coredll_gtk_region.o \ coredll_gtk_renderer.o \ coredll_gtk_settings.o \ + coredll_gtk_textmeasure.o \ coredll_gtk_timer.o \ coredll_gtk_tooltip.o \ coredll_gtk_toplevel.o \ @@ -9824,6 +9870,7 @@ COND_TOOLKIT_MOTIF___LOWLEVEL_SRC_OBJECTS_4 = \ coredll_unix_fontutil.o \ coredll_uiactionx11.o \ coredll_utilsx11.o \ + coredll_generic_textmeasure.o \ coredll_x11_bitmap.o \ coredll_x11_brush.o \ coredll_x11_palette.o \ @@ -9874,6 +9921,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_4 = \ coredll_msw_region.o \ coredll_msw_renderer.o \ coredll_msw_settings.o \ + coredll_msw_textmeasure.o \ coredll_msw_tooltip.o \ coredll_msw_toplevel.o \ coredll_uiaction.o \ @@ -9936,6 +9984,7 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_4 = \ coredll_msw_region.o \ coredll_msw_renderer.o \ coredll_msw_settings.o \ + coredll_msw_textmeasure.o \ coredll_msw_tooltip.o \ coredll_msw_toplevel.o \ coredll_uiaction.o \ @@ -9954,6 +10003,7 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_4 = \ coredll_uiactionx11.o \ coredll_utilsx11.o \ coredll_generic_icon.o \ + coredll_generic_textmeasure.o \ coredll_generic_timer.o \ coredll_x11_app.o \ coredll_x11_bitmap.o \ @@ -10071,7 +10121,8 @@ COND_TOOLKIT_COCOA___GUI_SRC_OBJECTS_2 = \ coredll_generic_listctrl.o \ coredll_paletteg.o \ coredll_regiong.o \ - coredll_generic_statusbr.o + coredll_generic_statusbr.o \ + coredll_generic_textmeasure.o @COND_TOOLKIT_COCOA@__GUI_SRC_OBJECTS_2 = $(COND_TOOLKIT_COCOA___GUI_SRC_OBJECTS_2) COND_TOOLKIT_GTK_TOOLKIT_VERSION____GUI_SRC_OBJECTS_2 = \ coredll_generic_accel.o \ @@ -10466,6 +10517,7 @@ COND_TOOLKIT_PM___GUI_SRC_OBJECTS_2 = \ coredll_mdig.o \ coredll_prntdlgg.o \ coredll_generic_statusbr.o \ + coredll_generic_textmeasure.o \ coredll_os2_accel.o \ coredll_os2_app.o \ coredll_os2_bitmap.o \ @@ -10619,6 +10671,7 @@ COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_5 = \ coredll_generic_icon.o \ coredll_generic_imaglist.o \ coredll_mask.o \ + coredll_generic_textmeasure.o \ coredll_dfb_app.o \ coredll_dfb_bitmap.o \ coredll_dfb_brush.o \ @@ -10652,6 +10705,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION____LOWLEVEL_SRC_OBJECTS_5 = \ coredll_utilsx11.o \ coredll_generic_icon.o \ coredll_paletteg.o \ + coredll_generic_textmeasure.o \ coredll_gtk1_app.o \ coredll_gtk1_bitmap.o \ coredll_gtk1_brush.o \ @@ -10709,6 +10763,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___LOWLEVEL_SRC_OBJECTS_5 = \ coredll_gtk_region.o \ coredll_gtk_renderer.o \ coredll_gtk_settings.o \ + coredll_gtk_textmeasure.o \ coredll_gtk_timer.o \ coredll_gtk_tooltip.o \ coredll_gtk_toplevel.o \ @@ -10746,6 +10801,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_3___LOWLEVEL_SRC_OBJECTS_5 = \ coredll_gtk_region.o \ coredll_gtk_renderer.o \ coredll_gtk_settings.o \ + coredll_gtk_textmeasure.o \ coredll_gtk_timer.o \ coredll_gtk_tooltip.o \ coredll_gtk_toplevel.o \ @@ -10762,6 +10818,7 @@ COND_TOOLKIT_MOTIF___LOWLEVEL_SRC_OBJECTS_5 = \ coredll_unix_fontutil.o \ coredll_uiactionx11.o \ coredll_utilsx11.o \ + coredll_generic_textmeasure.o \ coredll_x11_bitmap.o \ coredll_x11_brush.o \ coredll_x11_palette.o \ @@ -10812,6 +10869,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_5 = \ coredll_msw_region.o \ coredll_msw_renderer.o \ coredll_msw_settings.o \ + coredll_msw_textmeasure.o \ coredll_msw_tooltip.o \ coredll_msw_toplevel.o \ coredll_uiaction.o \ @@ -10874,6 +10932,7 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_5 = \ coredll_msw_region.o \ coredll_msw_renderer.o \ coredll_msw_settings.o \ + coredll_msw_textmeasure.o \ coredll_msw_tooltip.o \ coredll_msw_toplevel.o \ coredll_uiaction.o \ @@ -10892,6 +10951,7 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_5 = \ coredll_uiactionx11.o \ coredll_utilsx11.o \ coredll_generic_icon.o \ + coredll_generic_textmeasure.o \ coredll_generic_timer.o \ coredll_x11_app.o \ coredll_x11_bitmap.o \ @@ -11058,6 +11118,7 @@ COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_3 = \ corelib_tbarbase.o \ corelib_textcmn.o \ corelib_textentrycmn.o \ + corelib_textmeasurecmn.o \ corelib_toplvcmn.o \ corelib_treebase.o \ corelib_uiactioncmn.o \ @@ -11275,6 +11336,7 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_3 = \ corelib_tbarbase.o \ corelib_textcmn.o \ corelib_textentrycmn.o \ + corelib_textmeasurecmn.o \ corelib_toplvcmn.o \ corelib_treebase.o \ corelib_uiactioncmn.o \ @@ -11330,6 +11392,7 @@ COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_6 = \ corelib_generic_icon.o \ corelib_generic_imaglist.o \ corelib_mask.o \ + corelib_generic_textmeasure.o \ corelib_dfb_app.o \ corelib_dfb_bitmap.o \ corelib_dfb_brush.o \ @@ -11363,6 +11426,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION____LOWLEVEL_SRC_OBJECTS_6 = \ corelib_utilsx11.o \ corelib_generic_icon.o \ corelib_paletteg.o \ + corelib_generic_textmeasure.o \ corelib_gtk1_app.o \ corelib_gtk1_bitmap.o \ corelib_gtk1_brush.o \ @@ -11420,6 +11484,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___LOWLEVEL_SRC_OBJECTS_6 = \ corelib_gtk_region.o \ corelib_gtk_renderer.o \ corelib_gtk_settings.o \ + corelib_gtk_textmeasure.o \ corelib_gtk_timer.o \ corelib_gtk_tooltip.o \ corelib_gtk_toplevel.o \ @@ -11457,6 +11522,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_3___LOWLEVEL_SRC_OBJECTS_6 = \ corelib_gtk_region.o \ corelib_gtk_renderer.o \ corelib_gtk_settings.o \ + corelib_gtk_textmeasure.o \ corelib_gtk_timer.o \ corelib_gtk_tooltip.o \ corelib_gtk_toplevel.o \ @@ -11473,6 +11539,7 @@ COND_TOOLKIT_MOTIF___LOWLEVEL_SRC_OBJECTS_6 = \ corelib_unix_fontutil.o \ corelib_uiactionx11.o \ corelib_utilsx11.o \ + corelib_generic_textmeasure.o \ corelib_x11_bitmap.o \ corelib_x11_brush.o \ corelib_x11_palette.o \ @@ -11523,6 +11590,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_6 = \ corelib_msw_region.o \ corelib_msw_renderer.o \ corelib_msw_settings.o \ + corelib_msw_textmeasure.o \ corelib_msw_tooltip.o \ corelib_msw_toplevel.o \ corelib_uiaction.o \ @@ -11585,6 +11653,7 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_6 = \ corelib_msw_region.o \ corelib_msw_renderer.o \ corelib_msw_settings.o \ + corelib_msw_textmeasure.o \ corelib_msw_tooltip.o \ corelib_msw_toplevel.o \ corelib_uiaction.o \ @@ -11603,6 +11672,7 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_6 = \ corelib_uiactionx11.o \ corelib_utilsx11.o \ corelib_generic_icon.o \ + corelib_generic_textmeasure.o \ corelib_generic_timer.o \ corelib_x11_app.o \ corelib_x11_bitmap.o \ @@ -11720,7 +11790,8 @@ COND_TOOLKIT_COCOA___GUI_SRC_OBJECTS_3 = \ corelib_generic_listctrl.o \ corelib_paletteg.o \ corelib_regiong.o \ - corelib_generic_statusbr.o + corelib_generic_statusbr.o \ + corelib_generic_textmeasure.o @COND_TOOLKIT_COCOA@__GUI_SRC_OBJECTS_3 = $(COND_TOOLKIT_COCOA___GUI_SRC_OBJECTS_3) COND_TOOLKIT_GTK_TOOLKIT_VERSION____GUI_SRC_OBJECTS_3 = \ corelib_generic_accel.o \ @@ -12115,6 +12186,7 @@ COND_TOOLKIT_PM___GUI_SRC_OBJECTS_3 = \ corelib_mdig.o \ corelib_prntdlgg.o \ corelib_generic_statusbr.o \ + corelib_generic_textmeasure.o \ corelib_os2_accel.o \ corelib_os2_app.o \ corelib_os2_bitmap.o \ @@ -12268,6 +12340,7 @@ COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_7 = \ corelib_generic_icon.o \ corelib_generic_imaglist.o \ corelib_mask.o \ + corelib_generic_textmeasure.o \ corelib_dfb_app.o \ corelib_dfb_bitmap.o \ corelib_dfb_brush.o \ @@ -12301,6 +12374,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION____LOWLEVEL_SRC_OBJECTS_7 = \ corelib_utilsx11.o \ corelib_generic_icon.o \ corelib_paletteg.o \ + corelib_generic_textmeasure.o \ corelib_gtk1_app.o \ corelib_gtk1_bitmap.o \ corelib_gtk1_brush.o \ @@ -12358,6 +12432,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_2___LOWLEVEL_SRC_OBJECTS_7 = \ corelib_gtk_region.o \ corelib_gtk_renderer.o \ corelib_gtk_settings.o \ + corelib_gtk_textmeasure.o \ corelib_gtk_timer.o \ corelib_gtk_tooltip.o \ corelib_gtk_toplevel.o \ @@ -12395,6 +12470,7 @@ COND_TOOLKIT_GTK_TOOLKIT_VERSION_3___LOWLEVEL_SRC_OBJECTS_7 = \ corelib_gtk_region.o \ corelib_gtk_renderer.o \ corelib_gtk_settings.o \ + corelib_gtk_textmeasure.o \ corelib_gtk_timer.o \ corelib_gtk_tooltip.o \ corelib_gtk_toplevel.o \ @@ -12411,6 +12487,7 @@ COND_TOOLKIT_MOTIF___LOWLEVEL_SRC_OBJECTS_7 = \ corelib_unix_fontutil.o \ corelib_uiactionx11.o \ corelib_utilsx11.o \ + corelib_generic_textmeasure.o \ corelib_x11_bitmap.o \ corelib_x11_brush.o \ corelib_x11_palette.o \ @@ -12461,6 +12538,7 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_7 = \ corelib_msw_region.o \ corelib_msw_renderer.o \ corelib_msw_settings.o \ + corelib_msw_textmeasure.o \ corelib_msw_tooltip.o \ corelib_msw_toplevel.o \ corelib_uiaction.o \ @@ -12523,6 +12601,7 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_7 = \ corelib_msw_region.o \ corelib_msw_renderer.o \ corelib_msw_settings.o \ + corelib_msw_textmeasure.o \ corelib_msw_tooltip.o \ corelib_msw_toplevel.o \ corelib_uiaction.o \ @@ -12541,6 +12620,7 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_7 = \ corelib_uiactionx11.o \ corelib_utilsx11.o \ corelib_generic_icon.o \ + corelib_generic_textmeasure.o \ corelib_generic_timer.o \ corelib_x11_app.o \ corelib_x11_bitmap.o \ @@ -14432,7 +14512,8 @@ COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS = \ monodll_fontpickerg.o \ monodll_generic_listctrl.o \ monodll_prntdlgg.o \ - monodll_generic_statusbr.o + monodll_generic_statusbr.o \ + monodll_generic_textmeasure.o @COND_PLATFORM_MACOSX_1@__OSX_CARBON_COCOA_SRC_OBJECTS = $(COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS) COND_PLATFORM_MACOSX_1___GTK_PLATFORM_SRC_OBJECTS = \ monodll_generic_caret.o \ @@ -14561,7 +14642,8 @@ COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS_12 = \ monolib_fontpickerg.o \ monolib_generic_listctrl.o \ monolib_prntdlgg.o \ - monolib_generic_statusbr.o + monolib_generic_statusbr.o \ + monolib_generic_textmeasure.o @COND_PLATFORM_MACOSX_1@__OSX_CARBON_COCOA_SRC_OBJECTS_12 = $(COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS_12) COND_PLATFORM_MACOSX_1___GTK_PLATFORM_SRC_OBJECTS_17 = \ monolib_generic_caret.o \ @@ -14690,7 +14772,8 @@ COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS_14 = \ coredll_fontpickerg.o \ coredll_generic_listctrl.o \ coredll_prntdlgg.o \ - coredll_generic_statusbr.o + coredll_generic_statusbr.o \ + coredll_generic_textmeasure.o @COND_PLATFORM_MACOSX_1@__OSX_CARBON_COCOA_SRC_OBJECTS_14 = $(COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS_14) COND_PLATFORM_MACOSX_1___GTK_PLATFORM_SRC_OBJECTS_1_1 = \ coredll_generic_caret.o \ @@ -14807,7 +14890,8 @@ COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS_1_0 = \ corelib_fontpickerg.o \ corelib_generic_listctrl.o \ corelib_prntdlgg.o \ - corelib_generic_statusbr.o + corelib_generic_statusbr.o \ + corelib_generic_textmeasure.o @COND_PLATFORM_MACOSX_1@__OSX_CARBON_COCOA_SRC_OBJECTS_1_0 = $(COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS_1_0) COND_PLATFORM_MACOSX_1___GTK_PLATFORM_SRC_OBJECTS_1_4 = \ corelib_generic_caret.o \ @@ -19065,6 +19149,12 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monodll_gtk_settings.o: $(srcdir)/src/gtk/settings.cpp $(MONODLL_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/settings.cpp +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@monodll_gtk_textmeasure.o: $(srcdir)/src/gtk/textmeasure.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/textmeasure.cpp + +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monodll_gtk_textmeasure.o: $(srcdir)/src/gtk/textmeasure.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/textmeasure.cpp + @COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@monodll_gtk_timer.o: $(srcdir)/src/gtk/timer.cpp $(MONODLL_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/timer.cpp @@ -19110,6 +19200,33 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monodll_gtk_dcscreen.o: $(srcdir)/src/gtk/dcscreen.cpp $(MONODLL_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk/dcscreen.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@monodll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONODLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monodll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONODLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@monodll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONODLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@monodll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@monodll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monodll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_MOTIF_USE_GUI_1@monodll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_MOTIF_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_X11_USE_GUI_1@monodll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_X11_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_DFB_USE_GUI_1@monodll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_DFB_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monodll_gtk1_app.o: $(srcdir)/src/gtk1/app.cpp $(MONODLL_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk1/app.cpp @@ -19485,6 +19602,12 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @COND_TOOLKIT_WINCE_USE_GUI_1@monodll_msw_settings.o: $(srcdir)/src/msw/settings.cpp $(MONODLL_ODEP) @COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/settings.cpp +@COND_TOOLKIT_MSW_USE_GUI_1@monodll_msw_textmeasure.o: $(srcdir)/src/msw/textmeasure.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/textmeasure.cpp + +@COND_TOOLKIT_WINCE_USE_GUI_1@monodll_msw_textmeasure.o: $(srcdir)/src/msw/textmeasure.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/textmeasure.cpp + @COND_TOOLKIT_MSW_USE_GUI_1@monodll_msw_tooltip.o: $(srcdir)/src/msw/tooltip.cpp $(MONODLL_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/tooltip.cpp @@ -21690,6 +21813,9 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @COND_USE_GUI_1@monodll_textentrycmn.o: $(srcdir)/src/common/textentrycmn.cpp $(MONODLL_ODEP) @COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/textentrycmn.cpp +@COND_USE_GUI_1@monodll_textmeasurecmn.o: $(srcdir)/src/common/textmeasurecmn.cpp $(MONODLL_ODEP) +@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/textmeasurecmn.cpp + @COND_USE_GUI_1@monodll_toplvcmn.o: $(srcdir)/src/common/toplvcmn.cpp $(MONODLL_ODEP) @COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/toplvcmn.cpp @@ -24768,6 +24894,12 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monolib_gtk_settings.o: $(srcdir)/src/gtk/settings.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/settings.cpp +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@monolib_gtk_textmeasure.o: $(srcdir)/src/gtk/textmeasure.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/textmeasure.cpp + +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monolib_gtk_textmeasure.o: $(srcdir)/src/gtk/textmeasure.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/textmeasure.cpp + @COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@monolib_gtk_timer.o: $(srcdir)/src/gtk/timer.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/timer.cpp @@ -24813,6 +24945,33 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@monolib_gtk_dcscreen.o: $(srcdir)/src/gtk/dcscreen.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk/dcscreen.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@monolib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONOLIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monolib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONOLIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@monolib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONOLIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@monolib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@monolib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monolib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_MOTIF_USE_GUI_1@monolib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_MOTIF_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_X11_USE_GUI_1@monolib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_X11_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_DFB_USE_GUI_1@monolib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_DFB_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monolib_gtk1_app.o: $(srcdir)/src/gtk1/app.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk1/app.cpp @@ -25188,6 +25347,12 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_WINCE_USE_GUI_1@monolib_msw_settings.o: $(srcdir)/src/msw/settings.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/settings.cpp +@COND_TOOLKIT_MSW_USE_GUI_1@monolib_msw_textmeasure.o: $(srcdir)/src/msw/textmeasure.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/textmeasure.cpp + +@COND_TOOLKIT_WINCE_USE_GUI_1@monolib_msw_textmeasure.o: $(srcdir)/src/msw/textmeasure.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/textmeasure.cpp + @COND_TOOLKIT_MSW_USE_GUI_1@monolib_msw_tooltip.o: $(srcdir)/src/msw/tooltip.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/tooltip.cpp @@ -27393,6 +27558,9 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @COND_USE_GUI_1@monolib_textentrycmn.o: $(srcdir)/src/common/textentrycmn.cpp $(MONOLIB_ODEP) @COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/textentrycmn.cpp +@COND_USE_GUI_1@monolib_textmeasurecmn.o: $(srcdir)/src/common/textmeasurecmn.cpp $(MONOLIB_ODEP) +@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/textmeasurecmn.cpp + @COND_USE_GUI_1@monolib_toplvcmn.o: $(srcdir)/src/common/toplvcmn.cpp $(MONOLIB_ODEP) @COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/toplvcmn.cpp @@ -30636,6 +30804,12 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@coredll_gtk_settings.o: $(srcdir)/src/gtk/settings.cpp $(COREDLL_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk/settings.cpp +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@coredll_gtk_textmeasure.o: $(srcdir)/src/gtk/textmeasure.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk/textmeasure.cpp + +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@coredll_gtk_textmeasure.o: $(srcdir)/src/gtk/textmeasure.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk/textmeasure.cpp + @COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@coredll_gtk_timer.o: $(srcdir)/src/gtk/timer.cpp $(COREDLL_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk/timer.cpp @@ -30681,6 +30855,33 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@coredll_gtk_dcscreen.o: $(srcdir)/src/gtk/dcscreen.cpp $(COREDLL_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk/dcscreen.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@coredll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(COREDLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@coredll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(COREDLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@coredll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(COREDLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@coredll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@coredll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@coredll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_MOTIF_USE_GUI_1@coredll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_MOTIF_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_X11_USE_GUI_1@coredll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_X11_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_DFB_USE_GUI_1@coredll_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_DFB_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@coredll_gtk1_app.o: $(srcdir)/src/gtk1/app.cpp $(COREDLL_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk1/app.cpp @@ -31056,6 +31257,12 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP) @COND_TOOLKIT_WINCE_USE_GUI_1@coredll_msw_settings.o: $(srcdir)/src/msw/settings.cpp $(COREDLL_ODEP) @COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/settings.cpp +@COND_TOOLKIT_MSW_USE_GUI_1@coredll_msw_textmeasure.o: $(srcdir)/src/msw/textmeasure.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/textmeasure.cpp + +@COND_TOOLKIT_WINCE_USE_GUI_1@coredll_msw_textmeasure.o: $(srcdir)/src/msw/textmeasure.cpp $(COREDLL_ODEP) +@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/textmeasure.cpp + @COND_TOOLKIT_MSW_USE_GUI_1@coredll_msw_tooltip.o: $(srcdir)/src/msw/tooltip.cpp $(COREDLL_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/tooltip.cpp @@ -33261,6 +33468,9 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP) @COND_USE_GUI_1@coredll_textentrycmn.o: $(srcdir)/src/common/textentrycmn.cpp $(COREDLL_ODEP) @COND_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/textentrycmn.cpp +@COND_USE_GUI_1@coredll_textmeasurecmn.o: $(srcdir)/src/common/textmeasurecmn.cpp $(COREDLL_ODEP) +@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/textmeasurecmn.cpp + @COND_USE_GUI_1@coredll_toplvcmn.o: $(srcdir)/src/common/toplvcmn.cpp $(COREDLL_ODEP) @COND_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/toplvcmn.cpp @@ -34887,6 +35097,12 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@corelib_gtk_settings.o: $(srcdir)/src/gtk/settings.cpp $(CORELIB_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk/settings.cpp +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@corelib_gtk_textmeasure.o: $(srcdir)/src/gtk/textmeasure.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk/textmeasure.cpp + +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@corelib_gtk_textmeasure.o: $(srcdir)/src/gtk/textmeasure.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk/textmeasure.cpp + @COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@corelib_gtk_timer.o: $(srcdir)/src/gtk/timer.cpp $(CORELIB_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_3_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk/timer.cpp @@ -34932,6 +35148,33 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@corelib_gtk_dcscreen.o: $(srcdir)/src/gtk/dcscreen.cpp $(CORELIB_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION_2_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk/dcscreen.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@corelib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(CORELIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@corelib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(CORELIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@corelib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(CORELIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@corelib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@corelib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@corelib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_MOTIF_USE_GUI_1@corelib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_MOTIF_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_X11_USE_GUI_1@corelib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_X11_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + +@COND_TOOLKIT_DFB_USE_GUI_1@corelib_generic_textmeasure.o: $(srcdir)/src/generic/textmeasure.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_DFB_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/textmeasure.cpp + @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@corelib_gtk1_app.o: $(srcdir)/src/gtk1/app.cpp $(CORELIB_ODEP) @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk1/app.cpp @@ -35307,6 +35550,12 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP) @COND_TOOLKIT_WINCE_USE_GUI_1@corelib_msw_settings.o: $(srcdir)/src/msw/settings.cpp $(CORELIB_ODEP) @COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/settings.cpp +@COND_TOOLKIT_MSW_USE_GUI_1@corelib_msw_textmeasure.o: $(srcdir)/src/msw/textmeasure.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/textmeasure.cpp + +@COND_TOOLKIT_WINCE_USE_GUI_1@corelib_msw_textmeasure.o: $(srcdir)/src/msw/textmeasure.cpp $(CORELIB_ODEP) +@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/textmeasure.cpp + @COND_TOOLKIT_MSW_USE_GUI_1@corelib_msw_tooltip.o: $(srcdir)/src/msw/tooltip.cpp $(CORELIB_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/tooltip.cpp @@ -37512,6 +37761,9 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP) @COND_USE_GUI_1@corelib_textentrycmn.o: $(srcdir)/src/common/textentrycmn.cpp $(CORELIB_ODEP) @COND_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/textentrycmn.cpp +@COND_USE_GUI_1@corelib_textmeasurecmn.o: $(srcdir)/src/common/textmeasurecmn.cpp $(CORELIB_ODEP) +@COND_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/textmeasurecmn.cpp + @COND_USE_GUI_1@corelib_toplvcmn.o: $(srcdir)/src/common/toplvcmn.cpp $(CORELIB_ODEP) @COND_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/toplvcmn.cpp diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index 2084242cf8..5a3bbffc34 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -737,6 +737,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/common/tbarbase.cpp src/common/textcmn.cpp src/common/textentrycmn.cpp + src/common/textmeasurecmn.cpp src/common/toplvcmn.cpp src/common/treebase.cpp src/common/uiactioncmn.cpp @@ -1082,6 +1083,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/gtk/region.cpp src/gtk/renderer.cpp src/gtk/settings.cpp + src/gtk/textmeasure.cpp src/gtk/timer.cpp src/gtk/tooltip.cpp src/gtk/toplevel.cpp @@ -1255,6 +1257,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! $(XWIN_LOWLEVEL_SRC) src/generic/icon.cpp src/generic/paletteg.cpp + src/generic/textmeasure.cpp src/gtk1/app.cpp src/gtk1/bitmap.cpp src/gtk1/brush.cpp @@ -1416,6 +1419,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! $(XWIN_LOWLEVEL_SRC) + src/generic/textmeasure.cpp src/x11/bitmap.cpp src/x11/brush.cpp src/x11/palette.cpp @@ -1581,6 +1585,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! $(XWIN_LOWLEVEL_SRC) src/generic/icon.cpp + src/generic/textmeasure.cpp src/generic/timer.cpp src/x11/app.cpp src/x11/bitmap.cpp @@ -1692,6 +1697,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/msw/region.cpp src/msw/renderer.cpp src/msw/settings.cpp + src/msw/textmeasure.cpp src/msw/tooltip.cpp src/msw/toplevel.cpp src/msw/uiaction.cpp @@ -1965,6 +1971,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/generic/icon.cpp src/generic/imaglist.cpp src/generic/mask.cpp + src/generic/textmeasure.cpp src/dfb/app.cpp src/dfb/bitmap.cpp src/dfb/brush.cpp @@ -2041,6 +2048,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/generic/mdig.cpp src/generic/prntdlgg.cpp src/generic/statusbr.cpp + src/generic/textmeasure.cpp src/os2/accel.cpp src/os2/app.cpp @@ -2316,6 +2324,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/generic/listctrl.cpp src/generic/prntdlgg.cpp src/generic/statusbr.cpp + src/generic/textmeasure.cpp @@ -2658,6 +2667,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/generic/paletteg.cpp src/generic/regiong.cpp src/generic/statusbr.cpp + src/generic/textmeasure.cpp wx/cocoa/NSApplication.h diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc index e6fb7888a3..ab39f43537 100644 --- a/build/msw/makefile.bcc +++ b/build/msw/makefile.bcc @@ -1796,6 +1796,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_region.obj \ $(OBJS)\monodll_renderer.obj \ $(OBJS)\monodll_settings.obj \ + $(OBJS)\monodll_textmeasure.obj \ $(OBJS)\monodll_tooltip.obj \ $(OBJS)\monodll_toplevel.obj \ $(OBJS)\monodll_uiaction.obj \ @@ -1981,6 +1982,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_tbarbase.obj \ $(OBJS)\monodll_textcmn.obj \ $(OBJS)\monodll_textentrycmn.obj \ + $(OBJS)\monodll_textmeasurecmn.obj \ $(OBJS)\monodll_toplvcmn.obj \ $(OBJS)\monodll_treebase.obj \ $(OBJS)\monodll_uiactioncmn.obj \ @@ -2071,6 +2073,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_region.obj \ $(OBJS)\monodll_renderer.obj \ $(OBJS)\monodll_settings.obj \ + $(OBJS)\monodll_textmeasure.obj \ $(OBJS)\monodll_tooltip.obj \ $(OBJS)\monodll_toplevel.obj \ $(OBJS)\monodll_uiaction.obj \ @@ -2250,6 +2253,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_tbarbase.obj \ $(OBJS)\monodll_textcmn.obj \ $(OBJS)\monodll_textentrycmn.obj \ + $(OBJS)\monodll_textmeasurecmn.obj \ $(OBJS)\monodll_toplvcmn.obj \ $(OBJS)\monodll_treebase.obj \ $(OBJS)\monodll_uiactioncmn.obj \ @@ -2587,6 +2591,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_region.obj \ $(OBJS)\monolib_renderer.obj \ $(OBJS)\monolib_settings.obj \ + $(OBJS)\monolib_textmeasure.obj \ $(OBJS)\monolib_tooltip.obj \ $(OBJS)\monolib_toplevel.obj \ $(OBJS)\monolib_uiaction.obj \ @@ -2772,6 +2777,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_tbarbase.obj \ $(OBJS)\monolib_textcmn.obj \ $(OBJS)\monolib_textentrycmn.obj \ + $(OBJS)\monolib_textmeasurecmn.obj \ $(OBJS)\monolib_toplvcmn.obj \ $(OBJS)\monolib_treebase.obj \ $(OBJS)\monolib_uiactioncmn.obj \ @@ -2862,6 +2868,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_region.obj \ $(OBJS)\monolib_renderer.obj \ $(OBJS)\monolib_settings.obj \ + $(OBJS)\monolib_textmeasure.obj \ $(OBJS)\monolib_tooltip.obj \ $(OBJS)\monolib_toplevel.obj \ $(OBJS)\monolib_uiaction.obj \ @@ -3041,6 +3048,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_tbarbase.obj \ $(OBJS)\monolib_textcmn.obj \ $(OBJS)\monolib_textentrycmn.obj \ + $(OBJS)\monolib_textmeasurecmn.obj \ $(OBJS)\monolib_toplvcmn.obj \ $(OBJS)\monolib_treebase.obj \ $(OBJS)\monolib_uiactioncmn.obj \ @@ -3259,6 +3267,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_region.obj \ $(OBJS)\coredll_renderer.obj \ $(OBJS)\coredll_settings.obj \ + $(OBJS)\coredll_textmeasure.obj \ $(OBJS)\coredll_tooltip.obj \ $(OBJS)\coredll_toplevel.obj \ $(OBJS)\coredll_uiaction.obj \ @@ -3444,6 +3453,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_tbarbase.obj \ $(OBJS)\coredll_textcmn.obj \ $(OBJS)\coredll_textentrycmn.obj \ + $(OBJS)\coredll_textmeasurecmn.obj \ $(OBJS)\coredll_toplvcmn.obj \ $(OBJS)\coredll_treebase.obj \ $(OBJS)\coredll_uiactioncmn.obj \ @@ -3534,6 +3544,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_region.obj \ $(OBJS)\coredll_renderer.obj \ $(OBJS)\coredll_settings.obj \ + $(OBJS)\coredll_textmeasure.obj \ $(OBJS)\coredll_tooltip.obj \ $(OBJS)\coredll_toplevel.obj \ $(OBJS)\coredll_uiaction.obj \ @@ -3713,6 +3724,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_tbarbase.obj \ $(OBJS)\coredll_textcmn.obj \ $(OBJS)\coredll_textentrycmn.obj \ + $(OBJS)\coredll_textmeasurecmn.obj \ $(OBJS)\coredll_toplvcmn.obj \ $(OBJS)\coredll_treebase.obj \ $(OBJS)\coredll_uiactioncmn.obj \ @@ -3807,6 +3819,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_region.obj \ $(OBJS)\corelib_renderer.obj \ $(OBJS)\corelib_settings.obj \ + $(OBJS)\corelib_textmeasure.obj \ $(OBJS)\corelib_tooltip.obj \ $(OBJS)\corelib_toplevel.obj \ $(OBJS)\corelib_uiaction.obj \ @@ -3992,6 +4005,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_tbarbase.obj \ $(OBJS)\corelib_textcmn.obj \ $(OBJS)\corelib_textentrycmn.obj \ + $(OBJS)\corelib_textmeasurecmn.obj \ $(OBJS)\corelib_toplvcmn.obj \ $(OBJS)\corelib_treebase.obj \ $(OBJS)\corelib_uiactioncmn.obj \ @@ -4082,6 +4096,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_region.obj \ $(OBJS)\corelib_renderer.obj \ $(OBJS)\corelib_settings.obj \ + $(OBJS)\corelib_textmeasure.obj \ $(OBJS)\corelib_tooltip.obj \ $(OBJS)\corelib_toplevel.obj \ $(OBJS)\corelib_uiaction.obj \ @@ -4261,6 +4276,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_tbarbase.obj \ $(OBJS)\corelib_textcmn.obj \ $(OBJS)\corelib_textentrycmn.obj \ + $(OBJS)\corelib_textmeasurecmn.obj \ $(OBJS)\corelib_toplvcmn.obj \ $(OBJS)\corelib_treebase.obj \ $(OBJS)\corelib_uiactioncmn.obj \ @@ -7496,6 +7512,11 @@ $(OBJS)\monodll_settings.obj: ..\..\src\msw\settings.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\monodll_textmeasure.obj: ..\..\src\msw\textmeasure.cpp + $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\textmeasure.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\monodll_tooltip.obj: ..\..\src\msw\tooltip.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\tooltip.cpp !endif @@ -8151,6 +8172,11 @@ $(OBJS)\monodll_textentrycmn.obj: ..\..\src\common\textentrycmn.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\monodll_textmeasurecmn.obj: ..\..\src\common\textmeasurecmn.cpp + $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\textmeasurecmn.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\monodll_toplvcmn.obj: ..\..\src\common\toplvcmn.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) ..\..\src\common\toplvcmn.cpp !endif @@ -9922,6 +9948,11 @@ $(OBJS)\monolib_settings.obj: ..\..\src\msw\settings.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\monolib_textmeasure.obj: ..\..\src\msw\textmeasure.cpp + $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\textmeasure.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\monolib_tooltip.obj: ..\..\src\msw\tooltip.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\tooltip.cpp !endif @@ -10577,6 +10608,11 @@ $(OBJS)\monolib_textentrycmn.obj: ..\..\src\common\textentrycmn.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\monolib_textmeasurecmn.obj: ..\..\src\common\textmeasurecmn.cpp + $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\textmeasurecmn.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\monolib_toplvcmn.obj: ..\..\src\common\toplvcmn.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\toplvcmn.cpp !endif @@ -12312,6 +12348,11 @@ $(OBJS)\coredll_settings.obj: ..\..\src\msw\settings.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\coredll_textmeasure.obj: ..\..\src\msw\textmeasure.cpp + $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\textmeasure.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\coredll_tooltip.obj: ..\..\src\msw\tooltip.cpp $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\tooltip.cpp !endif @@ -12967,6 +13008,11 @@ $(OBJS)\coredll_textentrycmn.obj: ..\..\src\common\textentrycmn.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\coredll_textmeasurecmn.obj: ..\..\src\common\textmeasurecmn.cpp + $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\common\textmeasurecmn.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\coredll_toplvcmn.obj: ..\..\src\common\toplvcmn.cpp $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) ..\..\src\common\toplvcmn.cpp !endif @@ -13732,6 +13778,11 @@ $(OBJS)\corelib_settings.obj: ..\..\src\msw\settings.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\corelib_textmeasure.obj: ..\..\src\msw\textmeasure.cpp + $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\textmeasure.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\corelib_tooltip.obj: ..\..\src\msw\tooltip.cpp $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\tooltip.cpp !endif @@ -14387,6 +14438,11 @@ $(OBJS)\corelib_textentrycmn.obj: ..\..\src\common\textentrycmn.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\corelib_textmeasurecmn.obj: ..\..\src\common\textmeasurecmn.cpp + $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\common\textmeasurecmn.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\corelib_toplvcmn.obj: ..\..\src\common\toplvcmn.cpp $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) ..\..\src\common\toplvcmn.cpp !endif diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index 7200c59fe4..80c4ad14de 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -1809,6 +1809,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_region.o \ $(OBJS)\monodll_renderer.o \ $(OBJS)\monodll_settings.o \ + $(OBJS)\monodll_textmeasure.o \ $(OBJS)\monodll_tooltip.o \ $(OBJS)\monodll_toplevel.o \ $(OBJS)\monodll_uiaction.o \ @@ -1994,6 +1995,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_tbarbase.o \ $(OBJS)\monodll_textcmn.o \ $(OBJS)\monodll_textentrycmn.o \ + $(OBJS)\monodll_textmeasurecmn.o \ $(OBJS)\monodll_toplvcmn.o \ $(OBJS)\monodll_treebase.o \ $(OBJS)\monodll_uiactioncmn.o \ @@ -2086,6 +2088,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_region.o \ $(OBJS)\monodll_renderer.o \ $(OBJS)\monodll_settings.o \ + $(OBJS)\monodll_textmeasure.o \ $(OBJS)\monodll_tooltip.o \ $(OBJS)\monodll_toplevel.o \ $(OBJS)\monodll_uiaction.o \ @@ -2265,6 +2268,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_tbarbase.o \ $(OBJS)\monodll_textcmn.o \ $(OBJS)\monodll_textentrycmn.o \ + $(OBJS)\monodll_textmeasurecmn.o \ $(OBJS)\monodll_toplvcmn.o \ $(OBJS)\monodll_treebase.o \ $(OBJS)\monodll_uiactioncmn.o \ @@ -2606,6 +2610,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_region.o \ $(OBJS)\monolib_renderer.o \ $(OBJS)\monolib_settings.o \ + $(OBJS)\monolib_textmeasure.o \ $(OBJS)\monolib_tooltip.o \ $(OBJS)\monolib_toplevel.o \ $(OBJS)\monolib_uiaction.o \ @@ -2791,6 +2796,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_tbarbase.o \ $(OBJS)\monolib_textcmn.o \ $(OBJS)\monolib_textentrycmn.o \ + $(OBJS)\monolib_textmeasurecmn.o \ $(OBJS)\monolib_toplvcmn.o \ $(OBJS)\monolib_treebase.o \ $(OBJS)\monolib_uiactioncmn.o \ @@ -2883,6 +2889,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_region.o \ $(OBJS)\monolib_renderer.o \ $(OBJS)\monolib_settings.o \ + $(OBJS)\monolib_textmeasure.o \ $(OBJS)\monolib_tooltip.o \ $(OBJS)\monolib_toplevel.o \ $(OBJS)\monolib_uiaction.o \ @@ -3062,6 +3069,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_tbarbase.o \ $(OBJS)\monolib_textcmn.o \ $(OBJS)\monolib_textentrycmn.o \ + $(OBJS)\monolib_textmeasurecmn.o \ $(OBJS)\monolib_toplvcmn.o \ $(OBJS)\monolib_treebase.o \ $(OBJS)\monolib_uiactioncmn.o \ @@ -3294,6 +3302,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_region.o \ $(OBJS)\coredll_renderer.o \ $(OBJS)\coredll_settings.o \ + $(OBJS)\coredll_textmeasure.o \ $(OBJS)\coredll_tooltip.o \ $(OBJS)\coredll_toplevel.o \ $(OBJS)\coredll_uiaction.o \ @@ -3479,6 +3488,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_tbarbase.o \ $(OBJS)\coredll_textcmn.o \ $(OBJS)\coredll_textentrycmn.o \ + $(OBJS)\coredll_textmeasurecmn.o \ $(OBJS)\coredll_toplvcmn.o \ $(OBJS)\coredll_treebase.o \ $(OBJS)\coredll_uiactioncmn.o \ @@ -3571,6 +3581,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_region.o \ $(OBJS)\coredll_renderer.o \ $(OBJS)\coredll_settings.o \ + $(OBJS)\coredll_textmeasure.o \ $(OBJS)\coredll_tooltip.o \ $(OBJS)\coredll_toplevel.o \ $(OBJS)\coredll_uiaction.o \ @@ -3750,6 +3761,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_tbarbase.o \ $(OBJS)\coredll_textcmn.o \ $(OBJS)\coredll_textentrycmn.o \ + $(OBJS)\coredll_textmeasurecmn.o \ $(OBJS)\coredll_toplvcmn.o \ $(OBJS)\coredll_treebase.o \ $(OBJS)\coredll_uiactioncmn.o \ @@ -3850,6 +3862,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_region.o \ $(OBJS)\corelib_renderer.o \ $(OBJS)\corelib_settings.o \ + $(OBJS)\corelib_textmeasure.o \ $(OBJS)\corelib_tooltip.o \ $(OBJS)\corelib_toplevel.o \ $(OBJS)\corelib_uiaction.o \ @@ -4035,6 +4048,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_tbarbase.o \ $(OBJS)\corelib_textcmn.o \ $(OBJS)\corelib_textentrycmn.o \ + $(OBJS)\corelib_textmeasurecmn.o \ $(OBJS)\corelib_toplvcmn.o \ $(OBJS)\corelib_treebase.o \ $(OBJS)\corelib_uiactioncmn.o \ @@ -4127,6 +4141,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_region.o \ $(OBJS)\corelib_renderer.o \ $(OBJS)\corelib_settings.o \ + $(OBJS)\corelib_textmeasure.o \ $(OBJS)\corelib_tooltip.o \ $(OBJS)\corelib_toplevel.o \ $(OBJS)\corelib_uiaction.o \ @@ -4306,6 +4321,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_tbarbase.o \ $(OBJS)\corelib_textcmn.o \ $(OBJS)\corelib_textentrycmn.o \ + $(OBJS)\corelib_textmeasurecmn.o \ $(OBJS)\corelib_toplvcmn.o \ $(OBJS)\corelib_treebase.o \ $(OBJS)\corelib_uiactioncmn.o \ @@ -7665,6 +7681,11 @@ $(OBJS)\monodll_settings.o: ../../src/msw/settings.cpp endif ifeq ($(USE_GUI),1) +$(OBJS)\monodll_textmeasure.o: ../../src/msw/textmeasure.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< +endif + +ifeq ($(USE_GUI),1) $(OBJS)\monodll_tooltip.o: ../../src/msw/tooltip.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< endif @@ -8320,6 +8341,11 @@ $(OBJS)\monodll_textentrycmn.o: ../../src/common/textentrycmn.cpp endif ifeq ($(USE_GUI),1) +$(OBJS)\monodll_textmeasurecmn.o: ../../src/common/textmeasurecmn.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< +endif + +ifeq ($(USE_GUI),1) $(OBJS)\monodll_toplvcmn.o: ../../src/common/toplvcmn.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< endif @@ -10091,6 +10117,11 @@ $(OBJS)\monolib_settings.o: ../../src/msw/settings.cpp endif ifeq ($(USE_GUI),1) +$(OBJS)\monolib_textmeasure.o: ../../src/msw/textmeasure.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< +endif + +ifeq ($(USE_GUI),1) $(OBJS)\monolib_tooltip.o: ../../src/msw/tooltip.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< endif @@ -10746,6 +10777,11 @@ $(OBJS)\monolib_textentrycmn.o: ../../src/common/textentrycmn.cpp endif ifeq ($(USE_GUI),1) +$(OBJS)\monolib_textmeasurecmn.o: ../../src/common/textmeasurecmn.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< +endif + +ifeq ($(USE_GUI),1) $(OBJS)\monolib_toplvcmn.o: ../../src/common/toplvcmn.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< endif @@ -12481,6 +12517,11 @@ $(OBJS)\coredll_settings.o: ../../src/msw/settings.cpp endif ifeq ($(USE_GUI),1) +$(OBJS)\coredll_textmeasure.o: ../../src/msw/textmeasure.cpp + $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< +endif + +ifeq ($(USE_GUI),1) $(OBJS)\coredll_tooltip.o: ../../src/msw/tooltip.cpp $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< endif @@ -13136,6 +13177,11 @@ $(OBJS)\coredll_textentrycmn.o: ../../src/common/textentrycmn.cpp endif ifeq ($(USE_GUI),1) +$(OBJS)\coredll_textmeasurecmn.o: ../../src/common/textmeasurecmn.cpp + $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< +endif + +ifeq ($(USE_GUI),1) $(OBJS)\coredll_toplvcmn.o: ../../src/common/toplvcmn.cpp $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< endif @@ -13901,6 +13947,11 @@ $(OBJS)\corelib_settings.o: ../../src/msw/settings.cpp endif ifeq ($(USE_GUI),1) +$(OBJS)\corelib_textmeasure.o: ../../src/msw/textmeasure.cpp + $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $< +endif + +ifeq ($(USE_GUI),1) $(OBJS)\corelib_tooltip.o: ../../src/msw/tooltip.cpp $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $< endif @@ -14556,6 +14607,11 @@ $(OBJS)\corelib_textentrycmn.o: ../../src/common/textentrycmn.cpp endif ifeq ($(USE_GUI),1) +$(OBJS)\corelib_textmeasurecmn.o: ../../src/common/textmeasurecmn.cpp + $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $< +endif + +ifeq ($(USE_GUI),1) $(OBJS)\corelib_toplvcmn.o: ../../src/common/toplvcmn.cpp $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $< endif diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index 6a6aafad93..8951e51d02 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -2088,6 +2088,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_region.obj \ $(OBJS)\monodll_renderer.obj \ $(OBJS)\monodll_settings.obj \ + $(OBJS)\monodll_textmeasure.obj \ $(OBJS)\monodll_tooltip.obj \ $(OBJS)\monodll_toplevel.obj \ $(OBJS)\monodll_uiaction.obj \ @@ -2273,6 +2274,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_tbarbase.obj \ $(OBJS)\monodll_textcmn.obj \ $(OBJS)\monodll_textentrycmn.obj \ + $(OBJS)\monodll_textmeasurecmn.obj \ $(OBJS)\monodll_toplvcmn.obj \ $(OBJS)\monodll_treebase.obj \ $(OBJS)\monodll_uiactioncmn.obj \ @@ -2363,6 +2365,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_region.obj \ $(OBJS)\monodll_renderer.obj \ $(OBJS)\monodll_settings.obj \ + $(OBJS)\monodll_textmeasure.obj \ $(OBJS)\monodll_tooltip.obj \ $(OBJS)\monodll_toplevel.obj \ $(OBJS)\monodll_uiaction.obj \ @@ -2542,6 +2545,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = \ $(OBJS)\monodll_tbarbase.obj \ $(OBJS)\monodll_textcmn.obj \ $(OBJS)\monodll_textentrycmn.obj \ + $(OBJS)\monodll_textmeasurecmn.obj \ $(OBJS)\monodll_toplvcmn.obj \ $(OBJS)\monodll_treebase.obj \ $(OBJS)\monodll_uiactioncmn.obj \ @@ -2885,6 +2889,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_region.obj \ $(OBJS)\monolib_renderer.obj \ $(OBJS)\monolib_settings.obj \ + $(OBJS)\monolib_textmeasure.obj \ $(OBJS)\monolib_tooltip.obj \ $(OBJS)\monolib_toplevel.obj \ $(OBJS)\monolib_uiaction.obj \ @@ -3070,6 +3075,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_tbarbase.obj \ $(OBJS)\monolib_textcmn.obj \ $(OBJS)\monolib_textentrycmn.obj \ + $(OBJS)\monolib_textmeasurecmn.obj \ $(OBJS)\monolib_toplvcmn.obj \ $(OBJS)\monolib_treebase.obj \ $(OBJS)\monolib_uiactioncmn.obj \ @@ -3160,6 +3166,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_region.obj \ $(OBJS)\monolib_renderer.obj \ $(OBJS)\monolib_settings.obj \ + $(OBJS)\monolib_textmeasure.obj \ $(OBJS)\monolib_tooltip.obj \ $(OBJS)\monolib_toplevel.obj \ $(OBJS)\monolib_uiaction.obj \ @@ -3339,6 +3346,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \ $(OBJS)\monolib_tbarbase.obj \ $(OBJS)\monolib_textcmn.obj \ $(OBJS)\monolib_textentrycmn.obj \ + $(OBJS)\monolib_textmeasurecmn.obj \ $(OBJS)\monolib_toplvcmn.obj \ $(OBJS)\monolib_treebase.obj \ $(OBJS)\monolib_uiactioncmn.obj \ @@ -3623,6 +3631,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_region.obj \ $(OBJS)\coredll_renderer.obj \ $(OBJS)\coredll_settings.obj \ + $(OBJS)\coredll_textmeasure.obj \ $(OBJS)\coredll_tooltip.obj \ $(OBJS)\coredll_toplevel.obj \ $(OBJS)\coredll_uiaction.obj \ @@ -3808,6 +3817,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_tbarbase.obj \ $(OBJS)\coredll_textcmn.obj \ $(OBJS)\coredll_textentrycmn.obj \ + $(OBJS)\coredll_textmeasurecmn.obj \ $(OBJS)\coredll_toplvcmn.obj \ $(OBJS)\coredll_treebase.obj \ $(OBJS)\coredll_uiactioncmn.obj \ @@ -3898,6 +3908,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_region.obj \ $(OBJS)\coredll_renderer.obj \ $(OBJS)\coredll_settings.obj \ + $(OBJS)\coredll_textmeasure.obj \ $(OBJS)\coredll_tooltip.obj \ $(OBJS)\coredll_toplevel.obj \ $(OBJS)\coredll_uiaction.obj \ @@ -4077,6 +4088,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \ $(OBJS)\coredll_tbarbase.obj \ $(OBJS)\coredll_textcmn.obj \ $(OBJS)\coredll_textentrycmn.obj \ + $(OBJS)\coredll_textmeasurecmn.obj \ $(OBJS)\coredll_toplvcmn.obj \ $(OBJS)\coredll_treebase.obj \ $(OBJS)\coredll_uiactioncmn.obj \ @@ -4177,6 +4189,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_region.obj \ $(OBJS)\corelib_renderer.obj \ $(OBJS)\corelib_settings.obj \ + $(OBJS)\corelib_textmeasure.obj \ $(OBJS)\corelib_tooltip.obj \ $(OBJS)\corelib_toplevel.obj \ $(OBJS)\corelib_uiaction.obj \ @@ -4362,6 +4375,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_tbarbase.obj \ $(OBJS)\corelib_textcmn.obj \ $(OBJS)\corelib_textentrycmn.obj \ + $(OBJS)\corelib_textmeasurecmn.obj \ $(OBJS)\corelib_toplvcmn.obj \ $(OBJS)\corelib_treebase.obj \ $(OBJS)\corelib_uiactioncmn.obj \ @@ -4452,6 +4466,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_region.obj \ $(OBJS)\corelib_renderer.obj \ $(OBJS)\corelib_settings.obj \ + $(OBJS)\corelib_textmeasure.obj \ $(OBJS)\corelib_tooltip.obj \ $(OBJS)\corelib_toplevel.obj \ $(OBJS)\corelib_uiaction.obj \ @@ -4631,6 +4646,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \ $(OBJS)\corelib_tbarbase.obj \ $(OBJS)\corelib_textcmn.obj \ $(OBJS)\corelib_textentrycmn.obj \ + $(OBJS)\corelib_textmeasurecmn.obj \ $(OBJS)\corelib_toplvcmn.obj \ $(OBJS)\corelib_treebase.obj \ $(OBJS)\corelib_uiactioncmn.obj \ @@ -8180,6 +8196,11 @@ $(OBJS)\monodll_settings.obj: ..\..\src\msw\settings.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\monodll_textmeasure.obj: ..\..\src\msw\textmeasure.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\textmeasure.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\monodll_tooltip.obj: ..\..\src\msw\tooltip.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\msw\tooltip.cpp !endif @@ -8835,6 +8856,11 @@ $(OBJS)\monodll_textentrycmn.obj: ..\..\src\common\textentrycmn.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\monodll_textmeasurecmn.obj: ..\..\src\common\textmeasurecmn.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\textmeasurecmn.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\monodll_toplvcmn.obj: ..\..\src\common\toplvcmn.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) ..\..\src\common\toplvcmn.cpp !endif @@ -10606,6 +10632,11 @@ $(OBJS)\monolib_settings.obj: ..\..\src\msw\settings.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\monolib_textmeasure.obj: ..\..\src\msw\textmeasure.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\textmeasure.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\monolib_tooltip.obj: ..\..\src\msw\tooltip.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\msw\tooltip.cpp !endif @@ -11261,6 +11292,11 @@ $(OBJS)\monolib_textentrycmn.obj: ..\..\src\common\textentrycmn.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\monolib_textmeasurecmn.obj: ..\..\src\common\textmeasurecmn.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\textmeasurecmn.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\monolib_toplvcmn.obj: ..\..\src\common\toplvcmn.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) ..\..\src\common\toplvcmn.cpp !endif @@ -12996,6 +13032,11 @@ $(OBJS)\coredll_settings.obj: ..\..\src\msw\settings.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\coredll_textmeasure.obj: ..\..\src\msw\textmeasure.cpp + $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\textmeasure.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\coredll_tooltip.obj: ..\..\src\msw\tooltip.cpp $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\msw\tooltip.cpp !endif @@ -13651,6 +13692,11 @@ $(OBJS)\coredll_textentrycmn.obj: ..\..\src\common\textentrycmn.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\coredll_textmeasurecmn.obj: ..\..\src\common\textmeasurecmn.cpp + $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\common\textmeasurecmn.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\coredll_toplvcmn.obj: ..\..\src\common\toplvcmn.cpp $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) ..\..\src\common\toplvcmn.cpp !endif @@ -14416,6 +14462,11 @@ $(OBJS)\corelib_settings.obj: ..\..\src\msw\settings.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\corelib_textmeasure.obj: ..\..\src\msw\textmeasure.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\textmeasure.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\corelib_tooltip.obj: ..\..\src\msw\tooltip.cpp $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\msw\tooltip.cpp !endif @@ -15071,6 +15122,11 @@ $(OBJS)\corelib_textentrycmn.obj: ..\..\src\common\textentrycmn.cpp !endif !if "$(USE_GUI)" == "1" +$(OBJS)\corelib_textmeasurecmn.obj: ..\..\src\common\textmeasurecmn.cpp + $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\common\textmeasurecmn.cpp +!endif + +!if "$(USE_GUI)" == "1" $(OBJS)\corelib_toplvcmn.obj: ..\..\src\common\toplvcmn.cpp $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) ..\..\src\common\toplvcmn.cpp !endif diff --git a/build/msw/makefile.wat b/build/msw/makefile.wat index 248328c26c..be05670d88 100644 --- a/build/msw/makefile.wat +++ b/build/msw/makefile.wat @@ -302,6 +302,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = & $(OBJS)\monodll_region.obj & $(OBJS)\monodll_renderer.obj & $(OBJS)\monodll_settings.obj & + $(OBJS)\monodll_textmeasure.obj & $(OBJS)\monodll_tooltip.obj & $(OBJS)\monodll_toplevel.obj & $(OBJS)\monodll_uiaction.obj & @@ -487,6 +488,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = & $(OBJS)\monodll_tbarbase.obj & $(OBJS)\monodll_textcmn.obj & $(OBJS)\monodll_textentrycmn.obj & + $(OBJS)\monodll_textmeasurecmn.obj & $(OBJS)\monodll_toplvcmn.obj & $(OBJS)\monodll_treebase.obj & $(OBJS)\monodll_uiactioncmn.obj & @@ -579,6 +581,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = & $(OBJS)\monodll_region.obj & $(OBJS)\monodll_renderer.obj & $(OBJS)\monodll_settings.obj & + $(OBJS)\monodll_textmeasure.obj & $(OBJS)\monodll_tooltip.obj & $(OBJS)\monodll_toplevel.obj & $(OBJS)\monodll_uiaction.obj & @@ -758,6 +761,7 @@ ____CORE_SRC_FILENAMES_OBJECTS = & $(OBJS)\monodll_tbarbase.obj & $(OBJS)\monodll_textcmn.obj & $(OBJS)\monodll_textentrycmn.obj & + $(OBJS)\monodll_textmeasurecmn.obj & $(OBJS)\monodll_toplvcmn.obj & $(OBJS)\monodll_treebase.obj & $(OBJS)\monodll_uiactioncmn.obj & @@ -1104,6 +1108,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = & $(OBJS)\monolib_region.obj & $(OBJS)\monolib_renderer.obj & $(OBJS)\monolib_settings.obj & + $(OBJS)\monolib_textmeasure.obj & $(OBJS)\monolib_tooltip.obj & $(OBJS)\monolib_toplevel.obj & $(OBJS)\monolib_uiaction.obj & @@ -1289,6 +1294,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = & $(OBJS)\monolib_tbarbase.obj & $(OBJS)\monolib_textcmn.obj & $(OBJS)\monolib_textentrycmn.obj & + $(OBJS)\monolib_textmeasurecmn.obj & $(OBJS)\monolib_toplvcmn.obj & $(OBJS)\monolib_treebase.obj & $(OBJS)\monolib_uiactioncmn.obj & @@ -1381,6 +1387,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = & $(OBJS)\monolib_region.obj & $(OBJS)\monolib_renderer.obj & $(OBJS)\monolib_settings.obj & + $(OBJS)\monolib_textmeasure.obj & $(OBJS)\monolib_tooltip.obj & $(OBJS)\monolib_toplevel.obj & $(OBJS)\monolib_uiaction.obj & @@ -1560,6 +1567,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = & $(OBJS)\monolib_tbarbase.obj & $(OBJS)\monolib_textcmn.obj & $(OBJS)\monolib_textentrycmn.obj & + $(OBJS)\monolib_textmeasurecmn.obj & $(OBJS)\monolib_toplvcmn.obj & $(OBJS)\monolib_treebase.obj & $(OBJS)\monolib_uiactioncmn.obj & @@ -1803,6 +1811,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = & $(OBJS)\coredll_region.obj & $(OBJS)\coredll_renderer.obj & $(OBJS)\coredll_settings.obj & + $(OBJS)\coredll_textmeasure.obj & $(OBJS)\coredll_tooltip.obj & $(OBJS)\coredll_toplevel.obj & $(OBJS)\coredll_uiaction.obj & @@ -1988,6 +1997,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = & $(OBJS)\coredll_tbarbase.obj & $(OBJS)\coredll_textcmn.obj & $(OBJS)\coredll_textentrycmn.obj & + $(OBJS)\coredll_textmeasurecmn.obj & $(OBJS)\coredll_toplvcmn.obj & $(OBJS)\coredll_treebase.obj & $(OBJS)\coredll_uiactioncmn.obj & @@ -2080,6 +2090,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = & $(OBJS)\coredll_region.obj & $(OBJS)\coredll_renderer.obj & $(OBJS)\coredll_settings.obj & + $(OBJS)\coredll_textmeasure.obj & $(OBJS)\coredll_tooltip.obj & $(OBJS)\coredll_toplevel.obj & $(OBJS)\coredll_uiaction.obj & @@ -2259,6 +2270,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = & $(OBJS)\coredll_tbarbase.obj & $(OBJS)\coredll_textcmn.obj & $(OBJS)\coredll_textentrycmn.obj & + $(OBJS)\coredll_textmeasurecmn.obj & $(OBJS)\coredll_toplvcmn.obj & $(OBJS)\coredll_treebase.obj & $(OBJS)\coredll_uiactioncmn.obj & @@ -2361,6 +2373,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = & $(OBJS)\corelib_region.obj & $(OBJS)\corelib_renderer.obj & $(OBJS)\corelib_settings.obj & + $(OBJS)\corelib_textmeasure.obj & $(OBJS)\corelib_tooltip.obj & $(OBJS)\corelib_toplevel.obj & $(OBJS)\corelib_uiaction.obj & @@ -2546,6 +2559,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = & $(OBJS)\corelib_tbarbase.obj & $(OBJS)\corelib_textcmn.obj & $(OBJS)\corelib_textentrycmn.obj & + $(OBJS)\corelib_textmeasurecmn.obj & $(OBJS)\corelib_toplvcmn.obj & $(OBJS)\corelib_treebase.obj & $(OBJS)\corelib_uiactioncmn.obj & @@ -2638,6 +2652,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = & $(OBJS)\corelib_region.obj & $(OBJS)\corelib_renderer.obj & $(OBJS)\corelib_settings.obj & + $(OBJS)\corelib_textmeasure.obj & $(OBJS)\corelib_tooltip.obj & $(OBJS)\corelib_toplevel.obj & $(OBJS)\corelib_uiaction.obj & @@ -2817,6 +2832,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = & $(OBJS)\corelib_tbarbase.obj & $(OBJS)\corelib_textcmn.obj & $(OBJS)\corelib_textentrycmn.obj & + $(OBJS)\corelib_textmeasurecmn.obj & $(OBJS)\corelib_toplvcmn.obj & $(OBJS)\corelib_treebase.obj & $(OBJS)\corelib_uiactioncmn.obj & @@ -7938,6 +7954,11 @@ $(OBJS)\monodll_settings.obj : .AUTODEPEND ..\..\src\msw\settings.cpp !endif !ifeq USE_GUI 1 +$(OBJS)\monodll_textmeasure.obj : .AUTODEPEND ..\..\src\msw\textmeasure.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< +!endif + +!ifeq USE_GUI 1 $(OBJS)\monodll_tooltip.obj : .AUTODEPEND ..\..\src\msw\tooltip.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< !endif @@ -8593,6 +8614,11 @@ $(OBJS)\monodll_textentrycmn.obj : .AUTODEPEND ..\..\src\common\textentrycmn.cp !endif !ifeq USE_GUI 1 +$(OBJS)\monodll_textmeasurecmn.obj : .AUTODEPEND ..\..\src\common\textmeasurecmn.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< +!endif + +!ifeq USE_GUI 1 $(OBJS)\monodll_toplvcmn.obj : .AUTODEPEND ..\..\src\common\toplvcmn.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< !endif @@ -10364,6 +10390,11 @@ $(OBJS)\monolib_settings.obj : .AUTODEPEND ..\..\src\msw\settings.cpp !endif !ifeq USE_GUI 1 +$(OBJS)\monolib_textmeasure.obj : .AUTODEPEND ..\..\src\msw\textmeasure.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< +!endif + +!ifeq USE_GUI 1 $(OBJS)\monolib_tooltip.obj : .AUTODEPEND ..\..\src\msw\tooltip.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< !endif @@ -11019,6 +11050,11 @@ $(OBJS)\monolib_textentrycmn.obj : .AUTODEPEND ..\..\src\common\textentrycmn.cp !endif !ifeq USE_GUI 1 +$(OBJS)\monolib_textmeasurecmn.obj : .AUTODEPEND ..\..\src\common\textmeasurecmn.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< +!endif + +!ifeq USE_GUI 1 $(OBJS)\monolib_toplvcmn.obj : .AUTODEPEND ..\..\src\common\toplvcmn.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< !endif @@ -12754,6 +12790,11 @@ $(OBJS)\coredll_settings.obj : .AUTODEPEND ..\..\src\msw\settings.cpp !endif !ifeq USE_GUI 1 +$(OBJS)\coredll_textmeasure.obj : .AUTODEPEND ..\..\src\msw\textmeasure.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $< +!endif + +!ifeq USE_GUI 1 $(OBJS)\coredll_tooltip.obj : .AUTODEPEND ..\..\src\msw\tooltip.cpp $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $< !endif @@ -13409,6 +13450,11 @@ $(OBJS)\coredll_textentrycmn.obj : .AUTODEPEND ..\..\src\common\textentrycmn.cp !endif !ifeq USE_GUI 1 +$(OBJS)\coredll_textmeasurecmn.obj : .AUTODEPEND ..\..\src\common\textmeasurecmn.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $< +!endif + +!ifeq USE_GUI 1 $(OBJS)\coredll_toplvcmn.obj : .AUTODEPEND ..\..\src\common\toplvcmn.cpp $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $< !endif @@ -14174,6 +14220,11 @@ $(OBJS)\corelib_settings.obj : .AUTODEPEND ..\..\src\msw\settings.cpp !endif !ifeq USE_GUI 1 +$(OBJS)\corelib_textmeasure.obj : .AUTODEPEND ..\..\src\msw\textmeasure.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $< +!endif + +!ifeq USE_GUI 1 $(OBJS)\corelib_tooltip.obj : .AUTODEPEND ..\..\src\msw\tooltip.cpp $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $< !endif @@ -14829,6 +14880,11 @@ $(OBJS)\corelib_textentrycmn.obj : .AUTODEPEND ..\..\src\common\textentrycmn.cp !endif !ifeq USE_GUI 1 +$(OBJS)\corelib_textmeasurecmn.obj : .AUTODEPEND ..\..\src\common\textmeasurecmn.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $< +!endif + +!ifeq USE_GUI 1 $(OBJS)\corelib_toplvcmn.obj : .AUTODEPEND ..\..\src\common\toplvcmn.cpp $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $< !endif diff --git a/build/msw/wx_core.dsp b/build/msw/wx_core.dsp index dab6894f7e..8de65235b6 100644 --- a/build/msw/wx_core.dsp +++ b/build/msw/wx_core.dsp @@ -714,6 +714,10 @@ SOURCE=..\..\src\common\textentrycmn.cpp # End Source File # Begin Source File +SOURCE=..\..\src\common\textmeasurecmn.cpp +# End Source File +# Begin Source File + SOURCE=..\..\src\common\toplvcmn.cpp # End Source File # Begin Source File @@ -2708,6 +2712,10 @@ SOURCE=..\..\src\msw\textentry.cpp # End Source File # Begin Source File +SOURCE=..\..\src\msw\textmeasure.cpp +# End Source File +# Begin Source File + SOURCE=..\..\src\msw\tglbtn.cpp !IF "$(CFG)" == "core - Win32 DLL Universal Release" diff --git a/build/msw/wx_vc7_core.vcproj b/build/msw/wx_vc7_core.vcproj index 6c6888b9c3..9766ef2d03 100644 --- a/build/msw/wx_vc7_core.vcproj +++ b/build/msw/wx_vc7_core.vcproj @@ -927,6 +927,9 @@ + + @@ -2461,6 +2464,9 @@ Name="DLL Universal Release|Win32" ExcludedFromBuild="TRUE"/> + + + + @@ -3315,6 +3319,10 @@ ExcludedFromBuild="true" /> + + diff --git a/build/msw/wx_vc9_core.vcproj b/build/msw/wx_vc9_core.vcproj index 68d8e74f06..5f25778823 100644 --- a/build/msw/wx_vc9_core.vcproj +++ b/build/msw/wx_vc9_core.vcproj @@ -1266,6 +1266,10 @@ RelativePath="..\..\src\common\textentrycmn.cpp" > + + @@ -3311,6 +3315,10 @@ ExcludedFromBuild="true" /> + + diff --git a/include/wx/generic/private/textmeasure.h b/include/wx/generic/private/textmeasure.h new file mode 100644 index 0000000000..5d44f35350 --- /dev/null +++ b/include/wx/generic/private/textmeasure.h @@ -0,0 +1,40 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/generic/private/textmeasure.h +// Purpose: Generic wxTextMeasure declaration. +// Author: Vadim Zeitlin +// Created: 2012-10-17 +// RCS-ID: $Id$ +// Copyright: (c) 1997-2012 wxWidgets team +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_GENERIC_PRIVATE_TEXTMEASURE_H_ +#define _WX_GENERIC_PRIVATE_TEXTMEASURE_H_ + +// ---------------------------------------------------------------------------- +// wxTextMeasure for the platforms without native support. +// ---------------------------------------------------------------------------- + +class wxTextMeasure : public wxTextMeasureBase +{ +public: + wxTextMeasure(const wxDC *dc, const wxFont *font) + : wxTextMeasureBase(dc, font) {} + wxTextMeasure(const wxWindow *win, const wxFont *font) + : wxTextMeasureBase(win, font) {} + +protected: + virtual void DoGetTextExtent(const wxString& string, + wxCoord *width, + wxCoord *height, + wxCoord *descent = NULL, + wxCoord *externalLeading = NULL); + + virtual bool DoGetPartialTextExtents(const wxString& text, + wxArrayInt& widths, + double scaleX); + + wxDECLARE_NO_COPY_CLASS(wxTextMeasure); +}; + +#endif // _WX_GENERIC_PRIVATE_TEXTMEASURE_H_ diff --git a/include/wx/gtk/private/textmeasure.h b/include/wx/gtk/private/textmeasure.h new file mode 100644 index 0000000000..ad9a43c24d --- /dev/null +++ b/include/wx/gtk/private/textmeasure.h @@ -0,0 +1,65 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/gtk/private/textmeasure.h +// Purpose: wxGTK-specific declaration of wxTextMeasure class +// Author: Manuel Martin +// Created: 2012-19-05 +// Copyright: (c) 1997-2012 wxWidgets team +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_GTK_PRIVATE_TEXTMEASURE_H_ +#define _WX_GTK_PRIVATE_TEXTMEASURE_H_ + +// ---------------------------------------------------------------------------- +// wxTextMeasure +// ---------------------------------------------------------------------------- + +class WXDLLIMPEXP_FWD_CORE wxWindowDCImpl; + +class wxTextMeasure : public wxTextMeasureBase +{ +public: + wxTextMeasure(const wxDC *dc, const wxFont *font) + : wxTextMeasureBase(dc, font) + { + Init(); + } + + wxTextMeasure(const wxWindow *win, const wxFont *font) + : wxTextMeasureBase(win, font) + { + Init(); + } + +protected: + // Common part of both ctors. + void Init(); + + virtual void BeginMeasuring(); + virtual void EndMeasuring(); + + virtual void DoGetTextExtent(const wxString& string, + wxCoord *width, + wxCoord *height, + wxCoord *descent = NULL, + wxCoord *externalLeading = NULL); + + virtual bool DoGetPartialTextExtents(const wxString& text, + wxArrayInt& widths, + double scaleX); + + + // This class is only used for DC text measuring with GTK+ 2 as GTK+ 3 uses + // Cairo and not Pango for this. However it's still used even with GTK+ 3 + // for window text measuring, so the context and the layout are still + // needed. +#ifndef __WXGTK3__ + wxWindowDCImpl *m_wdc; +#endif // GTK+ < 3 + PangoContext *m_context; + PangoLayout *m_layout; + + wxDECLARE_NO_COPY_CLASS(wxTextMeasure); +}; + +#endif // _WX_GTK_PRIVATE_TEXTMEASURE_H_ diff --git a/include/wx/msw/private/textmeasure.h b/include/wx/msw/private/textmeasure.h new file mode 100644 index 0000000000..2651a600ec --- /dev/null +++ b/include/wx/msw/private/textmeasure.h @@ -0,0 +1,62 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/msw/private/textmeasure.h +// Purpose: wxMSW-specific declaration of wxTextMeasure class +// Author: Manuel Martin +// Created: 2012-10-05 +// Copyright: (c) 1997-2012 wxWidgets team +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_MSW_PRIVATE_TEXTMEASURE_H_ +#define _WX_MSW_PRIVATE_TEXTMEASURE_H_ + +#include "wx/msw/wrapwin.h" + +// ---------------------------------------------------------------------------- +// wxTextMeasure for MSW. +// ---------------------------------------------------------------------------- + +class wxTextMeasure : public wxTextMeasureBase +{ +public: + wxTextMeasure(const wxDC *dc, const wxFont *font) + : wxTextMeasureBase(dc, font) + { + Init(); + } + wxTextMeasure(const wxWindow *win, const wxFont *font) + : wxTextMeasureBase(win, font) + { + Init(); + } + +protected: + void Init(); + + virtual void BeginMeasuring(); + virtual void EndMeasuring(); + + virtual void DoGetTextExtent(const wxString& string, + wxCoord *width, + wxCoord *height, + wxCoord *descent = NULL, + wxCoord *externalLeading = NULL); + + virtual bool DoGetPartialTextExtents(const wxString& text, + wxArrayInt& widths, + double scaleX); + + + + // We use either the HDC of the provided wxDC or an HDC created for our + // window. + HDC m_hdc; + + // If we change the font in BeginMeasuring(), we restore it to the old one + // in EndMeasuring(). + HFONT m_hfontOld; + + wxDECLARE_NO_COPY_CLASS(wxTextMeasure); +}; + +#endif // _WX_MSW_PRIVATE_TEXTMEASURE_H_ diff --git a/include/wx/private/textmeasure.h b/include/wx/private/textmeasure.h new file mode 100644 index 0000000000..0e853c548c --- /dev/null +++ b/include/wx/private/textmeasure.h @@ -0,0 +1,138 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/private/textmeasure.h +// Purpose: declaration of wxTextMeasure class +// Author: Manuel Martin +// Created: 2012-10-05 +// Copyright: (c) 1997-2012 wxWidgets team +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#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; + +// ---------------------------------------------------------------------------- +// wxTextMeasure: class used to measure text extent. +// ---------------------------------------------------------------------------- + +class wxTextMeasureBase +{ +public: + // The first ctor argument must be non-NULL, i.e. each object of this class + // is associated with either a valid wxDC or a valid wxWindow. + wxTextMeasureBase(const wxDC *dc, const wxFont *theFont); + wxTextMeasureBase(const wxWindow *win, const wxFont *theFont); + + // Even though this class is not supposed to be used polymorphically, give + // it a virtual dtor to avoid compiler warnings. + virtual ~wxTextMeasureBase() { } + + + // Return the extent of a single line string. + void GetTextExtent(const wxString& string, + wxCoord *width, + wxCoord *height, + wxCoord *descent = NULL, + wxCoord *externalLeading = NULL); + + // The same for a multiline (with '\n') string. + void GetMultiLineTextExtent(const wxString& text, + wxCoord *width, + wxCoord *height, + wxCoord *heightOneLine = NULL); + + // Find the dimensions of the largest string. + void GetLargestStringExtent(const wxVector& strings, + wxCoord *width, + wxCoord *height); + + // Fill the array with the widths for each "0..N" substrings for N from 1 + // to text.length(). + // + // The scaleX argument is the horizontal scale used by wxDC and is only + // used in the generic implementation. + bool GetPartialTextExtents(const wxString& text, + wxArrayInt& widths, + double scaleX); + +protected: + // These functions are called by our public methods before and after each + // call to DoGetTextExtent(). Derived classes may override them to prepare + // for -- possibly several -- subsequent calls to DoGetTextExtent(). + // + // As these calls must be always paired, they're never called directly but + // only by our friend MeasuringGuard class. + virtual void BeginMeasuring() { } + virtual void EndMeasuring() { } + + // RAII wrapper for the two methods above. + class MeasuringGuard + { + public: + MeasuringGuard(wxTextMeasureBase& tm) : m_tm(tm) + { + m_tm.BeginMeasuring(); + } + + ~MeasuringGuard() + { + m_tm.EndMeasuring(); + } + + private: + wxTextMeasureBase& m_tm; + }; + + + // The main function of this class, to be implemented in platform-specific + // way used by all our public methods except GetLargestStringExtents(). + // + // The width and height pointers here are never NULL and the input string + // is not empty. + virtual void DoGetTextExtent(const wxString& string, + wxCoord *width, + wxCoord *height, + wxCoord *descent = NULL, + wxCoord *externalLeading = NULL) = 0; + + // The real implementation of GetPartialTextExtents(). + // + // On input, widths array contains text.length() zero elements and the text + // is guaranteed to be non-empty. + virtual bool DoGetPartialTextExtents(const wxString& text, + wxArrayInt& widths, + double scaleX) = 0; + + + // Exactly one of m_dc and m_win is non-NULL for any given object of this + // class. + const wxDC* const m_dc; + const wxWindow* const m_win; + + // This one can be NULL or not. + const wxFont* const m_font; + + wxDECLARE_NO_COPY_CLASS(wxTextMeasureBase); +}; + +// Include the platform dependant class declaration, if any. +#if defined(__WXGTK20__) + #include "wx/gtk/private/textmeasure.h" +#elif defined(__WXMSW__) + #include "wx/msw/private/textmeasure.h" +#else // no platform-specific implementation of wxTextMeasure yet + #include "wx/generic/private/textmeasure.h" + + #define wxUSE_GENERIC_TEXTMEASURE 1 +#endif + +#ifndef wxUSE_GENERIC_TEXTMEASURE + #define wxUSE_GENERIC_TEXTMEASURE 0 +#endif + +#endif // _WX_PRIVATE_TEXTMEASURE_H_ diff --git a/src/common/dcbase.cpp b/src/common/dcbase.cpp index 49fdb5f362..46a163129c 100644 --- a/src/common/dcbase.cpp +++ b/src/common/dcbase.cpp @@ -38,6 +38,8 @@ #include "wx/window.h" #endif +#include "wx/private/textmeasure.h" + #ifdef __WXMSW__ #include "wx/msw/dcclient.h" #include "wx/msw/dcmemory.h" @@ -511,78 +513,10 @@ void wxDCImpl::SetAxisOrientation( bool xLeftRight, bool yBottomUp ) ComputeScaleAndOrigin(); } - -// Each element of the widths array will be the width of the string up to and -// including the corresponding character in text. This is the generic -// implementation, the port-specific classes should do this with native APIs -// if available and if faster. Note: pango_layout_index_to_pos is much slower -// than calling GetTextExtent!! - -#define FWC_SIZE 256 - -class FontWidthCache -{ -public: - FontWidthCache() : m_scaleX(1), m_widths(NULL) { } - ~FontWidthCache() { delete []m_widths; } - - void Reset() - { - if (!m_widths) - m_widths = new int[FWC_SIZE]; - - memset(m_widths, 0, sizeof(int)*FWC_SIZE); - } - - wxFont m_font; - double m_scaleX; - int *m_widths; -}; - -static FontWidthCache s_fontWidthCache; - bool wxDCImpl::DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const { - int totalWidth = 0; - - const size_t len = text.length(); - widths.Empty(); - widths.Add(0, len); - - // reset the cache if font or horizontal scale have changed - if ( !s_fontWidthCache.m_widths || - !wxIsSameDouble(s_fontWidthCache.m_scaleX, m_scaleX) || - (s_fontWidthCache.m_font != GetFont()) ) - { - s_fontWidthCache.Reset(); - s_fontWidthCache.m_font = GetFont(); - s_fontWidthCache.m_scaleX = m_scaleX; - } - - // Calculate the position of each character based on the widths of - // the previous characters - int w, h; - for ( size_t i = 0; i < len; i++ ) - { - const wxChar c = text[i]; - unsigned int c_int = (unsigned int)c; - - if ((c_int < FWC_SIZE) && (s_fontWidthCache.m_widths[c_int] != 0)) - { - w = s_fontWidthCache.m_widths[c_int]; - } - else - { - DoGetTextExtent(c, &w, &h); - if (c_int < FWC_SIZE) - s_fontWidthCache.m_widths[c_int] = w; - } - - totalWidth += w; - widths[i] = totalWidth; - } - - return true; + wxTextMeasure tm(GetOwner(), &m_font); + return tm.GetPartialTextExtents(text, widths, m_scaleX); } void wxDCImpl::GetMultiLineTextExtent(const wxString& text, @@ -591,64 +525,8 @@ void wxDCImpl::GetMultiLineTextExtent(const wxString& text, wxCoord *h, const wxFont *font) const { - wxCoord widthTextMax = 0, widthLine, - heightTextTotal = 0, heightLineDefault = 0, heightLine = 0; - - wxString curLine; - for ( wxString::const_iterator pc = text.begin(); ; ++pc ) - { - if ( pc == text.end() || *pc == wxT('\n') ) - { - if ( curLine.empty() ) - { - // we can't use GetTextExtent - it will return 0 for both width - // and height and an empty line should count in height - // calculation - - // assume that this line has the same height as the previous - // one - if ( !heightLineDefault ) - heightLineDefault = heightLine; - - if ( !heightLineDefault ) - { - // but we don't know it yet - choose something reasonable - DoGetTextExtent(wxT("W"), NULL, &heightLineDefault, - NULL, NULL, font); - } - - heightTextTotal += heightLineDefault; - } - else - { - DoGetTextExtent(curLine, &widthLine, &heightLine, - NULL, NULL, font); - if ( widthLine > widthTextMax ) - widthTextMax = widthLine; - heightTextTotal += heightLine; - } - - if ( pc == text.end() ) - { - break; - } - else // '\n' - { - curLine.clear(); - } - } - else - { - curLine += *pc; - } - } - - if ( x ) - *x = widthTextMax; - if ( y ) - *y = heightTextTotal; - if ( h ) - *h = heightLine; + wxTextMeasure tm(GetOwner(), font && font->IsOk() ? font : &m_font); + tm.GetMultiLineTextExtent(text, x, y, h); } void wxDCImpl::DoDrawCheckMark(wxCoord x1, wxCoord y1, diff --git a/src/common/textmeasurecmn.cpp b/src/common/textmeasurecmn.cpp new file mode 100644 index 0000000000..bb16ac048a --- /dev/null +++ b/src/common/textmeasurecmn.cpp @@ -0,0 +1,178 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: src/common/textmeasurecmn.cpp +// Purpose: wxTextMeasureBase implementation +// Author: Manuel Martin +// Created: 2012-10-05 +// Copyright: (c) 1997-2012 wxWidgets team +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +// for compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifndef WX_PRECOMP + #include "wx/dc.h" + #include "wx/window.h" +#endif //WX_PRECOMP + +#include "wx/private/textmeasure.h" + +// ============================================================================ +// wxTextMeasureBase implementation +// ============================================================================ + +wxTextMeasureBase::wxTextMeasureBase(const wxDC *dc, const wxFont *theFont) + : m_dc(dc), + m_win(NULL), + m_font(theFont) +{ + wxASSERT_MSG( dc, wxS("wxTextMeasure needs a valid wxDC") ); +} + +wxTextMeasureBase::wxTextMeasureBase(const wxWindow *win, const wxFont *theFont) + : m_dc(NULL), + m_win(win), + m_font(theFont) +{ + wxASSERT_MSG( win, wxS("wxTextMeasure needs a valid wxWindow") ); +} + +void wxTextMeasureBase::GetTextExtent(const wxString& string, + wxCoord *width, + wxCoord *height, + wxCoord *descent, + wxCoord *externalLeading) +{ + // To make the code simpler, make sure that the width and height pointers + // are always valid, even if they point to dummy variables. + int unusedWidth, unusedHeight; + if ( !width ) + width = &unusedWidth; + if ( !height ) + height = &unusedHeight; + + if ( string.empty() ) + { + *width = + *height = 0; + + return; + } + + MeasuringGuard guard(*this); + + DoGetTextExtent(string, width, height, descent, externalLeading); +} + +void wxTextMeasureBase::GetMultiLineTextExtent(const wxString& text, + wxCoord *width, + wxCoord *height, + wxCoord *heightOneLine) +{ + MeasuringGuard guard(*this); + + wxCoord widthTextMax = 0, widthLine, + heightTextTotal = 0, heightLineDefault = 0, heightLine = 0; + + wxString curLine; + for ( wxString::const_iterator pc = text.begin(); ; ++pc ) + { + if ( pc == text.end() || *pc == wxS('\n') ) + { + if ( curLine.empty() ) + { + // we can't use GetTextExtent - it will return 0 for both width + // and height and an empty line should count in height + // calculation + + // assume that this line has the same height as the previous + // one + if ( !heightLineDefault ) + heightLineDefault = heightLine; + + if ( !heightLineDefault ) + { + // but we don't know it yet - choose something reasonable + DoGetTextExtent(wxS("W"), NULL, &heightLineDefault); + } + + heightTextTotal += heightLineDefault; + } + else + { + DoGetTextExtent(curLine, &widthLine, &heightLine); + if ( widthLine > widthTextMax ) + widthTextMax = widthLine; + heightTextTotal += heightLine; + } + + if ( pc == text.end() ) + { + break; + } + else // '\n' + { + curLine.clear(); + } + } + else + { + curLine += *pc; + } + } + + if ( width ) + *width = widthTextMax; + if ( height ) + *height = heightTextTotal; + if ( heightOneLine ) + *heightOneLine = heightLine; +} + +void wxTextMeasureBase::GetLargestStringExtent(const wxVector& strings, + wxCoord *width, + wxCoord *height) +{ + MeasuringGuard guard(*this); + + wxCoord w, h, widthMax = 0, heightMax = 0; + for ( wxVector::const_iterator i = strings.begin(); + i != strings.end(); + ++i ) + { + DoGetTextExtent(*i, &w, &h); + + if ( w > widthMax ) + widthMax = w; + if ( h > heightMax ) + heightMax = h; + } + + if ( width ) + *width = widthMax; + if ( height ) + *height = heightMax; +} + +bool wxTextMeasureBase::GetPartialTextExtents(const wxString& text, + wxArrayInt& widths, + double scaleX) +{ + widths.Empty(); + if ( text.empty() ) + return true; + + MeasuringGuard guard(*this); + + widths.Add(0, text.length()); + + return DoGetPartialTextExtents(text, widths, scaleX); +} diff --git a/src/generic/textmeasure.cpp b/src/generic/textmeasure.cpp new file mode 100644 index 0000000000..788e1f66e5 --- /dev/null +++ b/src/generic/textmeasure.cpp @@ -0,0 +1,131 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: src/generic/textmeasure.cpp +// Purpose: +// Author: Vadim Zeitlin +// Created: 2012-10-17 +// RCS-ID: $Id$ +// Copyright: (c) 2012 Vadim Zeitlin +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +// for compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#include "wx/private/textmeasure.h" + +#if wxUSE_GENERIC_TEXTMEASURE + +// ============================================================================ +// wxTextMeasure generic implementation +// ============================================================================ + +// We assume that the ports not providing platform-specific wxTextMeasure +// implementation implement the corresponding functions in their wxDC and +// wxWindow classes, so forward back to them instead of using wxTextMeasure +// from there, as usual. +void wxTextMeasure::DoGetTextExtent(const wxString& string, + wxCoord *width, + wxCoord *height, + wxCoord *descent, + wxCoord *externalLeading) +{ + if ( m_dc ) + { + m_dc->GetTextExtent(string, width, height, + descent, externalLeading, m_font); + } + else if ( m_win ) + { + m_win->GetTextExtent(string, width, height, + descent, externalLeading, m_font); + } + //else: we already asserted in the ctor, don't do it any more +} + +// Each element of the widths array will be the width of the string up to and +// including the corresponding character in text. This is the generic +// implementation, the port-specific classes should do this with native APIs +// if available and if faster. Note: pango_layout_index_to_pos is much slower +// than calling GetTextExtent!! + +#define FWC_SIZE 256 + +class FontWidthCache +{ +public: + FontWidthCache() : m_scaleX(1), m_widths(NULL) { } + ~FontWidthCache() { delete []m_widths; } + + void Reset() + { + if ( !m_widths ) + m_widths = new int[FWC_SIZE]; + + memset(m_widths, 0, sizeof(int)*FWC_SIZE); + } + + wxFont m_font; + double m_scaleX; + int *m_widths; +}; + +static FontWidthCache s_fontWidthCache; + +bool wxTextMeasure::DoGetPartialTextExtents(const wxString& text, + wxArrayInt& widths, + double scaleX) +{ + int totalWidth = 0; + + // reset the cache if font or horizontal scale have changed + if ( !s_fontWidthCache.m_widths || + !wxIsSameDouble(s_fontWidthCache.m_scaleX, scaleX) || + (s_fontWidthCache.m_font != *m_font) ) + { + s_fontWidthCache.Reset(); + s_fontWidthCache.m_font = *m_font; + s_fontWidthCache.m_scaleX = scaleX; + } + + // Calculate the position of each character based on the widths of + // the previous characters. This is inexact for not fixed fonts. + int n = 0; + for ( wxString::const_iterator it = text.begin(); + it != text.end(); + ++it ) + { + const wxChar c = *it; + unsigned int c_int = (unsigned int)c; + + int w; + if ((c_int < FWC_SIZE) && (s_fontWidthCache.m_widths[c_int] != 0)) + { + w = s_fontWidthCache.m_widths[c_int]; + } + else + { + DoGetTextExtent(c, &w, NULL); + if (c_int < FWC_SIZE) + s_fontWidthCache.m_widths[c_int] = w; + } + + totalWidth += w; + widths[n++] = totalWidth; + } + + return true; +} + +#endif // wxUSE_GENERIC_TEXTMEASURE diff --git a/src/gtk/dcclient.cpp b/src/gtk/dcclient.cpp index 680ab2c6cd..0ad9159ef5 100644 --- a/src/gtk/dcclient.cpp +++ b/src/gtk/dcclient.cpp @@ -25,6 +25,7 @@ #include "wx/gtk/private.h" #include "wx/gtk/private/object.h" +#include "wx/private/textmeasure.h" //----------------------------------------------------------------------------- // local defines @@ -1532,100 +1533,27 @@ void wxWindowDCImpl::DoGetTextExtent(const wxString &string, wxCoord *descent, wxCoord *externalLeading, const wxFont *theFont) const { - if ( width ) - *width = 0; - if ( height ) - *height = 0; - if ( descent ) - *descent = 0; - if ( externalLeading ) - *externalLeading = 0; - - if (string.empty()) - return; - - // ensure that theFont is always non-NULL + // ensure we work with a valid font + const wxFont *fontToUse; if ( !theFont || !theFont->IsOk() ) - theFont = &m_font; - - // and use it if it's valid - if ( theFont->IsOk() ) - { - pango_layout_set_font_description - ( - m_layout, - theFont->GetNativeFontInfo()->description - ); - } - - // Set layout's text - const wxCharBuffer dataUTF8 = wxGTK_CONV_FONT(string, *theFont); - if ( !dataUTF8 ) - { - // hardly ideal, but what else can we do if conversion failed? - return; - } - - pango_layout_set_text(m_layout, dataUTF8, -1); + fontToUse = &m_font; + else + fontToUse = theFont; - int h; - pango_layout_get_pixel_size(m_layout, width, &h); - if (descent) - { - PangoLayoutIter *iter = pango_layout_get_iter(m_layout); - int baseline = pango_layout_iter_get_baseline(iter); - pango_layout_iter_free(iter); - *descent = h - PANGO_PIXELS(baseline); - } - if (height) - *height = h; + wxCHECK_RET( fontToUse->IsOk(), wxT("invalid font") ); - // Reset old font description - if (theFont->IsOk()) - pango_layout_set_font_description( m_layout, m_fontdesc ); + wxTextMeasure txm(GetOwner(), fontToUse); + txm.GetTextExtent(string, width, height, descent, externalLeading); } bool wxWindowDCImpl::DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const { - const size_t len = text.length(); - widths.Empty(); - widths.Add(0, len); - - if (text.empty()) - return true; - - // Set layout's text - const wxCharBuffer dataUTF8 = wxGTK_CONV_FONT(text, m_font); - if ( !dataUTF8 ) - { - // hardly ideal, but what else can we do if conversion failed? - wxLogLastError(wxT("DoGetPartialTextExtents")); - return false; - } + wxCHECK_MSG( m_font.IsOk(), false, wxT("Invalid font") ); - pango_layout_set_text(m_layout, dataUTF8, -1); - - // Calculate the position of each character based on the widths of - // the previous characters - - // Code borrowed from Scintilla's PlatGTK - PangoLayoutIter *iter = pango_layout_get_iter(m_layout); - PangoRectangle pos; - pango_layout_iter_get_cluster_extents(iter, NULL, &pos); - size_t i = 0; - while (pango_layout_iter_next_cluster(iter)) - { - pango_layout_iter_get_cluster_extents(iter, NULL, &pos); - int position = PANGO_PIXELS(pos.x); - widths[i++] = position; - } - while (i < len) - widths[i++] = PANGO_PIXELS(pos.x + pos.width); - pango_layout_iter_free(iter); - - return true; + wxTextMeasure txm(GetOwner(), &m_font); + return txm.GetPartialTextExtents(text, widths, m_scaleX); } diff --git a/src/gtk/textmeasure.cpp b/src/gtk/textmeasure.cpp new file mode 100644 index 0000000000..f32df4af08 --- /dev/null +++ b/src/gtk/textmeasure.cpp @@ -0,0 +1,185 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: src/gtk/textmeasure.cpp +// Purpose: wxTextMeasure implementation for wxGTK +// Author: Manuel Martin +// Created: 2012-10-05 +// Copyright: (c) 1997-2012 wxWidgets team +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +// for compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifndef WX_PRECOMP + #include "wx/window.h" +#endif //WX_PRECOMP + +#include "wx/private/textmeasure.h" + +#include "wx/fontutil.h" +#include "wx/gtk/private.h" + +#ifndef __WXGTK3__ + #include "wx/gtk/dcclient.h" +#endif + +// ============================================================================ +// wxTextMeasure implementation +// ============================================================================ + +void wxTextMeasure::Init() +{ + wxASSERT_MSG( m_font, wxT("wxTextMeasure needs a valid wxFont") ); + +#ifndef __WXGTK3__ + m_wdc = NULL; +#endif // GTK+ < 3 + m_context = NULL; + m_layout = NULL; +} + +// Get Gtk needed elements, if we have not them yet. +void wxTextMeasure::BeginMeasuring() +{ + if ( m_dc ) + { +#ifndef __WXGTK3__ + m_wdc = wxDynamicCast(m_dc->GetImpl(), wxWindowDCImpl); + if ( m_wdc ) + { + m_context = m_wdc->m_context; + m_layout = m_wdc->m_layout; + } +#endif // GTK+ < 3 + } + else if ( m_win ) + { + m_context = gtk_widget_get_pango_context( m_win->GetHandle() ); + if ( m_context ) + m_layout = pango_layout_new(m_context); + } + + // set the font to use + if ( m_layout ) + { + pango_layout_set_font_description(m_layout, + m_font->GetNativeFontInfo()->description); + } +} + +void wxTextMeasure::EndMeasuring() +{ + if ( !m_layout ) + return; + +#ifndef __WXGTK3__ + if ( m_wdc ) + { + // Reset dc own font description + pango_layout_set_font_description( m_wdc->m_layout, m_wdc->m_fontdesc ); + } + else +#endif // GTK+ < 3 + { + g_object_unref (m_layout); + } +} + +// Notice we don't check here the font. It is supposed to be OK before the call. +void wxTextMeasure::DoGetTextExtent(const wxString& string, + wxCoord *width, + wxCoord *height, + wxCoord *descent, + wxCoord *externalLeading) +{ + if ( !m_context ) + { + *width = + *height = 0; + return; + } + + // Set layout's text + const wxCharBuffer dataUTF8 = wxGTK_CONV_FONT(string, *m_font); + if ( !dataUTF8 ) + { + // hardly ideal, but what else can we do if conversion failed? + wxLogLastError(wxT("GetTextExtent")); + return; + } + pango_layout_set_text(m_layout, dataUTF8, -1); + + if ( m_dc ) + { + // in device units + pango_layout_get_pixel_size(m_layout, width, height); + } + else // win + { + // the logical rect bounds the ink rect + PangoRectangle rect; + pango_layout_get_extents(m_layout, NULL, &rect); + *width = PANGO_PIXELS(rect.width); + *height = PANGO_PIXELS(rect.height); + } + + if (descent) + { + PangoLayoutIter *iter = pango_layout_get_iter(m_layout); + int baseline = pango_layout_iter_get_baseline(iter); + pango_layout_iter_free(iter); + *descent = *height - PANGO_PIXELS(baseline); + } + + if (externalLeading) + { + // No support for MSW-like "external leading" in Pango. + *externalLeading = 0; + } +} + +bool wxTextMeasure::DoGetPartialTextExtents(const wxString& text, + wxArrayInt& widths, + double WXUNUSED(scaleX)) +{ + // Set layout's text + const wxCharBuffer dataUTF8 = wxGTK_CONV_FONT(text, *m_font); + if ( !dataUTF8 ) + { + // hardly ideal, but what else can we do if conversion failed? + wxLogLastError(wxT("GetPartialTextExtents")); + return false; + } + + pango_layout_set_text(m_layout, dataUTF8, -1); + + // Calculate the position of each character based on the widths of + // the previous characters + + // Code borrowed from Scintilla's PlatGTK + PangoLayoutIter *iter = pango_layout_get_iter(m_layout); + PangoRectangle pos; + pango_layout_iter_get_cluster_extents(iter, NULL, &pos); + size_t i = 0; + while (pango_layout_iter_next_cluster(iter)) + { + pango_layout_iter_get_cluster_extents(iter, NULL, &pos); + int position = PANGO_PIXELS(pos.x); + widths[i++] = position; + } + + const size_t len = text.length(); + while (i < len) + widths[i++] = PANGO_PIXELS(pos.x + pos.width); + pango_layout_iter_free(iter); + + return true; +} diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 2542985379..978f556ca7 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -43,6 +43,7 @@ #include "wx/gtk/private/gtk2-compat.h" #include "wx/gtk/private/event.h" #include "wx/gtk/private/win_gtk.h" +#include "wx/private/textmeasure.h" using namespace wxGTKImpl; #ifdef GDK_WINDOWING_X11 @@ -3080,52 +3081,18 @@ void wxWindowGTK::DoGetTextExtent( const wxString& string, int *externalLeading, const wxFont *theFont ) const { - wxFont fontToUse = theFont ? *theFont : GetFont(); + // ensure we work with a valid font + wxFont fontToUse; + if ( !theFont || !theFont->IsOk() ) + fontToUse = GetFont(); + else + fontToUse = *theFont; wxCHECK_RET( fontToUse.IsOk(), wxT("invalid font") ); - if (string.empty()) - { - if (x) (*x) = 0; - if (y) (*y) = 0; - return; - } - - PangoContext *context = NULL; - if (m_widget) - context = gtk_widget_get_pango_context( m_widget ); - - if (!context) - { - if (x) (*x) = 0; - if (y) (*y) = 0; - return; - } - - PangoFontDescription *desc = fontToUse.GetNativeFontInfo()->description; - PangoLayout *layout = pango_layout_new(context); - pango_layout_set_font_description(layout, desc); - { - const wxCharBuffer data = wxGTK_CONV( string ); - if ( data ) - pango_layout_set_text(layout, data, strlen(data)); - } - - PangoRectangle rect; - pango_layout_get_extents(layout, NULL, &rect); - - if (x) (*x) = (wxCoord) PANGO_PIXELS(rect.width); - if (y) (*y) = (wxCoord) PANGO_PIXELS(rect.height); - if (descent) - { - PangoLayoutIter *iter = pango_layout_get_iter(layout); - int baseline = pango_layout_iter_get_baseline(iter); - pango_layout_iter_free(iter); - *descent = *y - PANGO_PIXELS(baseline); - } - if (externalLeading) (*externalLeading) = 0; // ?? - - g_object_unref (layout); + const wxWindow* win = static_cast(this); + wxTextMeasure txm(win, &fontToUse); + txm.GetTextExtent(string, x, y, descent, externalLeading); } void wxWindowGTK::GTKDisableFocusOutEvent() diff --git a/src/msw/dc.cpp b/src/msw/dc.cpp index 077d9594ce..fc47bd9a5a 100644 --- a/src/msw/dc.cpp +++ b/src/msw/dc.cpp @@ -51,6 +51,7 @@ #include #include "wx/msw/private/dc.h" +#include "wx/private/textmeasure.h" using namespace wxMSWImpl; @@ -1857,109 +1858,19 @@ void wxMSWDCImpl::DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y } #endif // __WXMICROWIN__ - HFONT hfontOld; - if ( font ) - { - wxASSERT_MSG( font->IsOk(), wxT("invalid font in wxMSWDCImpl::GetTextExtent") ); - - hfontOld = (HFONT)::SelectObject(GetHdc(), GetHfontOf(*font)); - } - else // don't change the font - { - hfontOld = 0; - } - - SIZE sizeRect; - const size_t len = string.length(); - if ( !::GetTextExtentPoint32(GetHdc(), string.t_str(), len, &sizeRect) ) - { - wxLogLastError(wxT("GetTextExtentPoint32()")); - } - -#if !defined(_WIN32_WCE) || (_WIN32_WCE >= 400) - // the result computed by GetTextExtentPoint32() may be too small as it - // accounts for under/overhang of the first/last character while we want - // just the bounding rect for this string so adjust the width as needed - // (using API not available in 2002 SDKs of WinCE) - if ( len > 0 ) - { - ABC width; - const wxChar chFirst = *string.begin(); - if ( ::GetCharABCWidths(GetHdc(), chFirst, chFirst, &width) ) - { - if ( width.abcA < 0 ) - sizeRect.cx -= width.abcA; - - if ( len > 1 ) - { - const wxChar chLast = *string.rbegin(); - ::GetCharABCWidths(GetHdc(), chLast, chLast, &width); - } - //else: we already have the width of the last character - - if ( width.abcC < 0 ) - sizeRect.cx -= width.abcC; - } - //else: GetCharABCWidths() failed, not a TrueType font? - } -#endif // !defined(_WIN32_WCE) || (_WIN32_WCE >= 400) + wxASSERT_MSG( !font || font->IsOk(), wxT("invalid font in wxMSWDCImpl::GetTextExtent") ); - if (x) - *x = sizeRect.cx; - if (y) - *y = sizeRect.cy; - - if ( descent || externalLeading ) - { - DoGetFontMetrics(NULL, NULL, descent, NULL, externalLeading, NULL); - } - - if ( hfontOld ) - { - ::SelectObject(GetHdc(), hfontOld); - } + wxTextMeasure txm(GetOwner(), font); + txm.GetTextExtent(string, x, y, descent, externalLeading); } -// Each element of the array will be the width of the string up to and -// including the coresoponding character in text. - bool wxMSWDCImpl::DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const { - static int maxLenText = -1; - static int maxWidth = -1; - int fit = 0; - SIZE sz = {0,0}; - int stlen = text.length(); - - if (maxLenText == -1) - { - // Win9x and WinNT+ have different limits - int version = wxGetOsVersion(); - maxLenText = version == wxOS_WINDOWS_NT ? 65535 : 8192; - maxWidth = version == wxOS_WINDOWS_NT ? INT_MAX : 32767; - } - - widths.Empty(); - widths.Add(0, stlen); // fill the array with zeros - if (stlen == 0) - return true; + wxCHECK_MSG( GetFont().IsOk(), false, wxT("Invalid font") ); - if (!::GetTextExtentExPoint(GetHdc(), - text.c_str(), // string to check - wxMin(stlen, maxLenText), - maxWidth, - &fit, // [out] count of chars - // that will fit - &widths[0], // array to fill - &sz)) - { - // API failed - wxLogLastError(wxT("GetTextExtentExPoint")); - return false; - } - - return true; + wxTextMeasure txm(GetOwner(), NULL); // don't change the font + return txm.GetPartialTextExtents(text, widths, 1.0); } namespace diff --git a/src/msw/textmeasure.cpp b/src/msw/textmeasure.cpp new file mode 100644 index 0000000000..c2b364a978 --- /dev/null +++ b/src/msw/textmeasure.cpp @@ -0,0 +1,172 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: src/msw/textmeasure.cpp +// Purpose: wxTextMeasure implementation for wxMSW +// Author: Manuel Martin +// Created: 2012-19-05 +// RCS-ID: +// Copyright: +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +// for compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#include "wx/msw/private.h" +#include "wx/msw/dc.h" + +#ifndef WX_PRECOMP + #include "wx/window.h" + #include "wx/font.h" +#endif //WX_PRECOMP + +#include "wx/private/textmeasure.h" + +// ============================================================================ +// wxTextMeasure implementation +// ============================================================================ + +void wxTextMeasure::Init() +{ + m_hdc = NULL; + m_hfontOld = NULL; +} + +void wxTextMeasure::BeginMeasuring() +{ + if ( m_dc ) + { + m_hdc = m_dc->GetHDC(); + + // Non-native wxDC subclasses should override their DoGetTextExtent() + // and other methods. + wxASSERT_MSG( m_hdc, wxS("Must not be used with non-native wxDCs") ); + } + else if ( m_win ) + { + m_hdc = ::GetDC(GetHwndOf(m_win)); + } + + if ( m_font ) + m_hfontOld = (HFONT)::SelectObject(m_hdc, GetHfontOf(*m_font)); +} + +void wxTextMeasure::EndMeasuring() +{ + if ( m_hfontOld ) + { + ::SelectObject(m_hdc, m_hfontOld); + m_hfontOld = NULL; + } + + if ( m_win ) + ::ReleaseDC(GetHwndOf(m_win), m_hdc); + //else: our HDC belongs to m_dc, don't touch it + + m_hdc = NULL; +} + +// Notice we don't check here the font. It is supposed to be OK before the call. +void wxTextMeasure::DoGetTextExtent(const wxString& string, + wxCoord *width, + wxCoord *height, + wxCoord *descent, + wxCoord *externalLeading) +{ + SIZE sizeRect; + const size_t len = string.length(); + if ( !::GetTextExtentPoint32(m_hdc, string.t_str(), len, &sizeRect) ) + { + wxLogLastError(wxT("GetTextExtentPoint32()")); + } + +#if !defined(_WIN32_WCE) || (_WIN32_WCE >= 400) + // the result computed by GetTextExtentPoint32() may be too small as it + // accounts for under/overhang of the first/last character while we want + // just the bounding rect for this string so adjust the width as needed + // (using API not available in 2002 SDKs of WinCE) + if ( len > 0 ) + { + ABC widthABC; + const wxChar chFirst = *string.begin(); + if ( ::GetCharABCWidths(m_hdc, chFirst, chFirst, &widthABC) ) + { + if ( widthABC.abcA < 0 ) + sizeRect.cx -= widthABC.abcA; + + if ( len > 1 ) + { + const wxChar chLast = *string.rbegin(); + ::GetCharABCWidths(m_hdc, chLast, chLast, &widthABC); + } + //else: we already have the width of the last character + + if ( widthABC.abcC < 0 ) + sizeRect.cx -= widthABC.abcC; + } + //else: GetCharABCWidths() failed, not a TrueType font? + } +#endif // !defined(_WIN32_WCE) || (_WIN32_WCE >= 400) + + *width = sizeRect.cx; + *height = sizeRect.cy; + + if ( descent || externalLeading ) + { + TEXTMETRIC tm; + ::GetTextMetrics(m_hdc, &tm); + if ( descent ) + *descent = tm.tmDescent; + if ( externalLeading ) + *externalLeading = tm.tmExternalLeading; + } +} + +bool wxTextMeasure::DoGetPartialTextExtents(const wxString& text, + wxArrayInt& widths, + double WXUNUSED(scaleX)) +{ + static int maxLenText = -1; + static int maxWidth = -1; + + if (maxLenText == -1) + { + // Win9x and WinNT+ have different limits + int version = wxGetOsVersion(); + maxLenText = version == wxOS_WINDOWS_NT ? 65535 : 8192; + maxWidth = version == wxOS_WINDOWS_NT ? INT_MAX : 32767; + } + + int len = text.length(); + if ( len > maxLenText ) + len = maxLenText; + + int fit = 0; + SIZE sz = {0,0}; + if ( !::GetTextExtentExPoint(m_hdc, + text.t_str(), // string to check + len, + maxWidth, + &fit, // [out] count of chars + // that will fit + &widths[0], // array to fill + &sz) ) + { + wxLogLastError(wxT("GetTextExtentExPoint")); + + return false; + } + + return true; +} diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 67ee3d37f7..782d8c442e 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -81,6 +81,7 @@ #include "wx/msw/private.h" #include "wx/msw/private/keyboard.h" #include "wx/msw/dcclient.h" +#include "wx/private/textmeasure.h" #if wxUSE_TOOLTIPS #include "wx/tooltip.h" @@ -2164,31 +2165,18 @@ void wxWindowMSW::DoGetTextExtent(const wxString& string, int *externalLeading, const wxFont *fontToUse) const { - wxASSERT_MSG( !fontToUse || fontToUse->IsOk(), - wxT("invalid font in GetTextExtent()") ); - - HFONT hfontToUse; - if ( fontToUse ) - hfontToUse = GetHfontOf(*fontToUse); + // ensure we work with a valid font + wxFont font; + if ( !fontToUse || !fontToUse->IsOk() ) + font = GetFont(); else - hfontToUse = GetHfontOf(GetFont()); - - WindowHDC hdc(GetHwnd()); - SelectInHDC selectFont(hdc, hfontToUse); + font = *fontToUse; - SIZE sizeRect; - TEXTMETRIC tm; - ::GetTextExtentPoint32(hdc, string.t_str(), string.length(), &sizeRect); - GetTextMetrics(hdc, &tm); + wxCHECK_RET( font.IsOk(), wxT("invalid font in GetTextExtent()") ); - if ( x ) - *x = sizeRect.cx; - if ( y ) - *y = sizeRect.cy; - if ( descent ) - *descent = tm.tmDescent; - if ( externalLeading ) - *externalLeading = tm.tmExternalLeading; + const wxWindow* win = static_cast(this); + wxTextMeasure txm(win, &font); + txm.GetTextExtent(string, x, y, descent, externalLeading); } // --------------------------------------------------------------------------- diff --git a/tests/graphics/measuring.cpp b/tests/graphics/measuring.cpp index 1a2f5e16e8..dbf032bee0 100644 --- a/tests/graphics/measuring.cpp +++ b/tests/graphics/measuring.cpp @@ -1,10 +1,11 @@ /////////////////////////////////////////////////////////////////////////////// // Name: tests/graphics/measuring.cpp // Purpose: Tests for wxGraphicsRenderer::CreateMeasuringContext -// Author: Kevin Ollivier +// Author: Kevin Ollivier, Vadim Zeitlin (non wxGC parts) // Created: 2008-02-12 // RCS-ID: $Id$ // Copyright: (c) 2008 Kevin Ollivier +// (c) 2012 Vadim Zeitlin /////////////////////////////////////////////////////////////////////////////// // ---------------------------------------------------------------------------- @@ -13,9 +14,6 @@ #include "testprec.h" -// wxCairoRenderer::CreateMeasuringContext() is not implement for wxX11 -#if wxUSE_GRAPHICS_CONTEXT && !defined(__WXX11__) - #ifdef __BORLANDC__ #pragma hdrstop #endif @@ -26,37 +24,100 @@ #include "wx/window.h" #endif // WX_PRECOMP -#include "wx/graphics.h" +// wxCairoRenderer::CreateMeasuringContext() is not implement for wxX11 +#if wxUSE_GRAPHICS_CONTEXT && !defined(__WXX11__) + #include "wx/graphics.h" + #define TEST_GC +#endif + +#include "wx/dcclient.h" + // ---------------------------------------------------------------------------- // test class // ---------------------------------------------------------------------------- -class MeasuringContextTestCase : public CppUnit::TestCase +class MeasuringTextTestCase : public CppUnit::TestCase { public: - MeasuringContextTestCase() { } + MeasuringTextTestCase() { } private: - CPPUNIT_TEST_SUITE( MeasuringContextTestCase ); - CPPUNIT_TEST( GetTextExtent ); + CPPUNIT_TEST_SUITE( MeasuringTextTestCase ); + CPPUNIT_TEST( DCGetTextExtent ); + CPPUNIT_TEST( WindowGetTextExtent ); + CPPUNIT_TEST( GetPartialTextExtent ); +#ifdef TEST_GC + CPPUNIT_TEST( GraphicsGetTextExtent ); +#endif // TEST_GC CPPUNIT_TEST_SUITE_END(); - void GetTextExtent(); + template + void DoTestGetTextExtent(const T& obj); - DECLARE_NO_COPY_CLASS(MeasuringContextTestCase) + void DCGetTextExtent(); + void WindowGetTextExtent(); + + void GetPartialTextExtent(); + +#ifdef TEST_GC + void GraphicsGetTextExtent(); +#endif // TEST_GC + + DECLARE_NO_COPY_CLASS(MeasuringTextTestCase) }; // register in the unnamed registry so that these tests are run by default -CPPUNIT_TEST_SUITE_REGISTRATION( MeasuringContextTestCase ); +CPPUNIT_TEST_SUITE_REGISTRATION( MeasuringTextTestCase ); // also include in its own registry so that these tests can be run alone -CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( MeasuringContextTestCase, "MeasuringContextTestCase" ); +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( MeasuringTextTestCase, "MeasuringTextTestCase" ); // ---------------------------------------------------------------------------- // tests themselves // ---------------------------------------------------------------------------- -void MeasuringContextTestCase::GetTextExtent() +template +void MeasuringTextTestCase::DoTestGetTextExtent(const T& obj) +{ + // Test that getting the height only doesn't crash. + int y; + obj.GetTextExtent("H", NULL, &y); + + CPPUNIT_ASSERT( y > 1 ); + + wxSize size = obj.GetTextExtent("Hello"); + CPPUNIT_ASSERT( size.x > 1 ); + CPPUNIT_ASSERT_EQUAL( y, size.y ); +} + +void MeasuringTextTestCase::DCGetTextExtent() +{ + wxClientDC dc(wxTheApp->GetTopWindow()); + + DoTestGetTextExtent(dc); +} + +void MeasuringTextTestCase::WindowGetTextExtent() +{ + wxWindow* const win = wxTheApp->GetTopWindow(); + + DoTestGetTextExtent(*win); +} + +void MeasuringTextTestCase::GetPartialTextExtent() +{ + wxClientDC dc(wxTheApp->GetTopWindow()); + + wxArrayInt widths; + CPPUNIT_ASSERT( dc.GetPartialTextExtents("Hello", widths) ); + CPPUNIT_ASSERT_EQUAL( 5, widths.size() ); + CPPUNIT_ASSERT_EQUAL( widths[0], dc.GetTextExtent("H").x ); + CPPUNIT_ASSERT_EQUAL( widths[4], dc.GetTextExtent("Hello").x ); +} + +#ifdef TEST_GC + +void MeasuringTextTestCase::GraphicsGetTextExtent() { wxGraphicsRenderer* renderer = wxGraphicsRenderer::GetDefaultRenderer(); CPPUNIT_ASSERT(renderer); @@ -74,4 +135,4 @@ void MeasuringContextTestCase::GetTextExtent() } -#endif +#endif // TEST_GC -- 2.45.2