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:
Diffstat (limited to 'source/blender/compositor/intern/COM_Node.h')
-rw-r--r--source/blender/compositor/intern/COM_Node.h131
1 files changed, 131 insertions, 0 deletions
diff --git a/source/blender/compositor/intern/COM_Node.h b/source/blender/compositor/intern/COM_Node.h
new file mode 100644
index 00000000000..3706592a585
--- /dev/null
+++ b/source/blender/compositor/intern/COM_Node.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright 2011, Blender Foundation.
+ *
+ * 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.
+ *
+ * Contributor:
+ * Jeroen Bakker
+ * Monique Dewanchand
+ */
+
+#ifndef _COM_Node_h
+#define _COM_Node_h
+
+#include "COM_NodeBase.h"
+#include "COM_InputSocket.h"
+#include "COM_OutputSocket.h"
+#include "COM_CompositorContext.h"
+#include "DNA_node_types.h"
+#include "BKE_text.h"
+#include <vector>
+#include <string>
+
+using namespace std;
+
+class Node;
+class NodeOperation;
+class ExecutionSystem;
+
+typedef vector<Node*> NodeList;
+typedef NodeList::iterator NodeIterator;
+typedef pair<NodeIterator, NodeIterator> NodeRange;
+
+/**
+ * My node documentation.
+ */
+class Node:public NodeBase {
+private:
+ /**
+ * @brief stores the reference to the SDNA bNode struct
+ */
+ bNode* editorNode;
+
+public:
+ Node(bNode* editorNode, bool create_sockets=true);
+
+ /**
+ * @brief get the reference to the SDNA bNode struct
+ */
+ bNode* getbNode();
+
+ /**
+ * @brief convert node to operation
+ *
+ * @todo this must be described furter
+ *
+ * @param system the ExecutionSystem where the operations need to be added
+ * @param context reference to the CompositorContext
+ */
+ virtual void convertToOperations(ExecutionSystem* system, CompositorContext * context) =0;
+
+ /**
+ * this method adds a SetValueOperation as input of the input socket.
+ * This can only be used from the convertToOperation method. all other usages are not allowed
+ */
+ void addSetValueOperation(ExecutionSystem *graph, InputSocket* inputsocket, int editorNodeInputSocketIndex);
+
+ /**
+ * this method adds a SetColorOperation as input of the input socket.
+ * This can only be used from the convertToOperation method. all other usages are not allowed
+ */
+ void addSetColorOperation(ExecutionSystem *graph, InputSocket* inputsocket, int editorNodeInputSocketIndex);
+
+ /**
+ * this method adds a SetVectorOperation as input of the input socket.
+ * This can only be used from the convertToOperation method. all other usages are not allowed
+ */
+ void addSetVectorOperation(ExecutionSystem *graph, InputSocket* inputsocket, int editorNodeInputSocketIndex);
+
+ /**
+ * Creates a new link between an outputSocket and inputSocket and registrates the link to the graph
+ * @return the new created link
+ */
+ SocketConnection* addLink(ExecutionSystem *graph, OutputSocket* outputSocket, InputSocket* inputsocket);
+
+ /**
+ * is this node a group node.
+ */
+ virtual bool isGroupNode() const { return false; }
+ /**
+ * is this node a proxy node.
+ */
+ virtual bool isProxyNode() const { return false; }
+
+ /**
+ * @brief find the InputSocket by bNodeSocket
+ *
+ * @param socket
+ */
+ InputSocket* findInputSocketBybNodeSocket(bNodeSocket* socket);
+
+ /**
+ * @brief find the OutputSocket by bNodeSocket
+ *
+ * @param socket
+ */
+ OutputSocket* findOutputSocketBybNodeSocket(bNodeSocket* socket);
+protected:
+
+ Node();
+
+ void addPreviewOperation(ExecutionSystem *system, InputSocket* inputSocket, int priority);
+ void addPreviewOperation(ExecutionSystem *system, OutputSocket* inputSocket, int priority);
+
+ bNodeSocket* getEditorInputSocket(int editorNodeInputSocketIndex);
+ bNodeSocket* getEditorOutputSocket(int editorNodeOutputSocketIndex);
+private:
+};
+
+#endif