Page MenuHome

zoomtocursor.patch

zoomtocursor.patch

Index: source/blender/include/BSE_view.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/include/BSE_view.h,v
retrieving revision 1.14
diff -u -r1.14 BSE_view.h
--- source/blender/include/BSE_view.h 28 Jan 2006 18:33:13 -0000 1.14
+++ source/blender/include/BSE_view.h 25 Oct 2006 19:10:23 -0000
@@ -55,6 +55,7 @@
void initgrabz(float x, float y, float z);
void window_to_3d(float *vec, short mx, short my);
+void window_to_3d_f(float *vec, float mx, float my);
void project_short(float *vec, short *adr);
void project_short_noclip(float *vec, short *adr);
void project_int(float *vec, int *adr);
Index: source/blender/makesdna/DNA_userdef_types.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/makesdna/DNA_userdef_types.h,v
retrieving revision 1.58
diff -u -r1.58 DNA_userdef_types.h
--- source/blender/makesdna/DNA_userdef_types.h 19 Oct 2006 05:06:41 -0000 1.58
+++ source/blender/makesdna/DNA_userdef_types.h 25 Oct 2006 19:10:23 -0000
@@ -225,6 +225,7 @@
#define USER_HIDE_DOT 65536
#define USER_SHOW_ROTVIEWICON 131072
#define USER_SHOW_VIEWPORTNAME 262144
+#define USER_ZOOM_TOCURSOR 524288
/* transopts */
Index: source/blender/src/editview.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/editview.c,v
retrieving revision 1.112
diff -u -r1.112 editview.c
--- source/blender/src/editview.c 12 Oct 2006 09:32:47 -0000 1.112
+++ source/blender/src/editview.c 25 Oct 2006 19:10:24 -0000
@@ -2002,6 +2002,26 @@
}
}
+void relative_zoom(unsigned short event)
+{
+ short mval[2];
+ float scaleFactor, dvec[3];
+
+ if(event==PADPLUSKEY)
+ scaleFactor=.83333f;
+ else if(event==PADMINUS)
+ scaleFactor=1.2f;
+
+ getmouseco_areawin(mval);
+
+ initgrabz(G.vd->ofs[0], G.vd->ofs[1], G.vd->ofs[2]);
+
+ window_to_3d_f(dvec, (mval[0]-((G.vd->area->winx-1)/2))*(scaleFactor-1), (mval[1]-((G.vd->area->winy-1)/2))*(scaleFactor-1));
+
+ G.vd->dist*=scaleFactor;
+
+ VecAddf(G.vd->ofs, G.vd->ofs, dvec);
+}
void fly(void)
{
Index: source/blender/src/space.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/space.c,v
retrieving revision 1.385
diff -u -r1.385 space.c
--- source/blender/src/space.c 19 Oct 2006 05:06:41 -0000 1.385
+++ source/blender/src/space.c 25 Oct 2006 19:10:24 -0000
@@ -2813,6 +2813,10 @@
"The number of lines scrolled at a time with the mouse wheel");
uiBlockEndAlign(block);
+ uiDefButBitI(block, TOG, USER_ZOOM_TOCURSOR, 0, "Zoom to cursor",
+ (xpos+edgsp+(4*mpref)+(5*midsp)),y1,mpref,buth,
+ &(U.uiflag), 0, 0, 0, 0,
+ "Zoom relative to the mouse cursor position");
uiDefBut(block, LABEL,0,"3D Transform Widget:",
(xpos+(2*edgsp)+(5*mpref)+(5*midsp)),y6label,mpref,buth,
Index: source/blender/src/toets.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/toets.c,v
retrieving revision 1.84
diff -u -r1.84 toets.c
--- source/blender/src/toets.c 28 Sep 2006 01:55:44 -0000 1.84
+++ source/blender/src/toets.c 25 Oct 2006 19:10:24 -0000
@@ -241,14 +241,26 @@
if(G.vd->persp==2) {
G.vd->camzoom= MAX2(-30, G.vd->camzoom-5);
}
- else if(G.vd->dist<10.0*G.vd->far) G.vd->dist*=1.2f;
+ else if(G.vd->dist<10.0*G.vd->far)
+ {
+ if(U.uiflag & USER_ZOOM_TOCURSOR)
+ relative_zoom(event);
+ else
+ G.vd->dist*=1.2f;
+ }
if(G.vd->persp!=1) preview3d_event= 0;
}
else if(event==PADPLUSKEY) {
if(G.vd->persp==2) {
G.vd->camzoom= MIN2(300, G.vd->camzoom+5);
}
- else if(G.vd->dist> 0.001*G.vd->grid) G.vd->dist*=.83333f;
+ else if(G.vd->dist> 0.001*G.vd->grid)
+ {
+ if(U.uiflag & USER_ZOOM_TOCURSOR)
+ relative_zoom(event);
+ else
+ G.vd->dist*=.83333f;
+ }
if(G.vd->persp!=1) preview3d_event= 0;
}
else if(event==PAD5) {
Index: source/blender/src/view.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/view.c,v
retrieving revision 1.71
diff -u -r1.71 view.c
--- source/blender/src/view.c 23 Oct 2006 16:15:23 -0000 1.71
+++ source/blender/src/view.c 25 Oct 2006 19:10:24 -0000
@@ -151,6 +151,11 @@
void window_to_3d(float *vec, short mx, short my)
{
+ window_to_3d_f(vec, mx, my);
+}
+
+void window_to_3d_f(float *vec, float mx, float my)
+{
/* always call initgrabz */
float dx, dy;

File Metadata

Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
a0/db/91de018bf8ba34e3d030531e24c6

Event Timeline