[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36787] trunk/blender/source: make api functions for converting rv3d->camzoom, so the odd logic for this isn't inlined all over.

Campbell Barton ideasman42 at gmail.com
Fri May 20 06:14:30 CEST 2011


Revision: 36787
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36787
Author:   campbellbarton
Date:     2011-05-20 04:14:29 +0000 (Fri, 20 May 2011)
Log Message:
-----------
make api functions for converting rv3d->camzoom, so the odd logic for this isn't inlined all over.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_screen.h
    trunk/blender/source/blender/blenkernel/intern/screen.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
    trunk/blender/source/blender/editors/space_view3d/view3d_view.c
    trunk/blender/source/blender/makesdna/DNA_view3d_types.h
    trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp

Modified: trunk/blender/source/blender/blenkernel/BKE_screen.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_screen.h	2011-05-20 01:02:00 UTC (rev 36786)
+++ trunk/blender/source/blender/blenkernel/BKE_screen.h	2011-05-20 04:14:29 UTC (rev 36787)
@@ -246,6 +246,9 @@
 void BKE_screen_view3d_scene_sync(struct bScreen *sc);
 void BKE_screen_view3d_main_sync(ListBase *screen_lb, struct Scene *scene);
 
+/* zoom factor conversion */
+float BKE_screen_view3d_zoom_to_fac(float camzoom);
+float BKE_screen_view3d_zoom_from_fac(float zoomfac);
 
 /* screen */
 void free_screen(struct bScreen *sc); 

Modified: trunk/blender/source/blender/blenkernel/intern/screen.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/screen.c	2011-05-20 01:02:00 UTC (rev 36786)
+++ trunk/blender/source/blender/blenkernel/intern/screen.c	2011-05-20 04:14:29 UTC (rev 36787)
@@ -416,3 +416,20 @@
 	}
 }
 
+/* magic zoom calculation, no idea what
+ * it signifies, if you find out, tell me! -zr
+ */
+
+/* simple, its magic dude!
+ * well, to be honest, this gives a natural feeling zooming
+ * with multiple keypad presses (ton)
+ */
+float BKE_screen_view3d_zoom_to_fac(float camzoom)
+{
+	return powf(((float)M_SQRT2 + camzoom/50.0f), 2.0f) / 4.0f;
+}
+
+float BKE_screen_view3d_zoom_from_fac(float zoomfac)
+{
+	return ((sqrtf(4.0f * zoomfac) - (float)M_SQRT2) * 50.0f);
+}

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2011-05-20 01:02:00 UTC (rev 36786)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2011-05-20 04:14:29 UTC (rev 36787)
@@ -61,6 +61,7 @@
 #include "BKE_global.h"
 #include "BKE_paint.h"
 #include "BKE_scene.h"
+#include "BKE_screen.h"
 #include "BKE_unit.h"
 
 #include "RE_pipeline.h"	// make_stars
