]> git.saurik.com Git - wxWidgets.git/commitdiff
Applied patch 1586499: wxCoordRound function
authorJulian Smart <julian@anthemion.co.uk>
Sun, 29 Oct 2006 17:01:34 +0000 (17:01 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Sun, 29 Oct 2006 17:01:34 +0000 (17:01 +0000)
Centralises rounding and adds nearest-value rounding to
prntbase.cpp.
by Robert J. Lang

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42624 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/function.tex
include/wx/defs.h
include/wx/dfb/dc.h
include/wx/gtk/gnome/gprint.h
include/wx/gtk1/dc.h
include/wx/mac/carbon/dc.h
include/wx/mac/classic/dc.h
include/wx/mgl/dc.h
include/wx/x11/dc.h
src/common/prntbase.cpp
src/mac/carbon/dccg.cpp

index 96b383f984442cc513b5b3ac76200d2a40f35fc2..47d46b1b40c634db6d6d7e4e2e32fd038c2e05a2 100644 (file)
@@ -58,6 +58,7 @@ the corresponding topic.
 \helpref{wxCONCAT}{wxconcat}\\
 \helpref{wxConcatFiles}{wxconcatfiles}\\
 \helpref{wxConstCast}{wxconstcast}\\
+\helpref{wxCoordRound}{wxcoordround}\\
 \helpref{wxCopyFile}{wxcopyfile}\\
 \helpref{wxCreateDynamicObject}{wxcreatedynamicobject}\\
 \helpref{wxCreateFileTipProvider}{wxcreatefiletipprovider}\\
@@ -2846,6 +2847,21 @@ code which might have to be compiled with an old compiler without support for
 this language feature but still take advantage of it when it is available.
 
 
+
+\membersection{::wxCoordRound}\label{wxcoordround}
+
+\func{wxCoord}{wxCoordRound}{\param{const float\& }{f}}
+
+\func{wxCoord}{wxCoordRound}{\param{const double\& }{f}}
+
+Convert \em{f} to a wxCoord, using round-to-nearest. This is commonly used
+in scaling calculations.
+
+\wxheading{Include files}
+
+<wx/defs.h>
+
+
 \membersection{::wxGetKeyState}\label{wxgetkeystate}
 
 \func{bool}{wxGetKeyState}{\param{wxKeyCode }{key}}
index 8082fe9d2af50074eab902950328693a643f24c8..831f870c5ea0361f920d6f9dde725d64fa18a660 100644 (file)
@@ -658,6 +658,18 @@ typedef int wxCoord;
 
 enum {  wxDefaultCoord = -1 };
 
+/*  round-to-nearest (used in scaling) */
+#ifdef __cplusplus
+inline wxCoord wxCoordRound(const float& f)
+{
+    return (f > 0) ? (wxCoord)(f + 0.5) : (f < 0) ? (wxCoord)(f - 0.5) : 0;
+}
+inline wxCoord wxCoordRound(const double& f)
+{
+    return (f > 0) ? (wxCoord)(f + 0.5) : (f < 0) ? (wxCoord)(f - 0.5) : 0;
+}
+#endif
+
 /*  ---------------------------------------------------------------------------- */
 /*  define fixed length types */
 /*  ---------------------------------------------------------------------------- */
index 92abb84e3979148591dee822118679e08f26d6bf..0f189d4eebc8e69860c104526be9a28fcb50e725 100644 (file)
@@ -80,63 +80,35 @@ public:
 
     wxCoord XDEV2LOG(wxCoord x) const
     {
-        wxCoord new_x = x - m_deviceOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)(new_x) / m_scaleX + 0.5) * m_signX + m_logicalOriginX;
-        else
-            return (wxCoord)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX;
+        return wxCoordRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
     }
     wxCoord XDEV2LOGREL(wxCoord x) const
     {
-        if (x > 0)
-            return (wxCoord)((double)(x) / m_scaleX + 0.5);
-        else
-            return (wxCoord)((double)(x) / m_scaleX - 0.5);
+        return wxCoordRound((double)(x) / m_scaleX);
     }
     wxCoord YDEV2LOG(wxCoord y) const
     {
-        wxCoord new_y = y - m_deviceOriginY;
-        if (new_y > 0)
-            return (wxCoord)((double)(new_y) / m_scaleY + 0.5) * m_signY + m_logicalOriginY;
-        else
-            return (wxCoord)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY;
+        return wxCoordRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
     }
     wxCoord YDEV2LOGREL(wxCoord y) const
     {
-        if (y > 0)
-            return (wxCoord)((double)(y) / m_scaleY + 0.5);
-        else
-            return (wxCoord)((double)(y) / m_scaleY - 0.5);
+        return wCoordRound((double)(y) / m_scaleY);
     }
     wxCoord XLOG2DEV(wxCoord x) const
     {
-        wxCoord new_x = x - m_logicalOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX;
-        else
-            return (wxCoord)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX;
+        return wxCoordRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
     }
     wxCoord XLOG2DEVREL(wxCoord x) const
     {
-        if (x > 0)
-            return (wxCoord)((double)(x) * m_scaleX + 0.5);
-        else
-            return (wxCoord)((double)(x) * m_scaleX - 0.5);
+        return wxCoordRound((double)(x) * m_scaleX);
     }
     wxCoord YLOG2DEV(wxCoord y) const
     {
-        wxCoord new_y = y - m_logicalOriginY;
-        if (new_y > 0)
-            return (wxCoord)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY;
-        else
-            return (wxCoord)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY;
+        return wxCoordRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
     }
     wxCoord YLOG2DEVREL(wxCoord y) const
     {
-        if (y > 0)
-            return (wxCoord)((double)(y) * m_scaleY + 0.5);
-        else
-            return (wxCoord)((double)(y) * m_scaleY - 0.5);
+        return wxCoordRound((double)(y) * m_scaleY);
     }
 
     // Returns the surface (and increases its ref count)
