[Bf-blender-cvs] [3883147] depsgraph_refactor: Nicer function signatures for color and style printing.
Lukas Tönne
noreply at git.blender.org
Wed Apr 16 08:58:47 CEST 2014
Commit: 3883147cc407b5de4b71e685d555e870a586218f
Author: Lukas Tönne
Date: Mon Apr 14 19:10:21 2014 +0200
https://developer.blender.org/rB3883147cc407b5de4b71e685d555e870a586218f
Nicer function signatures for color and style printing.
===================================================================
M source/blender/depsgraph/intern/depsgraph_debug.cpp
===================================================================
diff --git a/source/blender/depsgraph/intern/depsgraph_debug.cpp b/source/blender/depsgraph/intern/depsgraph_debug.cpp
index 549647a..2467d6e 100644
--- a/source/blender/depsgraph/intern/depsgraph_debug.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_debug.cpp
@@ -184,64 +184,86 @@ static int deg_debug_relation_type_color_index(eDepsRelation_Type type)
return -1;
}
-static void deg_debug_graphviz_node_type_color(const DebugContext &ctx, const char *attr, eDepsNode_Type type)
+static void deg_debug_graphviz_node_color(const DebugContext &ctx, const DepsNode *node)
{
const char *defaultcolor = "gainsboro";
- int color = deg_debug_node_type_color_index(type);
+ int color = deg_debug_node_type_color_index(node->type);
- deg_debug_printf(ctx, "%s=", attr);
if (color < 0)
deg_debug_printf(ctx, "%s", defaultcolor);
else
deg_debug_printf(ctx, "\"%s\"", deg_debug_colors_light[color % deg_debug_max_colors]);
}
-static void deg_debug_graphviz_relation_type_color(const DebugContext &ctx, const char *attr, eDepsRelation_Type type)
+static void deg_debug_graphviz_relation_color(const DebugContext &ctx, const DepsRelation *UNUSED(rel))
{
const char *defaultcolor = "black";
#if 0 /* disabled for now, edge colors are hardly distinguishable */
- int color = deg_debug_relation_type_color_index(type);
+ int color = deg_debug_relation_type_color_index(rel->type);
- deg_debug_printf(ctx, "%s=", attr);
if (color < 0)
deg_debug_printf(ctx, "%s", defaultcolor);
else
deg_debug_printf(ctx, "\"%s\"", deg_debug_colors_dark[color % deg_debug_max_colors]);
#else
- deg_debug_printf(ctx, "%s=%s", attr, defaultcolor);
+ deg_debug_printf(ctx, "%s", defaultcolor);
#endif
}
-static void deg_debug_graphviz_node_single(const DebugContext &ctx, const void *p, const char *name, const char *style, eDepsNode_Type type)
+static void deg_debug_graphviz_node_style(const DebugContext &ctx, const DepsNode *node)
+{
+ const char *base_style = "filled"; /* default style */
+ if (ctx.show_tags &&
+ (node->flag & (DEPSNODE_FLAG_DIRECTLY_MODIFIED | DEPSNODE_FLAG_NEEDS_UPDATE))) {
+ base_style = "striped";
+ }
+
+ switch (node->tclass) {
+ case DEPSNODE_CLASS_GENERIC:
+ deg_debug_printf(ctx, "\"%s\"", base_style);
+ break;
+ case DEPSNODE_CLASS_COMPONENT:
+ deg_debug_printf(ctx, "\"%s\"", base_style);
+ break;
+ case DEPSNODE_CLASS_OPERATION:
+ deg_debug_printf(ctx, "\"%s,rounded\"", base_style);
+ break;
+ }
+}
+
+static void deg_debug_graphviz_node_single(const DebugContext &ctx, const DepsNode *node)
{
const char *shape = "box";
+ const char *name = node->name.c_str();
deg_debug_printf(ctx, "// %s\n", name);
- deg_debug_printf(ctx, "\"node_%p\"", p);
+ deg_debug_printf(ctx, "\"node_%p\"", node);
deg_debug_printf(ctx, "[");
// deg_debug_printf(ctx, "label=<<B>%s</B>>", name);
deg_debug_printf(ctx, "label=<%s>", name);
deg_debug_printf(ctx, ",fontname=\"%s\"", deg_debug_graphviz_fontname);
deg_debug_printf(ctx, ",shape=%s", shape);
- deg_debug_printf(ctx, ",style=%s", style);
- deg_debug_graphviz_node_type_color(ctx, ",fillcolor", type);
+ deg_debug_printf(ctx, ",style="); deg_debug_graphviz_node_style(ctx, node);
+ deg_debug_printf(ctx, ",fillcolor="); deg_debug_graphviz_node_color(ctx, node);
deg_debug_printf(ctx, "];" NL);
deg_debug_printf(ctx, NL);
}
-static void deg_debug_graphviz_node_cluster_begin(const DebugContext &ctx, const void *p, const char *name, const char *style, eDepsNode_Type type)
+static void deg_debug_graphviz_node_cluster_begin(const DebugContext &ctx, const DepsNode *node)
{
+ const char *name = node->name.c_str();
+
deg_debug_printf(ctx, "// %s\n", name);
- deg_debug_printf(ctx, "subgraph \"cluster_%p\" {" NL, p);
+ deg_debug_printf(ctx, "subgraph \"cluster_%p\" {" NL, node);
// deg_debug_printf(ctx, "label=<<B>%s</B>>;" NL, name);
deg_debug_printf(ctx, "label=<%s>;" NL, name);
deg_debug_printf(ctx, "fontname=\"%s\";" NL, deg_debug_graphviz_fontname);
- deg_debug_printf(ctx, "style=%s;" NL, style);
- deg_debug_graphviz_node_type_color(ctx, "fillcolor", type); deg_debug_printf(ctx, ";" NL);
+ deg_debug_printf(ctx, "style="); deg_debug_graphviz_node_style(ctx, node); deg_debug_printf(ctx, ";" NL);
+ deg_debug_printf(ctx, "fillcolor="); deg_debug_graphviz_node_color(ctx, node); deg_debug_printf(ctx, ";" NL);
/* dummy node, so we can add edges between clusters */
- deg_debug_printf(ctx, "\"node_%p\"", p);
+ deg_debug_printf(ctx, "\"node_%p\"", node);
deg_debug_printf(ctx, "[");
deg_debug_printf(ctx, "shape=%s", "point");
deg_debug_printf(ctx, ",style=%s", "invis");
@@ -262,27 +284,14 @@ static void deg_debug_graphviz_graph_relations(const DebugContext &ctx, const De
static void deg_debug_graphviz_node(const DebugContext &ctx, const DepsNode *node)
{
- const char *style;
- switch (node->tclass) {
- case DEPSNODE_CLASS_GENERIC:
- style = "\"filled\"";
- break;
- case DEPSNODE_CLASS_COMPONENT:
- style = "\"filled\"";
- break;
- case DEPSNODE_CLASS_OPERATION:
- style = "\"filled,rounded\"";
- break;
- }
-
switch (node->type) {
case DEPSNODE_TYPE_ID_REF: {
const IDDepsNode *id_node = (const IDDepsNode *)node;
if (id_node->components.empty()) {
- deg_debug_graphviz_node_single(ctx, node, node->name.c_str(), style, node->type);
+ deg_debug_graphviz_node_single(ctx, node);
}
else {
- deg_debug_graphviz_node_cluster_begin(ctx, node, node->name.c_str(), style, node->type);
+ deg_debug_graphviz_node_cluster_begin(ctx, node);
for (IDDepsNode::ComponentMap::const_iterator it = id_node->components.begin(); it != id_node->components.end(); ++it) {
const ComponentDepsNode *comp = it->second;
deg_debug_graphviz_node(ctx, comp);
@@ -295,12 +304,12 @@ static void deg_debug_graphviz_node(const DebugContext &ctx, const DepsNode *nod
case DEPSNODE_TYPE_SUBGRAPH: {
SubgraphDepsNode *sub_node = (SubgraphDepsNode *)node;
if (sub_node->graph) {
- deg_debug_graphviz_node_cluster_begin(ctx, node, node->name.c_str(), style, node->type);
+ deg_debug_graphviz_node_cluster_begin(ctx, node);
deg_debug_graphviz_graph_nodes(ctx, sub_node->graph);
deg_debug_graphviz_node_cluster_end(ctx);
}
else {
- deg_debug_graphviz_node_single(ctx, node, node->name.c_str(), style, node->type);
+ deg_debug_graphviz_node_single(ctx, node);
}
break;
}
@@ -313,7 +322,7 @@ static void deg_debug_graphviz_node(const DebugContext &ctx, const DepsNode *nod
case DEPSNODE_TYPE_SEQUENCER: {
ComponentDepsNode *comp_node = (ComponentDepsNode *)node;
if (!comp_node->operations.empty()) {
- deg_debug_graphviz_node_cluster_begin(ctx, node, node->name.c_str(), style, node->type);
+ deg_debug_graphviz_node_cluster_begin(ctx, node);
for (ComponentDepsNode::OperationMap::const_iterator it = comp_node->operations.begin(); it != comp_node->operations.end(); ++it) {
const DepsNode *op_node = it->second;
deg_debug_graphviz_node(ctx, op_node);
@@ -321,7 +330,7 @@ static void deg_debug_graphviz_node(const DebugContext &ctx, const DepsNode *nod
deg_debug_graphviz_node_cluster_end(ctx);
}
else {
- deg_debug_graphviz_node_single(ctx, node, node->name.c_str(), style, node->type);
+ deg_debug_graphviz_node_single(ctx, node);
}
break;
}
@@ -329,7 +338,7 @@ static void deg_debug_graphviz_node(const DebugContext &ctx, const DepsNode *nod
case DEPSNODE_TYPE_EVAL_POSE: {
PoseComponentDepsNode *pose_node = (PoseComponentDepsNode *)node;
if (!pose_node->bone_hash.empty()) {
- deg_debug_graphviz_node_cluster_begin(ctx, node, node->name.c_str(), style, node->type);
+ deg_debug_graphviz_node_cluster_begin(ctx, node);
for (PoseComponentDepsNode::BoneComponentMap::const_iterator it = pose_node->bone_hash.begin(); it != pose_node->bone_hash.end(); ++it) {
const DepsNode *bone_comp = it->second;
deg_debug_graphviz_node(ctx, bone_comp);
@@ -337,13 +346,13 @@ static void deg_debug_graphviz_node(const DebugContext &ctx, const DepsNode *nod
deg_debug_graphviz_node_cluster_end(ctx);
}
else {
- deg_debug_graphviz_node_single(ctx, node, node->name.c_str(), style, node->type);
+ deg_debug_graphviz_node_single(ctx, node);
}
break;
}
default: {
- deg_debug_graphviz_node_single(ctx, node, node->name.c_str(), style, node->type);
+ deg_debug_graphviz_node_single(ctx, node);
}
}
}
@@ -396,7 +405,7 @@ static void deg_debug_graphviz_node_relations(const DebugContext &ctx, const Dep
deg_debug_printf(ctx, "[");
deg_debug_printf(ctx, "label=<%s>", rel->name.c_str());
deg_debug_printf(ctx, ",fontname=\"%s\"", deg_debug_graphviz_fontname);
- deg_debug_graphviz_relation_type_color(ctx, ",color", rel->type);
+ deg_debug_printf(ctx, ",color="); deg_debug_graphviz_relation_color(ctx, rel);
if (deg_debug_graphviz_is_cluster(tail))
deg_debug_printf(ctx, ",ltail=\"cluster_%p\"", tail);
More information about the Bf-blender-cvs
mailing list