@@ -870,25 +871,15 @@
 
 void view3d_calc_camera_border(Scene *scene, ARegion *ar, RegionView3D *rv3d, View3D *v3d, rctf *viewborder_r, short do_shift)
 {
-	float zoomfac, size[2];
+	const float zoomfac= BKE_screen_view3d_zoom_to_fac((float)rv3d->camzoom);
+	float size[2];
 	float dx= 0.0f, dy= 0.0f;
 	
 	view3d_viewborder_size_get(scene, ar, size);
 	
 	if (rv3d == NULL)
 		rv3d = ar->regiondata;
-	
-	/* magic zoom calculation, no idea what
-		* it signifies, if you find out, tell me! -zr
-		*/
-	/* simple, its magic dude!
-		* well, to be honest, this gives a natural feeling zooming
-		* with multiple keypad presses (ton)
-		*/
-	
-	zoomfac= ((float)M_SQRT2 + rv3d->camzoom/50.0f);
-	zoomfac= (zoomfac*zoomfac) * 0.25f;
-	
+
 	size[0]= size[0]*zoomfac;
 	size[1]= size[1]*zoomfac;
 	

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2011-05-20 01:02:00 UTC (rev 36786)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2011-05-20 04:14:29 UTC (rev 36787)
@@ -56,6 +56,7 @@
 #include "BKE_paint.h"
 #include "BKE_report.h"
 #include "BKE_scene.h"
+#include "BKE_screen.h"
 #include "BKE_depsgraph.h" /* for ED_view3d_camera_lock_sync */
 
 
@@ -919,14 +920,11 @@
 static void viewmove_apply(ViewOpsData *vod, int x, int y)
 {
 	if((vod->rv3d->persp==RV3D_CAMOB) && !(vod->v3d->flag2 & V3D_LOCK_CAMERA)) {
-		float zoomfac= ((float)M_SQRT2 + (float)vod->rv3d->camzoom / 50.0f);
-		zoomfac= (zoomfac * zoomfac) * 0.5f;
-
+		const float zoomfac= BKE_screen_view3d_zoom_to_fac((float)vod->rv3d->camzoom) * 2.0f;
 		vod->rv3d->camdx += (vod->oldx - x)/(vod->ar->winx * zoomfac);
 		vod->rv3d->camdy += (vod->oldy - y)/(vod->ar->winy * zoomfac);
 		CLAMP(vod->rv3d->camdx, -1.0f, 1.0f);
 		CLAMP(vod->rv3d->camdy, -1.0f, 1.0f);
-// XXX		preview3d_event= 0;
 	}
 	else {
 		float dvec[3];
@@ -1888,8 +1886,8 @@
 	xfac= (float)ar->winx / (float)(size[0] + 4);
 	yfac= (float)ar->winy / (float)(size[1] + 4);
 
-	rv3d->camzoom= (sqrtf(4.0f * MIN2(xfac, yfac)) - (float)M_SQRT2) * 50.0f;
-	rv3d->camzoom= CLAMPIS(rv3d->camzoom, RV3D_CAMZOOM_MIN, RV3D_CAMZOOM_MAX);
+	rv3d->camzoom= BKE_screen_view3d_zoom_from_fac(MIN2(xfac, yfac));
+	CLAMP(rv3d->camzoom, RV3D_CAMZOOM_MIN, RV3D_CAMZOOM_MAX);
 
 	WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C));
 
@@ -2145,9 +2143,9 @@
 	int im_width= (scene->r.size*scene->r.xsch)/100;
 	
 	view3d_viewborder_size_get(scene, ar, size);
-	
-	rv3d->camzoom= (sqrtf(4.0f * (float)im_width/size[0]) - (float)M_SQRT2) * 50.0f;
-	rv3d->camzoom= CLAMPIS(rv3d->camzoom, RV3D_CAMZOOM_MIN, RV3D_CAMZOOM_MAX);
+
+	rv3d->camzoom= BKE_screen_view3d_zoom_from_fac((float)im_width/size[0]);
+	CLAMP(rv3d->camzoom, RV3D_CAMZOOM_MIN, RV3D_CAMZOOM_MAX);
 }
 
 static int view3d_zoom_1_to_1_camera_exec(bContext *C, wmOperator *UNUSED(op))

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_view.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_view.c	2011-05-20 01:02:00 UTC (rev 36786)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_view.c	2011-05-20 04:14:29 UTC (rev 36787)
@@ -52,6 +52,7 @@
 #include "BKE_main.h"
 #include "BKE_report.h"
 #include "BKE_scene.h"
+#include "BKE_screen.h"
 
 #include "BIF_gl.h"
 #include "BIF_glutil.h"
@@ -995,10 +996,11 @@
 	else {
 		/* fac for zoom, also used for camdx */
 		if(rv3d->persp==RV3D_CAMOB) {
-			fac= (1.41421f + ( (float)rv3d->camzoom )/50.0f);
-			fac*= fac;
+			fac= BKE_screen_view3d_zoom_to_fac((float)rv3d->camzoom) * 4.0f;
 		}
-		else fac= 2.0;
+		else {
+			fac= 2.0;
+		}
 		
 		/* viewplane size depends... */
 		if(cam && cam->type==CAM_ORTHO) {

Modified: trunk/blender/source/blender/makesdna/DNA_view3d_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_view3d_types.h	2011-05-20 01:02:00 UTC (rev 36786)
+++ trunk/blender/source/blender/makesdna/DNA_view3d_types.h	2011-05-20 04:14:29 UTC (rev 36787)
@@ -98,7 +98,7 @@
 	float pixsize;				/* runtime only */
 	float ofs[3];				/* view center & orbit pivot, negative of worldspace location,
 								 * also matches -viewinv[3][0:3] in ortho mode.*/
-	short camzoom;
+	short camzoom;				/* viewport zoom on the camera frame, see BKE_screen_view3d_zoom_to_fac */
 	short twdrawflag;
 	char is_persp;				/* check if persp/ortho view, since 'persp' cant be used for this since
 								 * it can have cameras assigned as well. (only set in setwinmatrixview3d) */

Modified: trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
===================================================================
--- trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp	2011-05-20 01:02:00 UTC (rev 36786)
+++ trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp	2011-05-20 04:14:29 UTC (rev 36787)
@@ -81,6 +81,8 @@
 #include "DNA_windowmanager_types.h"
 #include "BKE_global.h"
 #include "BKE_report.h"
+/* #include "BKE_screen.h" */ /* cant include this because of 'new' function name */
+extern float BKE_screen_view3d_zoom_to_fac(float camzoom);
 
 
 //XXX #include "BIF_screen.h"
@@ -254,9 +256,7 @@
 				camzoom = 1.0f;
 			}
 			else {
-				camzoom = (1.41421 + (rv3d->camzoom / 50.0));
-				camzoom *= camzoom;
-				camzoom = 4.0 / camzoom;
+				camzoom = BKE_screen_view3d_zoom_to_fac(rv3d->camzoom);
 			}
 		}
 		else {




More information about the Bf-blender-cvs mailing list