index 4cdb6d999c368edcd6ef8f3e8c0cd460af92ff8d..8490d504c28238ed694ba0e4e151fc18039120d8 100644 (file)
@@ -296,63 +296,35 @@ private:
 private:
     wxCoord XDEV2LOG(wxCoord x) const
     {
-        wxCoord new_x = x - m_deviceOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)(new_x) / m_scaleX + 0.5) * m_signX + m_logicalOriginX;
-        else
-            return (wxCoord)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX;
+        return wxCoordRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
     }
     wxCoord XDEV2LOGREL(wxCoord x) const
     {
-        if (x > 0)
-            return (wxCoord)((double)(x) / m_scaleX + 0.5);
-        else
-            return (wxCoord)((double)(x) / m_scaleX - 0.5);
+        return wxCoordRound((double)(x) / m_scaleX);
     }
     wxCoord YDEV2LOG(wxCoord y) const
     {
-        wxCoord new_y = y - m_deviceOriginY;
-        if (new_y > 0)
-            return (wxCoord)((double)(new_y) / m_scaleY + 0.5) * m_signY + m_logicalOriginY;
-        else
-            return (wxCoord)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY;
+        return wxCoordRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
     }
     wxCoord YDEV2LOGREL(wxCoord y) const
     {
-        if (y > 0)
-            return (wxCoord)((double)(y) / m_scaleY + 0.5);
-        else
-            return (wxCoord)((double)(y) / m_scaleY - 0.5);
+        return wCoordRound((double)(y) / m_scaleY);
     }
     wxCoord XLOG2DEV(wxCoord x) const
     {
-        wxCoord new_x = x - m_logicalOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX;
-        else
-            return (wxCoord)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX;
+        return wxCoordRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
     }
     wxCoord XLOG2DEVREL(wxCoord x) const
     {
-        if (x > 0)
-            return (wxCoord)((double)(x) * m_scaleX + 0.5);
-        else
-            return (wxCoord)((double)(x) * m_scaleX - 0.5);
+        return wxCoordRound((double)(x) * m_scaleX);
     }
     wxCoord YLOG2DEV(wxCoord y) const
     {
-        wxCoord new_y = y - m_logicalOriginY;
-        if (new_y > 0)
-            return (wxCoord)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY;
-        else
-            return (wxCoord)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY;
+        return wxCoordRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
     }
     wxCoord YLOG2DEVREL(wxCoord y) const
     {
-        if (y > 0)
-            return (wxCoord)((double)(y) * m_scaleY + 0.5);
-        else
-            return (wxCoord)((double)(y) * m_scaleY - 0.5);
+        return wxCoordRound((double)(y) * m_scaleY);
     }
 private:
     DECLARE_DYNAMIC_CLASS(wxGnomePrintDC)
