[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18217] branches/blender2.5/blender/source /blender/editors/space_node: 2.5 / Nodes

Nathan Letwory jesterking at letwory.net
Thu Jan 1 17:27:05 CET 2009


Revision: 18217
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18217
Author:   jesterking
Date:     2009-01-01 17:27:02 +0100 (Thu, 01 Jan 2009)

Log Message:
-----------
2.5 / Nodes
* HOMEKEY enabled (view all), made into operator.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c
    branches/blender2.5/blender/source/blender/editors/space_node/node_header.c
    branches/blender2.5/blender/source/blender/editors/space_node/node_intern.h
    branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c
    branches/blender2.5/blender/source/blender/editors/space_node/node_state.c

Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c	2009-01-01 16:18:54 UTC (rev 18216)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c	2009-01-01 16:27:02 UTC (rev 18217)
@@ -22,7 +22,7 @@
  *
  * The Original Code is: all of this file.
  *
- * Contributor(s): David Millan Escriva, Juho Vepsäläinen
+ * Contributor(s): David Millan Escriva, Juho Vepsäläinen, Nathan Letwory
  *
  * ***** END GPL LICENSE BLOCK *****
  */
@@ -102,6 +102,8 @@
 
 #include "WM_types.h"
 
+#include "UI_view2d.h"
+
 // XXX XXX XXX
 static void BIF_undo_push(char *s) {}
 
@@ -913,8 +915,6 @@
 	return NULL;
 }
 
-#if 0
-
 /* is rct in visible part of node? */
 static bNode *visible_node(SpaceNode *snode, rctf *rct)
 {
@@ -927,60 +927,57 @@
 	return tnode;
 }
 
-void snode_home(ScrArea *sa, SpaceNode *snode)
+void snode_home(ScrArea *sa, ARegion *ar, SpaceNode* snode)
 {
 	bNode *node;
+	rctf *cur, *tot;
+	float oldwidth, oldheight, width, height;
 	int first= 1;
 	
-	snode->v2d.cur.xmin= snode->v2d.cur.ymin= 0.0f;
-	snode->v2d.cur.xmax= sa->winx;
-	snode->v2d.cur.xmax= sa->winy;
+	cur= &ar->v2d.cur;
+	tot= &ar->v2d.tot;
 	
+	oldwidth= cur->xmax - cur->xmin;
+	oldheight= cur->ymax - cur->ymin;
+	
+	cur->xmin= cur->ymin= 0.0f;
+	cur->xmax=ar->winx;
+	cur->xmax= ar->winy;
+	
 	if(snode->edittree) {
 		for(node= snode->edittree->nodes.first; node; node= node->next) {
 			if(first) {
 				first= 0;
-				snode->v2d.cur= node->totr;
+				ar->v2d.cur= node->totr;
 			}
 			else {
-				BLI_union_rctf(&snode->v2d.cur, &node->totr);
+				BLI_union_rctf(cur, &node->totr);
 			}
 		}
 	}
-	snode->v2d.tot= snode->v2d.cur;
 	
-	snode->xof = snode->yof = 0.0;
+	snode->xof= 0;
+	snode->yof= 0;
+	width= cur->xmax - cur->xmin;
+	height= cur->ymax- cur->ymin;
+	if(width > height) {
+		float newheight;
+		newheight= oldheight * width/oldwidth;
+		cur->ymin= cur->ymin - newheight/4;
+		cur->ymax= cur->ymin + newheight;
+	}
+	else {
+		float newwidth;
+		newwidth= oldwidth * height/oldheight;
+		cur->xmin= cur->xmin - newwidth/4;
+		cur->xmax= cur->xmin + newwidth;
+	}
 	
-	test_view2d(G.v2d, sa->winx, sa->winy);
-	
+	ar->v2d.tot= ar->v2d.cur;
+	UI_view2d_curRect_validate(&ar->v2d);
 }
 
