private void CreateTree(List <PiePieceDescriptor> list, CallTreeNodeViewModel parent, double rotation, long totalCycles, int level) { if (level == 10 || Task.Current.IsCancelled) { return; } level++; int i = 0; foreach (CallTreeNodeViewModel child in parent.Children) { if (Task.Current.IsCancelled) { return; } double childWedgeAngle; childWedgeAngle = child.CpuCyclesSpent * 360.0 / totalCycles; if (childWedgeAngle >= 360) { childWedgeAngle = 359.9999; } if (childWedgeAngle > 0.5) { PiePieceDescriptor piePiece = new PiePieceDescriptor { Radius = 20, WedgeAngle = childWedgeAngle, RotationAngle = rotation, Level = level, Node = child }; list.Add(piePiece); // create pie pieces for children CreateTree(list, child, rotation, totalCycles, level); rotation += childWedgeAngle; i++; } } }
private void CreateTree(List<PiePieceDescriptor> list, CallTreeNodeViewModel parent, double rotation, long totalCycles, int level) { if (level == 10 || Task.Current.IsCancelled) return; level++; int i = 0; foreach (CallTreeNodeViewModel child in parent.Children) { if (Task.Current.IsCancelled) return; double childWedgeAngle; childWedgeAngle = child.CpuCyclesSpent * 360.0 / totalCycles; if (childWedgeAngle >= 360) childWedgeAngle = 359.9999; if (childWedgeAngle > 0.5) { PiePieceDescriptor piePiece = new PiePieceDescriptor { Radius = 20, WedgeAngle = childWedgeAngle, RotationAngle = rotation, Level = level, Node = child }; list.Add(piePiece); // create pie pieces for children CreateTree(list, child, rotation, totalCycles, level); rotation += childWedgeAngle; i++; } } }