index 82f2ae49e788599b5eb045e3980f542187e03460..fe00bef38fa2a01409ac998ae0f338647657bc93 100644 (file)
@@ -70,63 +70,35 @@ public:
 
     wxCoord XDEV2LOG(wxCoord x) const
     {
-        wxCoord new_x = x - m_deviceOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)(new_x) / m_scaleX + 0.5) * m_signX + m_logicalOriginX;
-        else
-            return (wxCoord)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX;
+        return wxCoordRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
     }
     wxCoord XDEV2LOGREL(wxCoord x) const
     {
-        if (x > 0)
-            return (wxCoord)((double)(x) / m_scaleX + 0.5);
-        else
-            return (wxCoord)((double)(x) / m_scaleX - 0.5);
+        return wxCoordRound((double)(x) / m_scaleX);
     }
     wxCoord YDEV2LOG(wxCoord y) const
     {
-        wxCoord new_y = y - m_deviceOriginY;
-        if (new_y > 0)
-            return (wxCoord)((double)(new_y) / m_scaleY + 0.5) * m_signY + m_logicalOriginY;
-        else
-            return (wxCoord)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY;
+        return wxCoordRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
     }
     wxCoord YDEV2LOGREL(wxCoord y) const
     {
-        if (y > 0)
-            return (wxCoord)((double)(y) / m_scaleY + 0.5);
-        else
-            return (wxCoord)((double)(y) / m_scaleY - 0.5);
+        return wCoordRound((double)(y) / m_scaleY);
     }
     wxCoord XLOG2DEV(wxCoord x) const
     {
-        wxCoord new_x = x - m_logicalOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX;
-        else
-            return (wxCoord)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX;
+        return wxCoordRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
     }
     wxCoord XLOG2DEVREL(wxCoord x) const
     {
-        if (x > 0)
-            return (wxCoord)((double)(x) * m_scaleX + 0.5);
-        else
-            return (wxCoord)((double)(x) * m_scaleX - 0.5);
+        return wxCoordRound((double)(x) * m_scaleX);
     }
     wxCoord YLOG2DEV(wxCoord y) const
     {
-        wxCoord new_y = y - m_logicalOriginY;
-        if (new_y > 0)
-            return (wxCoord)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY;
-        else
-            return (wxCoord)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY;
+        return wxCoordRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
     }
     wxCoord YLOG2DEVREL(wxCoord y) const
     {
-        if (y > 0)
-            return (wxCoord)((double)(y) * m_scaleY + 0.5);
-        else
-            return (wxCoord)((double)(y) * m_scaleY - 0.5);
+        return wxCoordRound((double)(y) * m_scaleY);
     }
 
 protected:
index 2b40a0daa08c8c4a3f213d387d6bef56b25b7049..6b10ee2093a30b96f6ec5686c24b82ebcb8020f8 100644 (file)
@@ -158,88 +158,45 @@ public:
 public:
     wxCoord XDEV2LOG(wxCoord x) const
     {
-        long new_x = x - m_deviceOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)new_x / m_scaleX + 0.5) * m_signX + m_logicalOriginX;
-        else
-            return (wxCoord)((double)new_x / m_scaleX - 0.5) * m_signX + m_logicalOriginX;
+        return wxCoordRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
     }
-
     wxCoord XDEV2LOGREL(wxCoord x) const
     {
-        if (x > 0)
-            return (wxCoord)((double)x / m_scaleX + 0.5);
-        else
-            return (wxCoord)((double)x / m_scaleX - 0.5);
+        return wxCoordRound((double)(x) / m_scaleX);
     }
-
     wxCoord YDEV2LOG(wxCoord y) const
     {
-        long new_y = y - m_deviceOriginY;
-        if (new_y > 0)
-            return (wxCoord)((double)new_y / m_scaleY + 0.5) * m_signY + m_logicalOriginY;
-        else
-            return (wxCoord)((double)new_y / m_scaleY - 0.5) * m_signY + m_logicalOriginY;
+        return wxCoordRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
     }
