From 1eba6c7644f801f82c66b109f39d754f0c4e05f2 Mon Sep 17 00:00:00 2001
From: Dan Kegel <dank@kegel.com>
Date: Thu, 6 Mar 2008 12:33:09 -0800
Subject: [PATCH] winex11: wintab.c: use atan2 instead of atan.

---
 dlls/winex11.drv/wintab.c | 33 ++++++---------------------------
 1 file changed, 6 insertions(+), 27 deletions(-)

diff --git a/dlls/winex11.drv/wintab.c b/dlls/winex11.drv/wintab.c
index da18ce05e9d..e5d7071987e 100644
--- a/dlls/winex11.drv/wintab.c
+++ b/dlls/winex11.drv/wintab.c
@@ -742,35 +742,14 @@ void X11DRV_LoadTabletInfo(HWND hwnddefault)
 
 static int figure_deg(int x, int y)
 {
-    int rc;
+    float angle;
 
-    if (y != 0)
-    {
-        rc = (int) 10 * (atan( (FLOAT)abs(y) / (FLOAT)abs(x)) / (3.1415 / 180));
-        if (y>0)
-        {
-            if (x>0)
-                rc += 900;
-            else
-                rc = 2700 - rc;
-        }
-        else
-        {
-            if (x>0)
-                rc = 900 - rc;
-            else
-                rc += 2700;
-        }
-    }
-    else
-    {
-        if (x >= 0)
-            rc = 900;
-        else
-            rc = 2700;
-    }
+    angle = atan2((float)y, (float)x);
+    angle += M_PI_2;
+    if (angle <= 0)
+	angle += 2 * M_PI;
 
-    return rc;
+    return (0.5 + (angle * 1800.0 / M_PI));
 }
 
 static int get_button_state(int curnum)