Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-08-03 01:36:33 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-08-03 01:36:33 +0400
commit5e60ccc65c09f9b2e344ecfd9584611839ecdff6 (patch)
tree4cefda503ecd98627d49c2e7739cb9da2ef13ca3 /source/blender/editors/space_node/node_view.c
parente86e5074f6d4fdc455d64cc362f6b4f5005f79b8 (diff)
rename node_state.c --> node_view.c
Diffstat (limited to 'source/blender/editors/space_node/node_view.c')
-rw-r--r--source/blender/editors/space_node/node_view.c132
1 files changed, 132 insertions, 0 deletions
diff --git a/source/blender/editors/space_node/node_view.c b/source/blender/editors/space_node/node_view.c
new file mode 100644
index 00000000000..b9fb812dc04
--- /dev/null
+++ b/source/blender/editors/space_node/node_view.c
@@ -0,0 +1,132 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2008 Blender Foundation.
+ * All rights reserved.
+ *
+ *
+ * Contributor(s): Blender Foundation, Nathan Letwory
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file blender/editors/space_node/node_view.c
+ * \ingroup spnode
+ */
+
+#include <stdio.h>
+
+#include "DNA_node_types.h"
+#include "DNA_scene_types.h"
+
+#include "BLI_rect.h"
+#include "BLI_utildefines.h"
+
+#include "BKE_context.h"
+#include "BKE_node.h"
+
+#include "ED_screen.h"
+
+#include "RNA_access.h"
+#include "RNA_define.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
+#include "UI_view2d.h"
+
+#include "node_intern.h"
+
+
+/* **************** View All Operator ************** */
+
+static void snode_home(ScrArea *UNUSED(sa), ARegion *ar, SpaceNode* snode)
+{
+ bNode *node;
+ rctf *cur;
+ float oldwidth, oldheight, width, height;
+ int first= 1;
+
+ cur= &ar->v2d.cur;
+
+ oldwidth= cur->xmax - cur->xmin;
+ oldheight= cur->ymax - cur->ymin;
+
+ cur->xmin = cur->ymin = 0.0f;
+ cur->xmax=ar->winx;
+ cur->ymax=ar->winy;
+
+ if (snode->edittree) {
+ for (node= snode->edittree->nodes.first; node; node= node->next) {
+ if (first) {
+ first= 0;
+ ar->v2d.cur= node->totr;
+ }
+ else {
+ BLI_rctf_union(cur, &node->totr);
+ }
+ }
+ }
+
+ 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->ymax + newheight/4;
+ }
+ else {
+ float newwidth;
+ newwidth= oldwidth * height/oldheight;
+ cur->xmin = cur->xmin - newwidth/4;
+ cur->xmax = cur->xmax + newwidth/4;
+ }
+
+ ar->v2d.tot= ar->v2d.cur;
+ UI_view2d_curRect_validate(&ar->v2d);
+}
+
+static int node_view_all_exec(bContext *C, wmOperator *UNUSED(op))
+{
+ ScrArea *sa= CTX_wm_area(C);
+ ARegion *ar= CTX_wm_region(C);
+ SpaceNode *snode= CTX_wm_space_node(C);
+
+ snode_home(sa, ar, snode);
+ ED_region_tag_redraw(ar);
+
+ return OPERATOR_FINISHED;
+}
+
+void NODE_OT_view_all(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name = "View All";
+ ot->idname = "NODE_OT_view_all";
+ ot->description = "Resize view so you can see all nodes";
+
+ /* api callbacks */
+ ot->exec = node_view_all_exec;
+ ot->poll = ED_operator_node_active;
+
+ /* flags */
+ ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
+}