-
     wxCoord YDEV2LOGREL(wxCoord y) const
     {
-        if (y > 0)
-            return (wxCoord)((double)y / m_scaleY + 0.5);
-        else
-            return (wxCoord)((double)y / m_scaleY - 0.5);
+        return wCoordRound((double)(y) / m_scaleY);
     }
-
     wxCoord XLOG2DEV(wxCoord x) const
     {
-        long new_x = x - m_logicalOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)new_x * m_scaleX + 0.5) * m_signX + m_deviceOriginX;
-        else
-            return (wxCoord)((double)new_x * m_scaleX - 0.5) * m_signX + m_deviceOriginX;
+        return wxCoordRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
     }
-
     wxCoord XLOG2DEVREL(wxCoord x) const
     {
-        if (x > 0)
-            return (wxCoord)((double)x * m_scaleX + 0.5);
-        else
-            return (wxCoord)((double)x * m_scaleX - 0.5);
+        return wxCoordRound((double)(x) * m_scaleX);
     }
-
     wxCoord YLOG2DEV(wxCoord y) const
     {
-        long new_y = y - m_logicalOriginY;
-        if (new_y > 0)
-            return (wxCoord)((double)new_y * m_scaleY + 0.5) * m_signY + m_deviceOriginY;
-        else
-            return (wxCoord)((double)new_y * m_scaleY - 0.5) * m_signY + m_deviceOriginY;
+        return wxCoordRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
     }
-
     wxCoord YLOG2DEVREL(wxCoord y) const
     {
-        if (y > 0)
-            return (wxCoord)((double)y * m_scaleY + 0.5);
-        else
-            return (wxCoord)((double)y * m_scaleY - 0.5);
+        return wxCoordRound((double)(y) * m_scaleY);
     }
 
     wxCoord XLOG2DEVMAC(wxCoord x) const
     {
-        long new_x = x - m_logicalOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)new_x * m_scaleX + 0.5) * m_signX + m_deviceOriginX + m_macLocalOrigin.x;
-        else
-            return (wxCoord)((double)new_x * m_scaleX - 0.5) * m_signX + m_deviceOriginX + m_macLocalOrigin.x;
+        return wxCoordRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX + m_macLocalOrigin.x;
     }
 
     wxCoord YLOG2DEVMAC(wxCoord y) const
     {
-        long new_y = y - m_logicalOriginY;
-        if (new_y > 0)
-            return (wxCoord)((double)new_y * m_scaleY + 0.5) * m_signY + m_deviceOriginY + m_macLocalOrigin.y;
-        else
-            return (wxCoord)((double)new_y * m_scaleY - 0.5) * m_signY + m_deviceOriginY + m_macLocalOrigin.y;
+        return wxCoordRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY + m_macLocalOrigin.y;
     }
 
 #if wxMAC_USE_CORE_GRAPHICS
