Browse Source

Added new icons for TypeReference, ExportedType and MemberReference

pull/3092/head
Siegfried Pammer 1 year ago
parent
commit
cc58644082
  1. 86
      ILSpy/Images/ExportOverlay.svg
  2. 18
      ILSpy/Images/ExportOverlay.xaml
  3. 81
      ILSpy/Images/Images.cs
  4. 4
      ILSpy/Images/README.md
  5. 55
      ILSpy/Images/ReferenceOverlay.svg
  6. 12
      ILSpy/Images/ReferenceOverlay.xaml
  7. 2
      ILSpy/TreeNodes/AssemblyReferenceReferencedTypesTreeNode.cs
  8. 2
      ILSpy/TreeNodes/ExportedTypeTreeNode.cs
  9. 6
      ILSpy/TreeNodes/MemberReferenceTreeNode.cs
  10. 2
      ILSpy/TreeNodes/TypeReferenceTreeNode.cs

86
ILSpy/Images/ExportOverlay.svg

@ -0,0 +1,86 @@ @@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version="1.1"
x="0px"
y="0px"
viewBox="0 0 16 16"
style="enable-background:new 0 0 16 16;"
xml:space="preserve"
id="svg8"
sodipodi:docname="ExportOverlay.svg"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs8" /><sodipodi:namedview
id="namedview8"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="51.3125"
inkscape:cx="10.98173"
inkscape:cy="8"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="2552"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<style
type="text/css"
id="style1">
.icon_x002D_canvas_x002D_transparent{opacity:0;fill:#F6F6F6;}
.icon_x002D_vs_x002D_out{fill:#F6F6F6;}
.icon_x002D_vs_x002D_action_x002D_blue{fill:#00539C;}
</style>
<g
id="canvas"
transform="matrix(0.5625,0,0,1,7,12.444445)">
<path
class="icon_x002D_canvas_x002D_transparent"
d="M 16,-12.444444 V 3.5555556 H -12.444444 V -12.444444 Z"
id="path1"
style="stroke-width:1.33333" />
</g>
<g
id="outline"
transform="matrix(0.5625,0,0,0.5625,7,7)">
<path
class="icon_x002D_vs_x002D_out"
d="M 5.793,0.879 8.621,3.707 7.328,5 H 10.5 c 3.033,0 5.5,2.467 5.5,5.5 0,3.032 -2.467,5.5 -5.5,5.5 h -1 v -4 h 1 C 11.327,12 12,11.327 12,10.5 12,9.673 11.327,9 10.5,9 H 7.328 L 8.621,10.293 5.793,13.121 0,7.328 V 6.672 Z"
id="path2" />
</g>
<g
id="iconBg"
transform="matrix(0.5625,0,0,0.5625,7,7)">
<path
class="icon_x002D_vs_x002D_action_x002D_blue"
d="M 5.793,2.293 7.207,3.707 4.914,6 H 10.5 C 12.981,6 15,8.019 15,10.5 15,12.981 12.981,15 10.5,15 V 13 C 11.878,13 13,11.879 13,10.5 13,9.121 11.878,8 10.5,8 H 4.914 L 7.207,10.293 5.793,11.707 1.086,7 Z"
id="path3" />
<g
id="g3">
</g>
<g
id="g4">
</g>
<g
id="g5">
</g>
<g
id="g6">
</g>
<g
id="g7">
</g>
<g
id="g8">
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

18
ILSpy/Images/ExportOverlay.xaml

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
<DrawingGroup xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ClipGeometry="M0,0 V16 H16 V0 H0 Z">
<DrawingGroup.Transform>
<TranslateTransform X="12.444443702697754" Y="12.444443702697754" />
</DrawingGroup.Transform>
<DrawingGroup Opacity="1" Transform="0.5625,0,0,1,7,12.444445">
<GeometryDrawing Geometry="F1 M16,16z M0,0z M16,-12.444444L16,3.5555556 -12.444444,3.5555556 -12.444444,-12.444444z">
<GeometryDrawing.Brush>
<SolidColorBrush Color="#FFF6F6F6" Opacity="0" />
</GeometryDrawing.Brush>
</GeometryDrawing>
</DrawingGroup>
<DrawingGroup Opacity="1" Transform="0.5625,0,0,0.5625,7,7">
<GeometryDrawing Brush="#FFF6F6F6" Geometry="F1 M16,16z M0,0z M5.793,0.879L8.621,3.707 7.328,5 10.5,5C13.533,5 16,7.467 16,10.5 16,13.532 13.533,16 10.5,16L9.5,16 9.5,12 10.5,12C11.327,12 12,11.327 12,10.5 12,9.673 11.327,9 10.5,9L7.328,9 8.621,10.293 5.793,13.121 0,7.328 0,6.672z" />
</DrawingGroup>
<DrawingGroup Opacity="1" Transform="0.5625,0,0,0.5625,7,7">
<GeometryDrawing Brush="#FF00539C" Geometry="F1 M16,16z M0,0z M5.793,2.293L7.207,3.707 4.914,6 10.5,6C12.981,6 15,8.019 15,10.5 15,12.981 12.981,15 10.5,15L10.5,13C11.878,13 13,11.879 13,10.5 13,9.121 11.878,8 10.5,8L4.914,8 7.207,10.293 5.793,11.707 1.086,7z" />
</DrawingGroup>
</DrawingGroup>

81
ILSpy/Images/Images.cs

@ -27,6 +27,8 @@ namespace ICSharpCode.ILSpy @@ -27,6 +27,8 @@ namespace ICSharpCode.ILSpy
{
static class Images
{
private static readonly Rect iconRect = new Rect(0, 0, 16, 16);
static ImageSource Load(string icon)
{
var image = new DrawingImage(LoadDrawingGroup(null, "Images/" + icon));
@ -85,6 +87,7 @@ namespace ICSharpCode.ILSpy @@ -85,6 +87,7 @@ namespace ICSharpCode.ILSpy
public static readonly ImageSource Interface = Load("Interface");
public static readonly ImageSource Delegate = Load("Delegate");
public static readonly ImageSource Enum = Load("Enum");
public static readonly ImageSource Type = Load("ShowPublicOnly");
public static readonly ImageSource Field = Load("Field");
public static readonly ImageSource FieldReadOnly = Load("FieldReadOnly");
@ -109,9 +112,15 @@ namespace ICSharpCode.ILSpy @@ -109,9 +112,15 @@ namespace ICSharpCode.ILSpy
private static readonly ImageSource OverlayPrivate = Load("OverlayPrivate");
private static readonly ImageSource OverlayPrivateProtected = Load("OverlayPrivateProtected");
private static readonly ImageSource OverlayCompilerControlled = Load("OverlayCompilerControlled");
private static readonly ImageSource OverlayReference = Load("ReferenceOverlay");
private static readonly ImageSource OverlayStatic = Load("OverlayStatic");
public static readonly ImageSource TypeReference = GetIcon("ShowPublicOnly", "ReferenceOverlay");
public static readonly ImageSource MethodReference = GetIcon("Method", "ReferenceOverlay");
public static readonly ImageSource FieldReference = GetIcon("Field", "ReferenceOverlay");
public static readonly ImageSource ExportedType = GetIcon("ShowPublicOnly", "ExportOverlay");
public static ImageSource Load(object part, string icon)
{
if (icon.EndsWith(".png", StringComparison.OrdinalIgnoreCase))
@ -202,6 +211,45 @@ namespace ICSharpCode.ILSpy @@ -202,6 +211,45 @@ namespace ICSharpCode.ILSpy
return memberIconCache.GetIcon(icon, overlay, isStatic);
}
private static ImageSource GetIcon(string baseImage, string overlay = null, bool isStatic = false)
{
ImageSource baseImageSource = Load(baseImage);
ImageSource overlayImageSource = overlay != null ? Load(overlay) : null;
return CreateOverlayImage(baseImageSource, overlayImageSource, isStatic);
}
private static ImageSource CreateOverlayImage(ImageSource baseImage, ImageSource overlay, bool isStatic)
{
var group = new DrawingGroup();
Drawing baseDrawing = new ImageDrawing(baseImage, iconRect);
if (overlay != null)
{
var nestedGroup = new DrawingGroup { Transform = new ScaleTransform(0.8, 0.8) };
nestedGroup.Children.Add(baseDrawing);
group.Children.Add(nestedGroup);
group.Children.Add(new ImageDrawing(overlay, iconRect));
}
else
{
group.Children.Add(baseDrawing);
}
if (isStatic)
{
group.Children.Add(new ImageDrawing(Images.OverlayStatic, iconRect));
}
var image = new DrawingImage(group);
if (image.CanFreeze)
{
image.Freeze();
}
return image;
}
#region icon caches & overlay management
private class TypeIconCache : IconCache<TypeIcon>
@ -380,39 +428,6 @@ namespace ICSharpCode.ILSpy @@ -380,39 +428,6 @@ namespace ICSharpCode.ILSpy
}
return overlayImage;
}
private static readonly Rect iconRect = new Rect(0, 0, 16, 16);
private static ImageSource CreateOverlayImage(ImageSource baseImage, ImageSource overlay, bool isStatic)
{
var group = new DrawingGroup();
Drawing baseDrawing = new ImageDrawing(baseImage, iconRect);
if (overlay != null)
{
var nestedGroup = new DrawingGroup { Transform = new ScaleTransform(0.8, 0.8) };
nestedGroup.Children.Add(baseDrawing);
group.Children.Add(nestedGroup);
group.Children.Add(new ImageDrawing(overlay, iconRect));
}
else
{
group.Children.Add(baseDrawing);
}
if (isStatic)
{
group.Children.Add(new ImageDrawing(Images.OverlayStatic, iconRect));
}
var image = new DrawingImage(group);
if (image.CanFreeze)
{
image.Freeze();
}
return image;
}
}
#endregion

4
ILSpy/Images/README.md

@ -18,6 +18,7 @@ Icons used in ILSpy: @@ -18,6 +18,7 @@ Icons used in ILSpy:
| Enum | x | x | VS 2017 Icon Pack (Enumerator) | |
| EnumValue | x | x | VS 2017 Icon Pack (EnumItem) | |
| Event | x | x | VS 2017 Icon Pack (Event) | |
| ExportOverlay | x | x | slightly modified VS 2017 Icon Pack (Export) | |
| ExtensionMethod | x | x | VS 2017 Icon Pack (ExtensionMethod) | |
| Field | x | x | VS 2017 Icon Pack (Field) | |
| FieldReadOnly | x | x | VS 2017 Icon Pack (Field) with different color | |
@ -53,12 +54,13 @@ Icons used in ILSpy: @@ -53,12 +54,13 @@ Icons used in ILSpy:
| ProgramDebugDatabase | x | x | VS 2017 Icon Pack (ProgramDebugDatabase) | |
| Property | x | x | VS 2017 Icon Pack (Property) | |
| ReferenceFolder | x | x | combined VS 2017 Icon Pack (Reference) two times | |
| ReferenceOverlay | x | x | extracted arrow from VS 2017 Icon Pack (TypeShortcut) | |
| Refresh | x | x | VS 2017 Icon Pack (Refresh) | |
| Resource | x | x | VS 2017 Icon Pack (Document) | |
| ResourceImage | x | x | VS 2017 Icon Pack (Image) | |
| ResourceResourcesFile | x | x | VS 2017 Icon Pack (LocalResources) | |
| ResourceXml | x | x | VS 2017 Icon Pack (XMLFile) | |
| ResourceXsd | x | x | combined VS 2017 Icon Pack (XMLSchema) with the "file symbol in ResourceXslt | |
| ResourceXsd | x | x | combined VS 2017 Icon Pack (XMLSchema) with the file symbol in ResourceXslt | |
| ResourceXsl | x | x | VS 2017 Icon Pack (XMLTransformation) | |
| ResourceXslt | x | x | VS 2017 Icon Pack (XSLTTemplate) | |
| Save | x | x | VS 2017 Icon Pack (Save) | |

55
ILSpy/Images/ReferenceOverlay.svg

@ -0,0 +1,55 @@ @@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 16 16"
version="1.1"
id="svg4"
sodipodi:docname="TypeReference.svg"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs4" />
<sodipodi:namedview
id="namedview4"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="51.3125"
inkscape:cx="3.6930572"
inkscape:cy="9.3057247"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="2552"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<style
id="style1">.st0{opacity:0}.st0,.st1{fill:#f6f6f6}.st2{fill:#424242}.st3{fill:#f0eff1}</style>
<g
id="outline"
style="display:inline">
<path
class="st0"
d="M 0,0 H 16 V 16 H 0 Z"
id="path1" />
<path
class="st1"
d="m 9,9 v 7 h 7 V 9 Z"
id="path2"
sodipodi:nodetypes="ccccc" />
</g>
<path
class="st2"
d="M10 10v5h5v-5h-5zm4 3l-1 1v-1.5L11.5 14l-.5-.5 1.5-1.5H11l1-1h2v2z"
id="not_x5F_bg" />
<path
class="st3"
d="M14 11v2l-1 1v-1.5L11.5 14l-.5-.5 1.5-1.5H11l1-1z"
id="not_x5F_fg" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

12
ILSpy/Images/ReferenceOverlay.xaml

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
<DrawingGroup xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ClipGeometry="M0,0 V16 H16 V0 H0 Z">
<DrawingGroup Opacity="1">
<GeometryDrawing Geometry="F1 M16,16z M0,0z M0,0L16,0 16,16 0,16z">
<GeometryDrawing.Brush>
<SolidColorBrush Color="#FFF6F6F6" Opacity="0" />
</GeometryDrawing.Brush>
</GeometryDrawing>
<GeometryDrawing Brush="#FFF6F6F6" Geometry="F1 M16,16z M0,0z M9,9L9,16 16,16 16,9z" />
</DrawingGroup>
<GeometryDrawing Brush="#FF424242" Geometry="F1 M16,16z M0,0z M10,10L10,15 15,15 15,10 10,10z M14,13L13,14 13,12.5 11.5,14 11,13.5 12.5,12 11,12 12,11 14,11 14,13z" />
<GeometryDrawing Brush="#FFF0EFF1" Geometry="F1 M16,16z M0,0z M14,11L14,13 13,14 13,12.5 11.5,14 11,13.5 12.5,12 11,12 12,11z" />
</DrawingGroup>

2
ILSpy/TreeNodes/AssemblyReferenceReferencedTypesTreeNode.cs

@ -41,7 +41,7 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -41,7 +41,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
}
public override object Text => $"Referenced Types ({r.TypeReferences.Length + r.ExportedTypes.Length})";
public override object Icon => Images.Class;
public override object Icon => Images.MetadataTable;
protected override void LoadChildren()
{

2
ILSpy/TreeNodes/ExportedTypeTreeNode.cs

@ -45,7 +45,7 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -45,7 +45,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override object Text
=> Language.TypeToString(resolvedType, includeNamespace: true) + GetSuffixString(r.Handle);
public override object Icon => Images.Library;
public override object Icon => Images.ExportedType;
protected override void LoadChildren()
{

6
ILSpy/TreeNodes/MemberReferenceTreeNode.cs

@ -50,9 +50,9 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -50,9 +50,9 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override object Text => Signature + GetSuffixString(r.Handle);
public override object Icon => r.MemberReferenceKind switch {
MemberReferenceKind.Method => Images.Method,
MemberReferenceKind.Field => Images.Field,
_ => Images.Class,
MemberReferenceKind.Method => Images.MethodReference,
MemberReferenceKind.Field => Images.FieldReference,
_ => throw new NotSupportedException(),
};
public string Signature => resolvedMember is IMethod m ? Language.MethodToString(m, false, false, false) : Language.FieldToString((IField)resolvedMember, false, false, false);

2
ILSpy/TreeNodes/TypeReferenceTreeNode.cs

@ -45,7 +45,7 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -45,7 +45,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
public override object Text
=> Language.TypeToString(resolvedType, includeNamespace: false) + GetSuffixString(r.Handle);
public override object Icon => Images.Class;
public override object Icon => Images.TypeReference;
protected override void LoadChildren()
{

Loading…
Cancel
Save