wxRound() workaround to avoid unexpected compile and link errors on incomplete enviro...
authorWłodzimierz Skiba <abx@abx.art.pl>
Thu, 6 Jul 2006 09:09:09 +0000 (09:09 +0000)
committerWłodzimierz Skiba <abx@abx.art.pl>
Thu, 6 Jul 2006 09:09:09 +0000 (09:09 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40024 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/math.h
src/gtk/slider.cpp
src/gtk1/slider.cpp
src/motif/gauge.cpp

index bff0683c94c822be70ce3a0e85d71980695b8769..e99b37a6d6c1eff3e3e8f893f5c5d2e2076f78eb 100644 (file)
 #endif
 
 #ifdef __cplusplus
-#ifdef __INTELC__
-inline bool wxIsSameDouble(double x, double y)
-{
-    // VZ: this warning, given for operators==() and !=() is not wrong, as ==
-    //     shouldn't be used with doubles, but we get too many of them and
-    //     removing these operators is probably not a good idea
-    //
-    //     Maybe we should alway compare doubles up to some "epsilon" precision
-    #pragma warning(push)
-
-    // floating-point equality and inequality comparisons are unreliable
-    #pragma warning(disable: 1572)
-
-    return x == y;
-
-    #pragma warning(pop)
-}
-#else /* !__INTELC__ */
-inline bool wxIsSameDouble(double x, double y) { return x == y; }
-#endif /* __INTELC__/!__INTELC__ */
-
-inline bool wxIsNullDouble(double x) { return wxIsSameDouble(x, 0.); }
+
+    #ifdef __INTELC__
+
+        inline bool wxIsSameDouble(double x, double y)
+        {
+            // VZ: this warning, given for operators==() and !=() is not wrong, as ==
+            //     shouldn't be used with doubles, but we get too many of them and
+            //     removing these operators is probably not a good idea
+            //
+            //     Maybe we should alway compare doubles up to some "epsilon" precision
+            #pragma warning(push)
+
+            // floating-point equality and inequality comparisons are unreliable
+            #pragma warning(disable: 1572)
+
+            return x == y;
+
+            #pragma warning(pop)
+        }
+
+    #else /* !__INTELC__ */
+
+        inline bool wxIsSameDouble(double x, double y) { return x == y; }
+
+    #endif /* __INTELC__/!__INTELC__ */
+
+    inline bool wxIsNullDouble(double x) { return wxIsSameDouble(x, 0.); }
+
+    #ifdef __VMS
+        //Missing definition in OpenVMS C++ header files.
+        double round(double __x);
+    #endif
+    inline int wxRound(double x)
+    {
+        #ifdef __VMS
+            return int(round(x));
+        #else
+            return (int)(x < 0 ? x - 0.5 : x + 0.5);
+        #endif
+    }
 #endif /* __cplusplus */
 
 
index 3eaaba17d7dc4fe9d6c57e67b60a2be8ac2ffafa..0eeb6b696e405aad89123cec28a4cabdc6523c8a 100644 (file)
 
 #if wxUSE_SLIDER
 
-#ifdef __VMS
-   //Missing definition in OpenVMS C++ header files.
-   double round(double __x);
-#endif
-
 #include "wx/slider.h"
 
 #ifndef WX_PRECOMP
     #include "wx/utils.h"
+    #include "wx/math.h"
 #endif
 
 #include "wx/gtk/private.h"
@@ -134,7 +130,7 @@ gtk_value_changed(GtkRange* range, wxSlider* win)
     if (g_blockEventsOnDrag) return;
 
     GtkAdjustment* adj = range->adjustment;
-    const int pos = int(round(adj->value));
+    const int pos = wxRound(adj->value);
     const double oldPos = win->m_pos;
     win->m_pos = adj->value;
     if (win->m_blockScrollEvent)
@@ -183,7 +179,7 @@ gtk_value_changed(GtkRange* range, wxSlider* win)
     win->m_scrollEventType = GTK_SCROLL_NONE;
 
     // If integral position has changed
-    if (int(round(oldPos)) != pos)
+    if (wxRound(oldPos) != pos)
     {
         wxCHECK_RET(eventType != wxEVT_NULL, _T("Unknown slider scroll event type"));
         ProcessScrollEvent(win, eventType);
@@ -270,7 +266,7 @@ extern "C" {
 static gchar* gtk_format_value(GtkScale*, double value, void*)
 {
     // Format value as nearest integer
-    return g_strdup_printf("%d", int(round(value)));
+    return g_strdup_printf("%d", wxRound(value));
 }
 }
 
@@ -340,7 +336,7 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id,
 
 int wxSlider::GetValue() const
 {
-    return int(round(m_pos));
+    return wxRound(m_pos);
 }
 
 void wxSlider::SetValue( int value )
index ddeb7570c7218d567fb530d747f819727f95cc02..e0070f21ed38f7a280308e16f4b28fbcf44556c5 100644 (file)
@@ -44,13 +44,6 @@ static inline bool AreSameAdjustValues(double x, double y)
     return fabs(x - y) < 0.02;
 }
 
-static inline int AdjustValueToInt(double x)
-{
-    // we want to round to the nearest integer, i.e. 0.9 is rounded to 1 and
-    // -0.9 is rounded to -1
-    return (int)(x < 0 ? x - 0.5 : x + 0.5);
-}
-
 // process a scroll event
 static void
 ProcessScrollEvent(wxSlider *win, wxEventType evtType, double dvalue)
@@ -209,7 +202,7 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id,
 
 int wxSlider::GetValue() const
 {
-    return AdjustValueToInt(m_adjust->value);
+    return wxRound(m_adjust->value);
 }
 
 void wxSlider::SetValue( int value )
index dbb5a2495e4a4712f6a169faf8c8cf86990dee93..c809994fbce97ab2ef5feb6534afa2666d8ab593 100644 (file)
 #undef XtClass
 #endif
 
-# include "wx/gauge.h"
+#include "wx/gauge.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/math.h"
+#endif
 
 #ifdef __OS2__
 #include <types.h>
@@ -673,8 +677,6 @@ GaugePick(Widget WXUNUSED(w), XEvent *WXUNUSED(e), String *WXUNUSED(args), Cardi
 #endif
 }
 
-#define round(x) ( (x) > 0 ? ((x) + 0.5) : -(-(x) + 0.5) )
-
 void
 GaugeDrag(Widget WXUNUSED(w), XEvent *WXUNUSED(e), String *WXUNUSED(args), Cardinal  *WXUNUSED(num_args))
 {
@@ -720,7 +722,7 @@ GaugeDrag(Widget WXUNUSED(w), XEvent *WXUNUSED(e), String *WXUNUSED(args), Cardi
 
     fvalue = (int)((float)THIS.maximum -
         (float)THIS.minimum) * (float)nsize / (float)max;
-    value = round(fvalue);
+    value = wxRound(fvalue);
 
     THIS.value = value;
     THIS.oldx = x;