index 88b7dacfb3e0adf1ef3a0f35e17d0a1888b2f886..392b4f7a1947dba3c1af0927cd1f3c722108e50a 100644 (file)
@@ -105,79 +105,45 @@ class WXDLLEXPORT wxDC: public wxDCBase
 
     wxCoord XDEV2LOG(wxCoord x) const
     {
-      long new_x = x - m_deviceOriginX ;
-      if (new_x > 0)
-        return (wxCoord)((double)(new_x) / m_scaleX + 0.5) * m_signX + m_logicalOriginX;
-      else
-        return (wxCoord)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX;
+        return wxCoordRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
     }
     wxCoord XDEV2LOGREL(wxCoord x) const
     {
-      if (x > 0)
-        return (wxCoord)((double)(x) / m_scaleX + 0.5);
-      else
-        return (wxCoord)((double)(x) / m_scaleX - 0.5);
+        return wxCoordRound((double)(x) / m_scaleX);
     }
     wxCoord YDEV2LOG(wxCoord y) const
     {
-      long new_y = y - m_deviceOriginY ;
-      if (new_y > 0)
-        return (wxCoord)((double)(new_y) / m_scaleY + 0.5) * m_signY + m_logicalOriginY;
-      else
-        return (wxCoord)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY;
+        return wxCoordRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
     }
     wxCoord YDEV2LOGREL(wxCoord y) const
     {
-      if (y > 0)
-        return (wxCoord)((double)(y) / m_scaleY + 0.5);
-      else
-        return (wxCoord)((double)(y) / m_scaleY - 0.5);
+        return wCoordRound((double)(y) / m_scaleY);
     }
     wxCoord XLOG2DEV(wxCoord x) const
     {
-      long new_x = x - m_logicalOriginX;
-      if (new_x > 0)
-        return (wxCoord)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX  ;
-      else
-        return (wxCoord)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX ;
+        return wxCoordRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
     }
     wxCoord XLOG2DEVREL(wxCoord x) const
     {
-      if (x > 0)
-        return (wxCoord)((double)(x) * m_scaleX + 0.5);
-      else
-        return (wxCoord)((double)(x) * m_scaleX - 0.5);
+        return wxCoordRound((double)(x) * m_scaleX);
     }
     wxCoord YLOG2DEV(wxCoord y) const
     {
-      long new_y = y - m_logicalOriginY ;
-      if (new_y > 0)
-        return (wxCoord)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY ;
-      else
-        return (wxCoord)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY ;
+        return wxCoordRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
     }
     wxCoord YLOG2DEVREL(wxCoord y) const
     {
-      if (y > 0)
-        return (wxCoord)((double)(y) * m_scaleY + 0.5);
-      else
-        return (wxCoord)((double)(y) * m_scaleY - 0.5);
+        return wxCoordRound((double)(y) * m_scaleY);
     }
+
     wxCoord XLOG2DEVMAC(wxCoord x) const
     {
-      long new_x = x - m_logicalOriginX;
-      if (new_x > 0)
-        return (wxCoord)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX + m_macLocalOrigin.x ;
-      else
-        return (wxCoord)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX + m_macLocalOrigin.x ;
+        return wxCoordRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX + m_macLocalOrigin.x;
     }
+
     wxCoord YLOG2DEVMAC(wxCoord y) const
     {
-      long new_y = y - m_logicalOriginY ;
-      if (new_y > 0)
-        return (wxCoord)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY + m_macLocalOrigin.y ;
-      else
-        return (wxCoord)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY + m_macLocalOrigin.y ;
+        return wxCoordRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY + m_macLocalOrigin.y;
     }
 
     WXHRGN MacGetCurrentClipRgn() { return m_macCurrentClipRgn ; }
index 192a729417d77545a6a5f232a2b3f3dd21c71f9e..a838fcd724491e5a52844665a909a6ba1df39447 100644 (file)
@@ -101,63 +101,35 @@ public:
 
     wxCoord XDEV2LOG(wxCoord x) const
     {
-        wxCoord new_x = x - m_deviceOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)(new_x) / m_scaleX + 0.5) * m_signX + m_logicalOriginX;
-        else
-            return (wxCoord)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX;
+        return wxCoordRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
     }
     wxCoord XDEV2LOGREL(wxCoord x) const
     {
-        if (x > 0)
-            return (wxCoord)((double)(x) / m_scaleX + 0.5);
-        else
-            return (wxCoord)((double)(x) / m_scaleX - 0.5);
+        return wxCoordRound((double)(x) / m_scaleX);
     }
     wxCoord YDEV2LOG(wxCoord y) const
     {
-        wxCoord new_y = y - m_deviceOriginY;
-        if (new_y > 0)
-            return (wxCoord)((double)(new_y) / m_scaleY + 0.5) * m_signY + m_logicalOriginY;
-        else
-            return (wxCoord)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY;
+        return wxCoordRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
     }
     wxCoord YDEV2LOGREL(wxCoord y) const
     {
-        if (y > 0)
-            return (wxCoord)((double)(y) / m_scaleY + 0.5);
-        else
-            return (wxCoord)((double)(y) / m_scaleY - 0.5);
+        return wCoordRound((double)(y) / m_scaleY);
     }
     wxCoord XLOG2DEV(wxCoord x) const
     {
-        wxCoord new_x = x - m_logicalOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX;
-        else
-            return (wxCoord)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX;
+        return wxCoordRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
     }
     wxCoord XLOG2DEVREL(wxCoord x) const
     {
-        if (x > 0)
-            return (wxCoord)((double)(x) * m_scaleX + 0.5);
-        else
-            return (wxCoord)((double)(x) * m_scaleX - 0.5);
+        return wxCoordRound((double)(x) * m_scaleX);
     }
     wxCoord YLOG2DEV(wxCoord y) const
     {
-        wxCoord new_y = y - m_logicalOriginY;
-        if (new_y > 0)
-            return (wxCoord)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY;
-        else
-            return (wxCoord)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY;
+        return wxCoordRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
     }
     wxCoord YLOG2DEVREL(wxCoord y) const
     {
-        if (y > 0)
-            return (wxCoord)((double)(y) * m_scaleY + 0.5);
-        else
-            return (wxCoord)((double)(y) * m_scaleY - 0.5);
+        return wxCoordRound((double)(y) * m_scaleY);
     }
 
     MGLDevCtx *GetMGLDC() const { return m_MGLDC; }
