change window_to_3d to take screen coords as floats.
authorCampbell Barton <ideasman42@gmail.com>
Thu, 19 May 2011 07:55:48 +0000 (07:55 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 19 May 2011 07:55:48 +0000 (07:55 +0000)
source/blender/editors/gpencil/gpencil_edit.c
source/blender/editors/include/ED_view3d.h
source/blender/editors/space_view3d/view3d_edit.c
source/blender/editors/space_view3d/view3d_view.c

index 68577cf4f0f36210552d6f2f403b1d59e8d124cf..e5f39614c0342f930d23f4c1da825f1a946bdcfa 100644 (file)
@@ -377,24 +377,27 @@ static void gp_strokepoint_convertcoords (bContext *C, bGPDstroke *gps, bGPDspoi
        }
        else {
                float *fp= give_cursor(scene, v3d);
-               int mx, my;
+               float mx, my;
                
                /* get screen coordinate */
                if (gps->flag & GP_STROKE_2DSPACE) {
+                       int mxi, myi;
                        View2D *v2d= &ar->v2d;
-                       UI_view2d_view_to_region(v2d, pt->x, pt->y, &mx, &my);
+                       UI_view2d_view_to_region(v2d, pt->x, pt->y, &mxi, &myi);
+                       mx= mxi;
+                       my= myi;
                }
                else {
                        if(subrect) {
-                               mx= (int)((pt->x/100.0f) * (subrect->xmax - subrect->xmin)) + subrect->xmin;
-                               my= (int)((pt->y/100.0f) * (subrect->ymax - subrect->ymin)) + subrect->ymin;
+                               mx= (((float)pt->x/100.0f) * (subrect->xmax - subrect->xmin)) + subrect->xmin;
+                               my= (((float)pt->y/100.0f) * (subrect->ymax - subrect->ymin)) + subrect->ymin;
                        }
                        else {
-                               mx= (int)(pt->x / 100 * ar->winx);
-                               my= (int)(pt->y / 100 * ar->winy);
+                               mx= (float)pt->x / 100.0f * ar->winx;
+                               my= (float)pt->y / 100.0f * ar->winy;
                        }
                }
-               
+
                /* convert screen coordinate to 3d coordinates 
                 *      - method taken from editview.c - mouse_cursor() 
                 */
index 00fb6371d68bec7ce25f04b748e0107dfba722b9..a9061ce1b80cfea6a1960bff82195310a446aa1c 100644 (file)
@@ -80,9 +80,9 @@ typedef struct ViewDepths {
 float *give_cursor(struct Scene *scene, struct View3D *v3d);
 
 int initgrabz(struct RegionView3D *rv3d, float x, float y, float z);
-void window_to_3d(struct ARegion *ar, float out[3], const float depth_pt[3], const int mx, const int my);
-void window_to_3d_delta(struct ARegion *ar, float out[3], const int mx, const int my);
-void window_to_3d_vector(struct ARegion *ar, float out[3], const int mx, const int my);
+void window_to_3d(struct ARegion *ar, float out[3], const float depth_pt[3], const float mx, const float my);
+void window_to_3d_delta(struct ARegion *ar, float out[3], const float mx, const float my);
+void window_to_3d_vector(struct ARegion *ar, float out[3], const float mx, const float my);
 void view3d_unproject(struct bglMats *mats, float out[3], const short x, const short y, const float z);
 
 /* Depth buffer */
index 2bd2e4e497fb1c6397a23b3fd9db72730359ccbd..5e2b9fd5e3fd6ad0723ca6d3e82ef8be196c8d62 100644 (file)
@@ -1074,7 +1074,7 @@ static void view_zoom_mouseloc(ARegion *ar, float dfac, int mx, int my)
                float tvec[3];
                float tpos[3];
                float new_dist;
-               short vb[2], mouseloc[2];
+               int vb[2], mouseloc[2];
 
                mouseloc[0]= mx - ar->winrct.xmin;
                mouseloc[1]= my - ar->winrct.ymin;
@@ -1087,7 +1087,7 @@ static void view_zoom_mouseloc(ARegion *ar, float dfac, int mx, int my)
 
                /* Project cursor position into 3D space */
                initgrabz(rv3d, tpos[0], tpos[1], tpos[2]);
-               window_to_3d_delta(ar, dvec, mouseloc[0]-vb[0]/2, mouseloc[1]-vb[1]/2);
+               window_to_3d_delta(ar, dvec, mouseloc[0]-vb[0]/2.0f, mouseloc[1]-vb[1]/2.0f);
 
                /* Calculate view target position for dolly */
                add_v3_v3v3(tvec, tpos, dvec);
index 0e6ac2d9f042efb3cd5e02f6b55ac9bb1f5a2fd2..dc8979e0bf3431a205eb23aa28250018bc4cb623 100644 (file)
@@ -598,7 +598,7 @@ int initgrabz(RegionView3D *rv3d, float x, float y, float z)
        return flip;
 }
 
-void window_to_3d(ARegion *ar, float out[3], const float depth_pt[3], const int mx, const int my)
+void window_to_3d(ARegion *ar, float out[3], const float depth_pt[3], const float mx, const float my)
 {
        RegionView3D *rv3d= ar->regiondata;
        
@@ -630,7 +630,7 @@ void window_to_3d(ARegion *ar, float out[3], const float depth_pt[3], const int
 
 /* always call initgrabz */
 /* only to detect delta motion */
-void window_to_3d_delta(ARegion *ar, float out[3], const int mx, const int my)
+void window_to_3d_delta(ARegion *ar, float out[3], const float mx, const float my)
 {
        RegionView3D *rv3d= ar->regiondata;
        float dx, dy;
@@ -646,7 +646,7 @@ void window_to_3d_delta(ARegion *ar, float out[3], const int mx, const int my)
 /* doesn't rely on initgrabz */
 /* for perspective view, get the vector direction to
  * the mouse cursor as a normalized vector */
-void window_to_3d_vector(ARegion *ar, float out[3], const int mx, const int my)
+void window_to_3d_vector(ARegion *ar, float out[3], const float mx, const float my)
 {
        RegionView3D *rv3d= ar->regiondata;