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_Debug.h')
-rw-r--r--source/blender/compositor/intern/COM_Debug.h79
1 files changed, 79 insertions, 0 deletions
diff --git a/source/blender/compositor/intern/COM_Debug.h b/source/blender/compositor/intern/COM_Debug.h
new file mode 100644
index 00000000000..cc108157769
--- /dev/null
+++ b/source/blender/compositor/intern/COM_Debug.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2013, 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:
+ * Lukas Toenne
+ */
+
+#ifndef _COM_Debug_h
+#define _COM_Debug_h
+
+#include <map>
+#include <string>
+
+#include "COM_defines.h"
+
+class NodeBase;
+class Node;
+class NodeOperation;
+class ExecutionSystem;
+class ExecutionGroup;
+
+class DebugInfo {
+public:
+ typedef enum {
+ EG_WAIT,
+ EG_RUNNING,
+ EG_FINISHED
+ } GroupState;
+
+ typedef std::map<NodeBase *, std::string> NodeNameMap;
+ typedef std::map<ExecutionGroup *, GroupState> GroupStateMap;
+
+ static std::string node_name(NodeBase *node);
+
+ static void convert_started();
+ static void execute_started(ExecutionSystem *system);
+
+ static void node_added(Node *node);
+ static void node_to_operations(Node *node);
+ static void operation_added(NodeOperation *operation);
+ static void operation_read_write_buffer(NodeOperation *operation);
+
+ static void execution_group_started(ExecutionGroup *group);
+ static void execution_group_finished(ExecutionGroup *group);
+
+ static void graphviz(ExecutionSystem *system);
+
+#ifdef COM_DEBUG
+protected:
+ static int graphviz_operation(ExecutionSystem *system, NodeOperation *operation, ExecutionGroup *group, char *str, int maxlen);
+ static int graphviz_legend_color(const char *name, const char *color, char *str, int maxlen);
+ static int graphviz_legend_line(const char *name, const char *color, const char *style, char *str, int maxlen);
+ static int graphviz_legend_group(const char *name, const char *color, const char *style, char *str, int maxlen);
+ static int graphviz_legend(char *str, int maxlen);
+ static bool graphviz_system(ExecutionSystem *system, char *str, int maxlen);
+
+private:
+ static int m_file_index;
+ static NodeNameMap m_node_names; /**< map nodes to usable names for debug output */
+ static std::string m_current_node_name; /**< base name for all operations added by a node */
+ static GroupStateMap m_group_states; /**< for visualizing group states */
+#endif
+};
+
+#endif