index 7c80e92e198c9bd6883fdbd542d22c95e15c93ea..99ba4178b9bc2a12fd70c02a66806d709318ef95 100644 (file)
@@ -65,63 +65,35 @@ public:
 
     wxCoord XDEV2LOG(wxCoord x) const
     {
-        wxCoord new_x = x - m_deviceOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)(new_x) / m_scaleX + 0.5) * m_signX + m_logicalOriginX;
-        else
-            return (wxCoord)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX;
+        return wxCoordRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
     }
     wxCoord XDEV2LOGREL(wxCoord x) const
     {
-        if (x > 0)
-            return (wxCoord)((double)(x) / m_scaleX + 0.5);
-        else
-            return (wxCoord)((double)(x) / m_scaleX - 0.5);
+        return wxCoordRound((double)(x) / m_scaleX);
     }
     wxCoord YDEV2LOG(wxCoord y) const
     {
-        wxCoord new_y = y - m_deviceOriginY;
-        if (new_y > 0)
-            return (wxCoord)((double)(new_y) / m_scaleY + 0.5) * m_signY + m_logicalOriginY;
-        else
-            return (wxCoord)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY;
+        return wxCoordRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
     }
     wxCoord YDEV2LOGREL(wxCoord y) const
     {
-        if (y > 0)
-            return (wxCoord)((double)(y) / m_scaleY + 0.5);
-        else
-            return (wxCoord)((double)(y) / m_scaleY - 0.5);
+        return wCoordRound((double)(y) / m_scaleY);
     }
     wxCoord XLOG2DEV(wxCoord x) const
     {
-        wxCoord new_x = x - m_logicalOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX;
-        else
-            return (wxCoord)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX;
+        return wxCoordRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
     }
     wxCoord XLOG2DEVREL(wxCoord x) const
     {
-        if (x > 0)
-            return (wxCoord)((double)(x) * m_scaleX + 0.5);
-        else
-            return (wxCoord)((double)(x) * m_scaleX - 0.5);
+        return wxCoordRound((double)(x) * m_scaleX);
     }
     wxCoord YLOG2DEV(wxCoord y) const
     {
-        wxCoord new_y = y - m_logicalOriginY;
-        if (new_y > 0)
-            return (wxCoord)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY;
-        else
-            return (wxCoord)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY;
+        return wxCoordRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
     }
     wxCoord YLOG2DEVREL(wxCoord y) const
     {
-        if (y > 0)
-            return (wxCoord)((double)(y) * m_scaleY + 0.5);
-        else
-            return (wxCoord)((double)(y) * m_scaleY - 0.5);
+        return wxCoordRound((double)(y) * m_scaleY);
     }
 
 public:
