[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