You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.7 KiB
112 lines
2.7 KiB
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) |
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) |
|
|
|
using System; |
|
using System.Windows; |
|
using System.Windows.Controls; |
|
using System.Windows.Media; |
|
using ICSharpCode.TreeView; |
|
using System.Runtime.InteropServices; |
|
|
|
namespace ICSharpCode.CodeQualityAnalysis.Utility |
|
{ |
|
/// <summary> |
|
/// Description of Helper. |
|
/// </summary> |
|
public static class Helper |
|
{ |
|
[DllImport("gdi32.dll")] |
|
public static extern bool DeleteObject(IntPtr hObject); |
|
|
|
public static void FillTree(SharpTreeView tree, Module module) |
|
{ |
|
var root = CreateTreeItem(module); |
|
tree.Root = root; |
|
tree.ShowRoot = false; |
|
|
|
foreach (var ns in module.Namespaces) |
|
{ |
|
var namespaceNode = CreateTreeItem(ns); |
|
tree.Root.Children.Add(namespaceNode); |
|
|
|
foreach (var type in ns.Types) |
|
{ |
|
var typeNode = CreateTreeItem(type); |
|
namespaceNode.Children.Add(typeNode); |
|
|
|
foreach (var method in type.Methods) |
|
{ |
|
var methodName = CreateTreeItem(method); |
|
typeNode.Children.Add(methodName); |
|
} |
|
|
|
foreach (var field in type.Fields) |
|
{ |
|
var fieldNode = CreateTreeItem(field); |
|
typeNode.Children.Add(fieldNode); |
|
} |
|
} |
|
} |
|
} |
|
|
|
private static DependecyTreeNode CreateTreeItem (INode node) |
|
{ |
|
DependecyTreeNode dtn = new DependecyTreeNode(node); |
|
return dtn; |
|
} |
|
|
|
public static Color MixedWith(this Color c1, Color c2) |
|
{ |
|
var percent = .5f; |
|
var amountFrom = 1.0f - percent; |
|
|
|
return Color.FromArgb( |
|
(byte)(c1.A * amountFrom + c2.A * percent), |
|
(byte)(c1.R * amountFrom + c2.R * percent), |
|
(byte)(c1.G * amountFrom + c2.G * percent), |
|
(byte)(c1.B * amountFrom + c2.B * percent)); |
|
} |
|
|
|
public static T FindVisualChild<T>( DependencyObject obj ) |
|
where T : DependencyObject |
|
{ |
|
// depth-first Search |
|
|
|
for( int i = 0; i < VisualTreeHelper.GetChildrenCount( obj ); i++ ) |
|
{ |
|
DependencyObject child = VisualTreeHelper.GetChild( obj, i ); |
|
|
|
if( child != null && child is T ) |
|
{ |
|
return ( T )child; |
|
} |
|
else |
|
{ |
|
T childOfChild = FindVisualChild<T>( child ); |
|
|
|
if( childOfChild != null ) |
|
{ |
|
return childOfChild; |
|
} |
|
} |
|
} |
|
|
|
return null; |
|
} |
|
|
|
|
|
public static ItemContainer GetParent<ItemContainer>(this DependencyObject obj) |
|
where ItemContainer : DependencyObject |
|
{ |
|
if (obj == null) |
|
return null; |
|
while (VisualTreeHelper.GetParent(obj) != null && !(obj is ItemContainer)) |
|
{ |
|
obj = VisualTreeHelper.GetParent(obj); |
|
} |
|
|
|
// Will return null if not found |
|
return obj as ItemContainer; |
|
} |
|
} |
|
}
|
|
|