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

Nathan Letwory jesterking at letwory.net
Sat Jan 3 00:58:03 CET 2009


Revision: 18275
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18275
Author:   jesterking
Date:     2009-01-03 00:58:03 +0100 (Sat, 03 Jan 2009)

Log Message:
-----------
2.5 / Nodes
* add Context accessor for selected nodes
* node translation uses transform code
* put transform defines in an enum (mode and numinput flags)

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
    branches/blender2.5/blender/source/blender/editors/include/BIF_transform.h
    branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c
    branches/blender2.5/blender/source/blender/editors/space_node/node_select.c
    branches/blender2.5/blender/source/blender/editors/space_node/space_node.c
    branches/blender2.5/blender/source/blender/editors/transform/transform.c
    branches/blender2.5/blender/source/blender/editors/transform/transform.h
    branches/blender2.5/blender/source/blender/editors/transform/transform_conversions.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c
    branches/blender2.5/blender/source/blender/editors/transform/transform_ops.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h	2009-01-02 23:05:28 UTC (rev 18274)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h	2009-01-02 23:58:03 UTC (rev 18275)
@@ -125,6 +125,11 @@
 		BLI_freelistN(&ctx_data_list); \
 	}
 
+#define CTX_DATA_COUNT(C, member, i) \
+	CTX_DATA_BEGIN(C, void*, unused, member) \
+		i++; \
+	CTX_DATA_END
+
 /* Data Context Members */
 
 struct Main *CTX_data_main(const bContext *C);
@@ -144,6 +149,8 @@
 struct Base *CTX_data_active_base(const bContext *C);
 struct Object *CTX_data_edit_object(const bContext *C);
 
+int CTX_data_selected_nodes(const bContext *C, ListBase *list);
+
 /* Data Evaluation Context */
 
 float CTX_eval_frame(const bContext *C);

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/context.c	2009-01-02 23:05:28 UTC (rev 18274)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/context.c	2009-01-02 23:58:03 UTC (rev 18275)
@@ -352,6 +352,11 @@
 		return NULL;
 }
 
+int CTX_data_selected_nodes(const bContext *C, ListBase *list)
+{
+	return ctx_data_collection_get(C, CTX_data_selected_nodes, list);
+}
+
 int CTX_data_selected_objects(const bContext *C, ListBase *list)
 {
 	return ctx_data_collection_get(C, CTX_data_selected_objects, list);
@@ -387,7 +392,6 @@
 	return ctx_data_pointer_get(C, CTX_data_edit_object);
 }
 
-
 /* data evaluation */
 
 float CTX_eval_frame(const bContext *C)

Modified: branches/blender2.5/blender/source/blender/editors/include/BIF_transform.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/BIF_transform.h	2009-01-02 23:05:28 UTC (rev 18274)
+++ branches/blender2.5/blender/source/blender/editors/include/BIF_transform.h	2009-01-02 23:58:03 UTC (rev 18275)
@@ -44,33 +44,36 @@
 /* ******************** Macros & Prototypes *********************** */
 
 /* MODE AND NUMINPUT FLAGS */
-#define TFM_INIT			-1
-#define TFM_DUMMY			0
-#define TFM_TRANSLATION		1
-#define TFM_ROTATION		2
-#define TFM_RESIZE			3
-#define TFM_TOSPHERE		4
-#define TFM_SHEAR			5
-#define TFM_WARP			7
-#define TFM_SHRINKFATTEN	8
-#define TFM_TILT			9
-#define TFM_LAMP_ENERGY		10
-#define TFM_TRACKBALL		11
-#define TFM_PUSHPULL		12
-#define TFM_CREASE			13
-#define TFM_MIRROR			14
-#define TFM_BONESIZE		15
-#define TFM_BONE_ENVELOPE	16
-#define TFM_CURVE_SHRINKFATTEN		17
-#define TFM_BONE_ROLL		18
-#define TFM_TIME_TRANSLATE	19	
-#define TFM_TIME_SLIDE		20
-#define	TFM_TIME_SCALE		21
-#define TFM_TIME_EXTEND		22
-#define TFM_BAKE_TIME		23
-#define TFM_BEVEL			24
-#define TFM_BWEIGHT			25
-#define TFM_ALIGN			26
+enum {
+	TFM_INIT = -1,
+	TFM_DUMMY,
+	TFM_TRANSLATION,
+	TFM_ROTATION,
+	TFM_RESIZE,
+	TFM_TOSPHERE,
+	TFM_SHEAR,
+	TFM_WARP,
+	TFM_SHRINKFATTEN,
+	TFM_TILT,
+	TFM_LAMP_ENERGY,
+	TFM_TRACKBALL,
+	TFM_PUSHPULL,
+	TFM_CREASE,
+	TFM_MIRROR,
+	TFM_BONESIZE,
+	TFM_BONE_ENVELOPE,
+	TFM_CURVE_SHRINKFATTEN,
+	TFM_BONE_ROLL,
+	TFM_TIME_TRANSLATE,
+	TFM_TIME_SLIDE,
+	TFM_TIME_SCALE,
+	TFM_TIME_EXTEND,
+	TFM_BAKE_TIME,
+	TFM_BEVEL,
+	TFM_BWEIGHT,
+	TFM_ALIGN,
+	TFM_NODE_TRANSLATE
+} TfmModesInputFlags;
 
 /* TRANSFORM CONTEXTS */
 #define CTX_NONE			0

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-02 23:05:28 UTC (rev 18274)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_ops.c	2009-01-02 23:58:03 UTC (rev 18275)
@@ -36,6 +36,8 @@
 #include "ED_space_api.h"
 #include "ED_screen.h"
 