-void snode_zoom_out(ScrArea *sa)
-{
-	float dx;
-	
-	dx= (float)(0.15*(G.v2d->cur.xmax-G.v2d->cur.xmin));
-	G.v2d->cur.xmin-= dx;
-	G.v2d->cur.xmax+= dx;
-	dx= (float)(0.15*(G.v2d->cur.ymax-G.v2d->cur.ymin));
-	G.v2d->cur.ymin-= dx;
-	G.v2d->cur.ymax+= dx;
-	test_view2d(G.v2d, sa->winx, sa->winy);
-}
-
-void snode_zoom_in(ScrArea *sa)
-{
-	float dx;
-	
-	dx= (float)(0.1154*(G.v2d->cur.xmax-G.v2d->cur.xmin));
-	G.v2d->cur.xmin+= dx;
-	G.v2d->cur.xmax-= dx;
-	dx= (float)(0.1154*(G.v2d->cur.ymax-G.v2d->cur.ymin));
-	G.v2d->cur.ymin+= dx;
-	G.v2d->cur.ymax-= dx;
-	test_view2d(G.v2d, sa->winx, sa->winy);
-}
-
+#if 0
 static void snode_bg_viewmove(SpaceNode *snode)
 {
 	ScrArea *sa;

Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/node_header.c	2009-01-01 16:18:54 UTC (rev 18216)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_header.c	2009-01-01 16:27:02 UTC (rev 18217)
@@ -586,17 +586,18 @@
 
 static void do_node_viewmenu(bContext *C, void *arg, int event)
 {
+	SpaceNode *snode= (SpaceNode*)CTX_wm_space_data(C);
+	ARegion *ar= CTX_wm_region(C);
 	ScrArea *sa= CTX_wm_area(C);
 	
 	switch(event) {
+		/* cases 1 and 2 are now handled automagically by View2D code */
 		case 1: /* Zoom in */
-			// XXX snode_zoom_in(sa);
-			break;
 		case 2: /* View all */
-			// XXX snode_zoom_out(sa);
 			break;
 		case 3: /* View all */
-			// XXX snode_home(sa, snode);
+			printf("calling snode_home\n");
+			//snode_home(sa, ar, snode);
 			break;
 		case 4: /* Grease Pencil */
 			// XXX add_blockhandler(sa, NODES_HANDLER_GREASEPENCIL, UI_PNL_UNSTOW);

Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/node_intern.h	2009-01-01 16:18:54 UTC (rev 18216)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_intern.h	2009-01-01 16:27:02 UTC (rev 18217)
@@ -53,6 +53,7 @@
 void NODE_OT_select(struct wmOperatorType *ot);
 void NODE_OT_extend_select(struct wmOperatorType *ot);
 void NODE_OT_toggle_visibility(struct wmOperatorType *ot);
+void NODE_OT_fit_all(struct wmOperatorType *ot);
 
 /* drawnode.c */
 void node_draw_link(View2D *v2d, SpaceNode *snode, bNodeLink *link);
@@ -64,6 +65,7 @@
 void snode_set_context(SpaceNode *snode, Scene *scene);
 void scale_node(SpaceNode *snode, bNode *node);
 void snode_make_group_editable(SpaceNode *snode, bNode *gnode);
+void snode_home(ScrArea *sa, ARegion *ar, SpaceNode *snode);
 void node_set_active(SpaceNode *snode, bNode *node);
 void node_deselectall(SpaceNode *snode, int swap);
 

Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c	2009-01-01 16:18:54 UTC (rev 18216)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c	2009-01-01 16:27:02 UTC (rev 18217)
@@ -49,6 +49,7 @@
 	WM_operatortype_append(NODE_OT_select);
 	WM_operatortype_append(NODE_OT_extend_select);
 	WM_operatortype_append(NODE_OT_toggle_visibility);
+	WM_operatortype_append(NODE_OT_fit_all);
 }
 
 void node_keymap(struct wmWindowManager *wm)
@@ -58,4 +59,5 @@
 	RNA_enum_set(WM_keymap_add_item(keymap, "NODE_OT_select", SELECTMOUSE, KM_PRESS, 0, 0)->ptr, "select_type", NODE_SELECT_MOUSE);
 	RNA_enum_set(WM_keymap_add_item(keymap, "NODE_OT_extend_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "select_type", NODE_SELECT_MOUSE);
 	WM_keymap_add_item(keymap, "NODE_OT_toggle_visibility", ACTIONMOUSE, KM_PRESS, 0, 0);
+	WM_keymap_add_item(keymap, "NODE_OT_fit_all", HOMEKEY, KM_PRESS, 0, 0);
 }

Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_state.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/node_state.c	2009-01-01 16:18:54 UTC (rev 18216)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_state.c	2009-01-01 16:27:02 UTC (rev 18217)
@@ -192,3 +192,29 @@
 	prop = RNA_def_property(ot->srna, "mx", PROP_INT, PROP_NONE);
 	prop = RNA_def_property(ot->srna, "my", PROP_INT, PROP_NONE);
 }
+
+static int node_fit_all_exec(bContext *C, wmOperator *op)
+{
+	ScrArea *sa= CTX_wm_area(C);
+	ARegion *ar= CTX_wm_region(C);
+	SpaceNode *snode= (SpaceNode *)CTX_wm_space_data(C);
+	snode_home(sa, ar, snode);
+	ED_region_tag_redraw(ar);
+	return OPERATOR_FINISHED;
+}
+
+static int node_fit_all_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+	return node_fit_all_exec(C, op);
+}
+
+void NODE_OT_fit_all(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Fit All";
+	ot->idname= "NODE_OT_fit_all";
+	
+	/* api callbacks */
+	ot->invoke= node_fit_all_invoke;
+	ot->poll= ED_operator_node_active;
+}
\ No newline at end of file





More information about the Bf-blender-cvs mailing list