fix for bug in ED_view3d_project_float that only effected the 'Rip' tool.
[blender.git] / source / blender / editors / space_view3d / view3d_draw.c
index fc5ef42b462378e0ba5962144fff35826edaa419..f72b15614f593d1831f0eac6da9e12cab8e256c9 100644 (file)
@@ -841,8 +841,8 @@ static void draw_viewport_name(ARegion *ar, View3D *v3d)
 }
 
 /* draw info beside axes in bottom left-corner: 
-*      framenum, object name, bone name (if available), marker name (if available)
-*/
+ * framenum, object name, bone name (if available), marker name (if available)
+ */
 static void draw_selected_name(Scene *scene, Object *ob)
 {
        char info[256], *markern;
@@ -1225,7 +1225,7 @@ static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d)
                }
                if (ca && (ca->flag & CAM_SHOWSENSOR)) {
                        /* determine sensor fit, and get sensor x/y, for auto fit we
-                          assume and square sensor and only use sensor_x */
+                        * assume and square sensor and only use sensor_x */
                        float sizex= scene->r.xsch*scene->r.xasp;
                        float sizey= scene->r.ysch*scene->r.yasp;
                        int sensor_fit = camera_sensor_fit(ca->sensor_fit, sizex, sizey);
@@ -1562,8 +1562,8 @@ static void draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d)
                                ibuf= BKE_movieclip_get_ibuf(clip, &bgpic->cuser);
 
                                /* working with ibuf from image and clip has got different workflow now.
-                                  ibuf acquired from clip is referenced by cache system and should
-                                  be dereferenced after usage. */
+                                * ibuf acquired from clip is referenced by cache system and should
+                                * be dereferenced after usage. */
                                freeibuf= ibuf;
                        }
 
@@ -1603,7 +1603,7 @@ static void draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d)
                                asp= ( (float)ibuf->y)/(float)ibuf->x;
 
                                vec[0] = vec[1] = vec[2] = 0.0;
-                               ED_view3d_project_float(ar, vec, sco, rv3d->persmat);
+                               ED_view3d_project_float_v2(ar, vec, sco, rv3d->persmat);
                                cx = sco[0];
                                cy = sco[1];
 
@@ -1764,9 +1764,9 @@ static void view3d_draw_xraytransp(Scene *scene, ARegion *ar, View3D *v3d, int c
 /* *********************** */
 
 /*
      In most cases call draw_dupli_objects,
      draw_dupli_objects_color was added because when drawing set dupli's
      we need to force the color
* In most cases call draw_dupli_objects,
* draw_dupli_objects_color was added because when drawing set dupli's
* we need to force the color
  */
 
 #if 0
@@ -1895,7 +1895,7 @@ static void draw_dupli_objects_color(Scene *scene, ARegion *ar, View3D *v3d, Bas
 static void draw_dupli_objects(Scene *scene, ARegion *ar, View3D *v3d, Base *base)
 {
        /* define the color here so draw_dupli_objects_color can be called
-       * from the set loop */
+        * from the set loop */
        
        int color= (base->flag & SELECT)?TH_SELECT:TH_WIRE;
        /* debug */
@@ -2330,22 +2330,22 @@ CustomDataMask ED_view3d_screen_datamask(bScreen *screen)
        return mask;
 }
 
-static void view3d_main_area_setup_view(Scene *scene, View3D *v3d, ARegion *ar, float viewmat[][4], float winmat[][4])
+void ED_view3d_update_viewmat(Scene *scene, View3D *v3d, ARegion *ar, float viewmat[][4], float winmat[][4])
 {
-       RegionView3D *rv3d= ar->regiondata;
+       RegionView3D *rv3d = ar->regiondata;
 
        /* setup window matrices */
        if (winmat)
                copy_m4_m4(rv3d->winmat, winmat);
        else
                setwinmatrixview3d(ar, v3d, NULL); /* NULL= no pickrect */
-       
+
        /* setup view matrix */
        if (viewmat)
                copy_m4_m4(rv3d->viewmat, viewmat);
        else
                setviewmatrixview3d(scene, v3d, rv3d);  /* note: calls where_is_object for camera... */
-       
+
        /* update utilitity matrices */
        mult_m4_m4m4(rv3d->persmat, rv3d->winmat, rv3d->viewmat);
        invert_m4_m4(rv3d->persinv, rv3d->persmat);
@@ -2365,12 +2365,19 @@ static void view3d_main_area_setup_view(Scene *scene, View3D *v3d, ARegion *ar,
                v2[0]= rv3d->persmat[0][1];
                v2[1]= rv3d->persmat[1][1];
                v2[2]= rv3d->persmat[2][1];
-               
+
                len1= 1.0f / len_v3(v1);
                len2= 1.0f / len_v3(v2);
 
                rv3d->pixsize = (2.0f * MAX2(len1, len2)) / (float)MAX2(ar->winx, ar->winy);
        }
+}
+
+static void view3d_main_area_setup_view(Scene *scene, View3D *v3d, ARegion *ar, float viewmat[][4], float winmat[][4])
+{
+       RegionView3D *rv3d = ar->regiondata;
+
+       ED_view3d_update_viewmat(scene, v3d, ar, viewmat, winmat);
 
        /* set for opengl */
        glMatrixMode(GL_PROJECTION);
@@ -2753,9 +2760,11 @@ static void view3d_main_area_draw_objects(const bContext *C, ARegion *ar, const
                v3d->zbuf= FALSE;
 
        /* enables anti-aliasing for 3D view drawing */
-       /*if (!(U.gameflags & USER_DISABLE_AA))
-               glEnable(GL_MULTISAMPLE_ARB);*/
-       
+#if 0
+       if (!(U.gameflags & USER_DISABLE_AA))
+               glEnable(GL_MULTISAMPLE_ARB);
+#endif
+
        // needs to be done always, gridview is adjusted in drawgrid() now
        rv3d->gridview= v3d->grid;
 
@@ -2868,10 +2877,12 @@ static void view3d_main_area_draw_objects(const bContext *C, ARegion *ar, const
                ED_view3d_clipping_disable();
        
        BIF_draw_manipulator(C);
-       
+
+#if 0
        /* Disable back anti-aliasing */
-       /*if (!(U.gameflags & USER_DISABLE_AA))
-               glDisable(GL_MULTISAMPLE_ARB);*/
+       if (!(U.gameflags & USER_DISABLE_AA))
+               glDisable(GL_MULTISAMPLE_ARB);
+#endif
 
        if (v3d->zbuf) {
                v3d->zbuf= FALSE;