From 7769e1d672b51c45890f8a2a857e97044022916d Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 30 Oct 2015 10:59:17 +0100 Subject: [PATCH] Change API events view to show { } sections in sub-nodes --- renderdocui/Windows/APIInspector.cs | 31 ++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/renderdocui/Windows/APIInspector.cs b/renderdocui/Windows/APIInspector.cs index 136d92fb6..a57f0a94d 100644 --- a/renderdocui/Windows/APIInspector.cs +++ b/renderdocui/Windows/APIInspector.cs @@ -83,8 +83,8 @@ namespace renderdocui.Windows apiEvents.BeginUpdate(); apiEvents.Nodes.Clear(); - Regex rgx = new Regex("^\\s*[{}]?"); - string replacement = ""; + Regex rgxopen = new Regex("^\\s*{"); + Regex rgxclose = new Regex("^\\s*}"); FetchDrawcall draw = m_Core.CurDrawcall; @@ -99,19 +99,32 @@ namespace renderdocui.Windows string[] lines = ev.eventDesc.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None); - TreelistView.Node node = apiEvents.Nodes.Add(new TreelistView.Node(new object[] { ev.eventID, lines[0] })); + TreelistView.Node root = new TreelistView.Node(new object[] { ev.eventID, lines[0] }); - for (int i = 1; i < lines.Length; i++) + int i=1; + + if (i < lines.Length && lines[i].Trim() == "{") + i++; + + List nodestack = new List(); + nodestack.Add(root); + + for (; i < lines.Length; i++) { - string l = rgx.Replace(lines[i], replacement); - if (l.Length > 0) - node.Nodes.Add(new TreelistView.Node(new object[] { "", l })); + if (rgxopen.IsMatch(lines[i])) + nodestack.Add(nodestack.Last().Nodes.LastNode); + else if (rgxclose.IsMatch(lines[i])) + nodestack.RemoveAt(nodestack.Count - 1); + else if(lines[i].Trim().Length > 0 && nodestack.Count > 0) + nodestack.Last().Nodes.Add(new TreelistView.Node(new object[] { "", lines[i].Trim() })); } if (ev.eventID == draw.eventID) - node.Bold = true; + root.Bold = true; - node.Tag = (object)ev; + root.Tag = (object)ev; + + apiEvents.Nodes.Add(root); } if (apiEvents.Nodes.Count > 0)