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


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to