+#include "BIF_transform.h"
+
 #include "RNA_access.h"
 #include "RNA_define.h"
 
@@ -60,4 +62,6 @@
 	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);
+	
+	transform_keymap_for_space(wm, keymap, SPACE_NODE);
 }

Modified: branches/blender2.5/blender/source/blender/editors/space_node/node_select.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/node_select.c	2009-01-02 23:05:28 UTC (rev 18274)
+++ branches/blender2.5/blender/source/blender/editors/space_node/node_select.c	2009-01-02 23:58:03 UTC (rev 18275)
@@ -53,7 +53,7 @@
  
 #include "node_intern.h"
  
-static void node_mouse_select(SpaceNode *snode, ARegion *ar, short *mval, short modifier)
+static void node_mouse_select(SpaceNode *snode, ARegion *ar, short *mval, short extend)
 {
 	bNode *node;
 	float mx, my;
@@ -80,10 +80,10 @@
 			break;
 	}
 	if(node) {
-		if((modifier & KM_SHIFT)==0)
+		if((extend & KM_SHIFT)==0)
 			node_deselectall(snode, 0);
 		
-		if(modifier & KM_SHIFT) {
+		if(extend & KM_SHIFT) {
 			if(node->flag & SELECT)
 				node->flag &= ~SELECT;
 			else
@@ -95,7 +95,7 @@
 		node_set_active(snode, node);
 		
 		/* viewer linking */
-		if(modifier & KM_CTRL)
+		if(extend & KM_CTRL)
 			;//	node_link_viewer(snode, node);
 		
 		//std_rmouse_transform(node_transform_ext);	/* does undo push for select */
@@ -109,7 +109,7 @@
 	ARegion *ar= CTX_wm_region(C);
 	int select_type;
 	short mval[2];
-	short modifier;
+	short extend;
 
 	select_type = RNA_enum_get(op->ptr, "select_type");
 	
@@ -117,8 +117,8 @@
 		case NODE_SELECT_MOUSE:
 			mval[0] = RNA_int_get(op->ptr, "mx");
 			mval[1] = RNA_int_get(op->ptr, "my");
-			modifier = RNA_int_get(op->ptr, "modifier");
-			node_mouse_select(snode, ar, mval, modifier);
+			extend = RNA_int_get(op->ptr, "extend");
+			node_mouse_select(snode, ar, mval, extend);
 			break;
 	}
 	return OPERATOR_FINISHED;
@@ -140,7 +140,7 @@
 
 static int node_extend_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
-	RNA_int_set(op->ptr, "modifier", KM_SHIFT);
+	RNA_int_set(op->ptr, "extend", KM_SHIFT);
 
 	return node_select_invoke(C, op, event);
 }
@@ -168,7 +168,7 @@
 	
 	prop = RNA_def_property(ot->srna, "mx", PROP_INT, PROP_NONE);
 	prop = RNA_def_property(ot->srna, "my", PROP_INT, PROP_NONE);
-	prop = RNA_def_property(ot->srna, "modifier", PROP_INT, PROP_NONE);
+	prop = RNA_def_property(ot->srna, "extend", PROP_INT, PROP_NONE);
 }
 
 void NODE_OT_select(wmOperatorType *ot)
@@ -188,5 +188,5 @@
 	
 	prop = RNA_def_property(ot->srna, "mx", PROP_INT, PROP_NONE);
 	prop = RNA_def_property(ot->srna, "my", PROP_INT, PROP_NONE);
-	prop = RNA_def_property(ot->srna, "modifier", PROP_INT, PROP_NONE);
+	prop = RNA_def_property(ot->srna, "extend", PROP_INT, PROP_NONE);
 }

