[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