[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44404] trunk/blender/source/blender/ editors/space_clip/clip_ops.c: Code clean-up and make zoom in/ out operator store mouse coordinate

Sergey Sharybin sergey.vfx at gmail.com
Fri Feb 24 14:44:49 CET 2012


Revision: 44404
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44404
Author:   nazgul
Date:     2012-02-24 13:44:45 +0000 (Fri, 24 Feb 2012)
Log Message:
-----------
Code clean-up and make zoom in/out operator store mouse coordinate
so exec() callback will zoom in/out properly.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_clip/clip_ops.c

Modified: trunk/blender/source/blender/editors/space_clip/clip_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/clip_ops.c	2012-02-24 13:31:18 UTC (rev 44403)
+++ trunk/blender/source/blender/editors/space_clip/clip_ops.c	2012-02-24 13:44:45 UTC (rev 44404)
@@ -119,16 +119,6 @@
 	ED_region_tag_redraw(CTX_wm_region(C));
 }
 
-static void view_zoom_in_do_exec(bContext *C, wmEvent *event)
-{
-	sclip_zoom_set_factor_exec(C, event, 1.25f);
-}
-
-static void view_zoom_out_do_exec(bContext *C, wmEvent *event)
-{
-	sclip_zoom_set_factor_exec(C, event, 0.8f);
-}
-
 /******************** open clip operator ********************/
 
 static void clip_filesel(bContext *C, wmOperator *op, const char *path)
@@ -544,18 +534,29 @@
 
 /********************** view zoom in/out operator *********************/
 
-static int view_zoom_in_exec(bContext *C, wmOperator *UNUSED(op))
+static int view_zoom_in_exec(bContext *C, wmOperator *op)
 {
-	view_zoom_in_do_exec(C, NULL);
+	SpaceClip *sc= CTX_wm_space_clip(C);
+	ARegion *ar= CTX_wm_region(C);
+	float location[2];
 
+	RNA_float_get_array(op->ptr, "location", location);
+
+	sclip_zoom_set_factor(sc, ar, 1.25f, location);
+
+	ED_region_tag_redraw(CTX_wm_region(C));
+
 	return OPERATOR_FINISHED;
 }
 
-static int view_zoom_in_invoke(bContext *C, wmOperator *UNUSED(op), wmEvent *event)
+static int view_zoom_in_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
-	view_zoom_in_do_exec(C, event);
+	float location[2];
 
-	return OPERATOR_FINISHED;
+	ED_clip_mouse_pos(C, event, location);
+	RNA_float_set_array(op->ptr, "location", location);
+
+	return view_zoom_in_exec(C, op);
 }
 
 void CLIP_OT_view_zoom_in(wmOperatorType *ot)
@@ -568,20 +569,34 @@
 	ot->exec= view_zoom_in_exec;
 	ot->invoke= view_zoom_in_invoke;
 	ot->poll= ED_space_clip_poll;
+
+	/* properties */
+	RNA_def_float_vector(ot->srna, "location", 2, NULL, -FLT_MAX, FLT_MAX, "Location", "Cursor location in screen coordinates", -10.0f, 10.0f);
 }
 
-static int view_zoom_out_exec(bContext *C, wmOperator *UNUSED(op))
+static int view_zoom_out_exec(bContext *C, wmOperator *op)
 {
-	view_zoom_out_do_exec(C, NULL);
+	SpaceClip *sc= CTX_wm_space_clip(C);
+	ARegion *ar= CTX_wm_region(C);
+	float location[2];
 
+	RNA_float_get_array(op->ptr, "location", location);
+
+	sclip_zoom_set_factor(sc, ar, 0.8f, location);
+
+	ED_region_tag_redraw(CTX_wm_region(C));
+
 	return OPERATOR_FINISHED;
 }
 
-static int view_zoom_out_invoke(bContext *C, wmOperator *UNUSED(op), wmEvent *event)
+static int view_zoom_out_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
-	view_zoom_out_do_exec(C, event);
+	float location[2];
 
-	return OPERATOR_FINISHED;
+	ED_clip_mouse_pos(C, event, location);
+	RNA_float_set_array(op->ptr, "location", location);
+
+	return view_zoom_out_exec(C, op);
 }
 
 void CLIP_OT_view_zoom_out(wmOperatorType *ot)
@@ -594,6 +609,9 @@
 	ot->exec= view_zoom_out_exec;
 	ot->invoke= view_zoom_out_invoke;
 	ot->poll= ED_space_clip_poll;
+
+	/* properties */
+	RNA_def_float_vector(ot->srna, "location", 2, NULL, -FLT_MAX, FLT_MAX, "Location", "Cursor location in normalised (0.0-1.0) coordinates", -10.0f, 10.0f);
 }
 
 /********************** view zoom ratio operator *********************/




More information about the Bf-blender-cvs mailing list