Modified: branches/blender2.5/blender/source/blender/editors/space_node/space_node.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_node/space_node.c	2009-01-02 23:05:28 UTC (rev 18274)
+++ branches/blender2.5/blender/source/blender/editors/space_node/space_node.c	2009-01-02 23:58:03 UTC (rev 18275)
@@ -197,6 +197,24 @@
 	}
 }
 
+static int node_context(const bContext *C, const bContextDataMember *member, bContextDataResult *result)
+{
+	SpaceNode *snode= (SpaceNode*)CTX_wm_space_data(C);
+	
+	if(member == CTX_data_selected_nodes) {
+		bNode *node;
+		
+		for(next_node(snode->edittree); (node=next_node(NULL));) {
+			if(node->flag & SELECT) {
+				CTX_data_list_add(result, node);
+			}
+		}
+		return 1;
+	}
+	
+	return 0;
+}
+
 /* only called once, from space/spacetypes.c */
 void ED_spacetype_node(void)
 {
@@ -211,6 +229,7 @@
 	st->duplicate= node_duplicate;
 	st->operatortypes= node_operatortypes;
 	st->keymap= node_keymap;
+	st->context= node_context;
 	
 	/* regions: main window */
 	art= MEM_callocN(sizeof(ARegionType), "spacetype node region");

Modified: branches/blender2.5/blender/source/blender/editors/transform/transform.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/transform/transform.c	2009-01-02 23:05:28 UTC (rev 18274)
+++ branches/blender2.5/blender/source/blender/editors/transform/transform.c	2009-01-02 23:58:03 UTC (rev 18275)
@@ -332,6 +332,9 @@
 		else 
 			ED_area_tag_redraw(t->sa);
 	}
+	else if(t->spacetype == SPACE_NODE) {
+		ED_area_tag_redraw(t->sa);
+	}
 #if 0 // TRANSFORM_FIX_ME
 	else if (t->spacetype==SPACE_IMAGE) {
 		if (G.sima->lock) force_draw_plus(SPACE_VIEW3D, 0);
@@ -543,6 +546,8 @@
 			return "Key Time";
 		case TFM_MIRROR:
 			return "Mirror";
+		case TFM_NODE_TRANSLATE:
+			return "Node Translate";
 	}
 	return "Transform";
 }
@@ -1043,6 +1048,9 @@
 	case TFM_ALIGN:
 		initAlign(t);
 		break;
+	case TFM_NODE_TRANSLATE:
+		initNodeTranslate(t);
+		break;
 	}
 }
 
@@ -1085,7 +1093,10 @@
 	{
 		/* handle restoring objects */
 		if(t->state == TRANS_CANCEL)
-			restoreTransObjects(t);	// calls recalcData()
+			if(t->spacetype == SPACE_NODE)
+				restoreTransNodes(t);
+			else
+				restoreTransObjects(t);	// calls recalcData()
 		
 		/* free data */
 		postTrans(t);
@@ -4525,3 +4536,55 @@
 	}
 #endif
 }
+
+/* *** Node translation *** */
+
+void initNodeTranslate(TransInfo *t) 
+{
+	t->mode = TFM_NODE_TRANSLATE;
+	t->transform = NodeTranslate;
+	
+	initMouseInputMode(t, &t->mouse, INPUT_NONE);
+
+	/* num-input has max of (n-1) */
+	t->idx_max = 0;
+	t->num.flag = 0;
+	t->num.idx_max = t->idx_max;
+	
+	/* initialise snap like for everything else */
+	t->snap[0] = 0.0f; 
+	t->snap[1] = t->snap[2] = 1.0f;
+}
+
+static void applyNodeTranslate(TransInfo *t) 
+{
+	TransData2D *td = t->data2d;
+	int i;
+
+	for (i = 0 ; i < t->total; i++, td++) {
+		td->loc2d[0]= td->loc[0]+t->values[0];
+		td->loc2d[1]= td->loc[1]+t->values[1];
+	}
+}
+
+int NodeTranslate(TransInfo *t, short mval[2]) 
+{
+	View2D *v2d = &t->ar->v2d;
+	float cval[2], sval[2];
+	char str[200];
+	
+	/* calculate translation amount from mouse movement - in 'node-grid space' */
+	UI_view2d_region_to_view(v2d, mval[0], mval[1], &cval[0], &cval[1]);
+	UI_view2d_region_to_view(v2d, t->imval[0], t->imval[1], &sval[0], &sval[1]);
+
+	t->values[0] = cval[0] - sval[0];
+	t->values[1] = cval[1] - sval[1];
+		
+	applyNodeTranslate(t);
+
+	recalcData(t);
+	
+	viewRedrawForce(t);
+

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list