2 using System.Collections.Generic;
6 using System.Windows.Controls;
7 using System.Windows.Data;
8 using System.Windows.Documents;
9 using System.Windows.Input;
10 using System.Windows.Media;
11 using System.Windows.Media.Imaging;
12 using System.Windows.Navigation;
13 using System.Windows.Shapes;
15 using SiliconStudio.Paradox.DebugTools.DataStructures;
16 using SiliconStudio.Presentation.Controls;
18 namespace SiliconStudio.
Paradox.DebugTools
29 InitializeComponent();
31 if (processInfo == null || processInfo.
Frames.Count == 0)
34 this.DataContext =
this;
36 this.processInfo = processInfo;
37 this.Loaded += OnLoaded;
44 private Pen pen =
new Pen(Brushes.Red, 1.0);
48 double pixel = processInfo.TimeLength * processInfoRenderer.PixelsPerSecond;
49 e.DrawingContext.DrawLine(pen,
new Point(pixel, 0.0),
new Point(pixel, timebar.ActualHeight));
52 private void CreateTreeView()
54 if (processInfo == null)
57 foreach (
FrameInfo frame
in processInfo.Frames)
59 TreeViewItem tviFrame =
new TreeViewItem { Header = string.Format(
"Frame {0} ({1} - {2})", frame.FrameNumber, frame.BeginTime, frame.EndTime) };
63 TreeViewItem tviThread =
new TreeViewItem { Header = string.Format(
"Thread {0}", thread.Id) };
67 TreeViewItem tviMicroThread =
new TreeViewItem { Header = string.Format(
"MicroThread {0} ({1} - {2})", mt.Id, mt.BeginTime, mt.EndTime) };
68 tviThread.Items.Add(tviMicroThread);
71 tviFrame.Items.Add(tviThread);
74 treeView.Items.Add(tviFrame);
80 if (processInfo == null)
83 FrameInfo lastFrame = processInfo.Frames.Last();
85 processInfoRenderer.SizeChanged += (ss, ee) => timebar.SetUnitAt(lastFrame.
EndTime, processInfoRenderer.ActualWidth);
87 timebar.BeforeRender += (ss, ee) =>
89 processInfoRenderer.Width = processInfo.TimeLength * timebar.PixelsPerUnit;
90 processInfoRenderer.PixelsPerSecond = timebar.PixelsPerUnit;
91 processInfoRenderer.RenderAllFrames(processInfo);
94 processInfoRenderer.RenderAllFrames(processInfo);
96 scrollViewer.ScrollToRightEnd();
99 private void timebar_MouseMove(
object sender, MouseEventArgs e)
101 Point pos = e.GetPosition(timebar);
102 Window.GetWindow(
this).Title = timebar.GetUnitAt(pos.X).ToString();
delegate void CustomRenderRoutedEventHandler(object sender, CustomRenderRoutedEventArgs e)
System.Windows.Point Point