index 0620e82bdf99239b5e21178b56eeced50c485649..94b3de2a3922836f16e000c981bd71b060dd7ec7 100644 (file)
@@ -617,10 +617,10 @@ void wxPrintout::FitThisSizeToPageMargins(const wxSize& imageSize, const wxPageS
     GetPageSizeMM(&mw, &mh);
     float mmToDeviceX = float(pw) / mw;
     float mmToDeviceY = float(ph) / mh;
-    wxRect pageMarginsRect(paperRect.x + wxCoord(mmToDeviceX * topLeft.x),
-        paperRect.y + wxCoord(mmToDeviceY * topLeft.y),
-        paperRect.width - wxCoord(mmToDeviceX * (topLeft.x + bottomRight.x)),
-        paperRect.height - wxCoord(mmToDeviceY * (topLeft.y + bottomRight.y)));
+    wxRect pageMarginsRect(paperRect.x + wxCoordRound(mmToDeviceX * topLeft.x),
+        paperRect.y + wxCoordRound(mmToDeviceY * topLeft.y),
+        paperRect.width - wxCoordRound(mmToDeviceX * (topLeft.x + bottomRight.x)),
+        paperRect.height - wxCoordRound(mmToDeviceY * (topLeft.y + bottomRight.y)));
     wxCoord w, h;
     m_printoutDC->GetSize(&w, &h);
     float scaleX = (float(pageMarginsRect.width) * w) / (float(pw) * imageSize.x);
@@ -708,10 +708,10 @@ wxRect wxPrintout::GetLogicalPaperRect() const
     // This DC doesn't match the printed page, so we have to scale.
     float scaleX = float(w) / pw;
     float scaleY = float(h) / ph;
-    return wxRect(m_printoutDC->DeviceToLogicalX(wxCoord(paperRect.x * scaleX)), 
-        m_printoutDC->DeviceToLogicalY(wxCoord(paperRect.y * scaleY)), 
-        m_printoutDC->DeviceToLogicalXRel(wxCoord(paperRect.width * scaleX)), 
-        m_printoutDC->DeviceToLogicalYRel(wxCoord(paperRect.height * scaleY)));
+    return wxRect(m_printoutDC->DeviceToLogicalX(wxCoordRound(paperRect.x * scaleX)), 
+        m_printoutDC->DeviceToLogicalY(wxCoordRound(paperRect.y * scaleY)), 
+        m_printoutDC->DeviceToLogicalXRel(wxCoordRound(paperRect.width * scaleX)), 
+        m_printoutDC->DeviceToLogicalYRel(wxCoordRound(paperRect.height * scaleY)));
 }
 
 wxRect wxPrintout::GetLogicalPageRect() const
@@ -740,10 +740,10 @@ wxRect wxPrintout::GetLogicalPageMarginsRect(const wxPageSetupDialogData& pageSe
     GetPageSizeMM(&mw, &mh);
     float mmToDeviceX = float(pw) / mw;
     float mmToDeviceY = float(ph) / mh;
-    wxRect pageMarginsRect(paperRect.x + wxCoord(mmToDeviceX * topLeft.x),
-        paperRect.y + wxCoord(mmToDeviceY * topLeft.y),
-        paperRect.width - wxCoord(mmToDeviceX * (topLeft.x + bottomRight.x)),
-        paperRect.height - wxCoord(mmToDeviceY * (topLeft.y + bottomRight.y)));
+    wxRect pageMarginsRect(paperRect.x + wxCoordRound(mmToDeviceX * topLeft.x),
+        paperRect.y + wxCoordRound(mmToDeviceY * topLeft.y),
+        paperRect.width - wxCoordRound(mmToDeviceX * (topLeft.x + bottomRight.x)),
+        paperRect.height - wxCoordRound(mmToDeviceY * (topLeft.y + bottomRight.y)));
     wxCoord w, h;
     m_printoutDC->GetSize(&w, &h);
     if (w == pw && h == ph) {
@@ -756,10 +756,10 @@ wxRect wxPrintout::GetLogicalPageMarginsRect(const wxPageSetupDialogData& pageSe
     // This DC doesn't match the printed page, so we have to scale.
     float scaleX = float(w) / pw;
     float scaleY = float(h) / ph;
-    return wxRect(m_printoutDC->DeviceToLogicalX(wxCoord(pageMarginsRect.x * scaleX)), 
-        m_printoutDC->DeviceToLogicalY(wxCoord(pageMarginsRect.y * scaleY)), 
-        m_printoutDC->DeviceToLogicalXRel(wxCoord(pageMarginsRect.width * scaleX)), 
-        m_printoutDC->DeviceToLogicalYRel(wxCoord(pageMarginsRect.height * scaleY)));
+    return wxRect(m_printoutDC->DeviceToLogicalX(wxCoordRound(pageMarginsRect.x * scaleX)), 
+        m_printoutDC->DeviceToLogicalY(wxCoordRound(pageMarginsRect.y * scaleY)), 
+        m_printoutDC->DeviceToLogicalXRel(wxCoordRound(pageMarginsRect.width * scaleX)), 
+        m_printoutDC->DeviceToLogicalYRel(wxCoordRound(pageMarginsRect.height * scaleY)));
 }
 
 void wxPrintout::SetLogicalOrigin(wxCoord x, wxCoord y)
index 01514f90f2048112d38b9ba761af2a45c2213767..2d2f2e27a4b31b852872c02a0b677caeec0c1636 100755 (executable)
@@ -2286,70 +2286,42 @@ void wxDC::Clear(void)
 */ // TODO
 wxCoord wxDCBase::DeviceToLogicalX(wxCoord x) const
 {
-        long new_x = x - m_deviceOriginX;
-        if (new_x > 0)
-            return (wxCoord)((double)new_x / m_scaleX + 0.5) * m_signX + m_logicalOriginX;
-        else
-            return (wxCoord)((double)new_x / m_scaleX - 0.5) * m_signX + m_logicalOriginX;
+    return wxCoordRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
 }
 
 wxCoord wxDCBase::DeviceToLogicalY(wxCoord y) const
 {
-       long new_y = y - m_deviceOriginY;
-       if (new_y > 0)
-               return (wxCoord)((double)new_y / m_scaleY + 0.5) * m_signY + m_logicalOriginY;
-       else
-               return (wxCoord)((double)new_y / m_scaleY - 0.5) * m_signY + m_logicalOriginY;
+    return wxCoordRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
 }
 
 wxCoord wxDCBase::DeviceToLogicalXRel(wxCoord x) const
 {
-       if (x > 0)
-               return (wxCoord)((double)x / m_scaleX + 0.5);
-       else
-               return (wxCoord)((double)x / m_scaleX - 0.5);
+    return wxCoordRound((double)(x) / m_scaleX);
 }
 
 wxCoord wxDCBase::DeviceToLogicalYRel(wxCoord y) const
 {
-       if (y > 0)
-               return (wxCoord)((double)y / m_scaleY + 0.5);
-       else
-               return (wxCoord)((double)y / m_scaleY - 0.5);
+    return wxCoordRound((double)(y) / m_scaleY);
 }
 
 wxCoord wxDCBase::LogicalToDeviceX(wxCoord x) const
 {
-       long new_x = x - m_logicalOriginX;
-       if (new_x > 0)
-               return (wxCoord)((double)new_x * m_scaleX + 0.5) * m_signX + m_deviceOriginX;
-       else
-               return (wxCoord)((double)new_x * m_scaleX - 0.5) * m_signX + m_deviceOriginX;
+    return wxCoordRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
 }
 
 wxCoord wxDCBase::LogicalToDeviceY(wxCoord y) const
 {
-       long new_y = y - m_logicalOriginY;
-       if (new_y > 0)
-               return (wxCoord)((double)new_y * m_scaleY + 0.5) * m_signY + m_deviceOriginY;
-       else
-               return (wxCoord)((double)new_y * m_scaleY - 0.5) * m_signY + m_deviceOriginY;
+    return wxCoordRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
 }
 
 wxCoord wxDCBase::LogicalToDeviceXRel(wxCoord x) const
 {
-       if (x > 0)
-               return (wxCoord)((double)x * m_scaleX + 0.5);
-       else
-               return (wxCoord)((double)x * m_scaleX - 0.5);
+    return wxCoordRound((double)(x) * m_scaleX);
 }
 
 wxCoord wxDCBase::LogicalToDeviceYRel(wxCoord y) const
 {
-        if (y > 0)
-            return (wxCoord)((double)y * m_scaleY + 0.5);
-        else
-            return (wxCoord)((double)y * m_scaleY - 0.5);
+    return wxCoordRound((double)(y) * m_scaleY);
 }
 
 #endif // wxMAC_USE_CORE_GRAPHICS