Move Windows-specific projects into separate solution.

This commit is contained in:
wo80
2022-03-05 01:01:39 +01:00
parent 11e42c98f4
commit 23c2682c6e
23 changed files with 161 additions and 158 deletions
+51
View File
@@ -0,0 +1,51 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.32126.317
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MeshExplorer", "MeshExplorer\MeshExplorer.csproj", "{336AAF8A-5316-4303-9E73-5E38BD0B28AF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Triangle.Rendering", "Triangle.Rendering\Triangle.Rendering.csproj", "{41022E0E-BD0F-439E-BC3A-AABB1B43471B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Triangle.Rendering.GDI", "Triangle.Rendering.GDI\Triangle.Rendering.GDI.csproj", "{D535E102-92B4-4F92-B284-A7170AE00CD6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Debug|x64.ActiveCfg = Debug|x64
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Debug|x64.Build.0 = Debug|x64
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Release|Any CPU.Build.0 = Release|Any CPU
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Release|x64.ActiveCfg = Release|x64
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Release|x64.Build.0 = Release|x64
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Debug|x64.ActiveCfg = Debug|x64
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Debug|x64.Build.0 = Debug|x64
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Release|Any CPU.Build.0 = Release|Any CPU
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Release|x64.ActiveCfg = Release|x64
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Release|x64.Build.0 = Release|x64
{D535E102-92B4-4F92-B284-A7170AE00CD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D535E102-92B4-4F92-B284-A7170AE00CD6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D535E102-92B4-4F92-B284-A7170AE00CD6}.Debug|x64.ActiveCfg = Debug|x64
{D535E102-92B4-4F92-B284-A7170AE00CD6}.Debug|x64.Build.0 = Debug|x64
{D535E102-92B4-4F92-B284-A7170AE00CD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D535E102-92B4-4F92-B284-A7170AE00CD6}.Release|Any CPU.Build.0 = Release|Any CPU
{D535E102-92B4-4F92-B284-A7170AE00CD6}.Release|x64.ActiveCfg = Release|x64
{D535E102-92B4-4F92-B284-A7170AE00CD6}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {90F4F9E9-43D6-4A3D-91D5-B2DF113E13AE}
EndGlobalSection
EndGlobal
+1 -5
View File
@@ -70,11 +70,7 @@ namespace MeshExplorer.Controls
e.Graphics.FillRectangle(background, e.Bounds);
}
using (SolidBrush pen = new SolidBrush(Color.White))
{
e.Graphics.DrawString(content, this.Font, pen,
new PointF(10, e.Bounds.Y + 3), StringFormat.GenericDefault);
}
TextRenderer.DrawText(e.Graphics, content, Font, new Point(10, e.Bounds.Y + 3), Color.White, TextFormatFlags.EndEllipsis);
}
}
}
+1 -1
View File
@@ -62,7 +62,7 @@ namespace MeshExplorer
if (control != null)
{
InitializeRenderControl((Control)control);
renderManager.Initialize(control);
renderManager.Initialize(control, new TriangleNet.Rendering.GDI.LayerRenderer());
}
else
{
+2 -1
View File
@@ -8,7 +8,8 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Triangle.Rendering\Triangle.Rendering.csproj" />
<ProjectReference Include="..\Triangle\Triangle.csproj" />
<ProjectReference Include="..\Triangle.Rendering\Triangle.Rendering.csproj" />
<ProjectReference Include="..\Triangle.Rendering.GDI\Triangle.Rendering.GDI.csproj" />
</ItemGroup>
</Project>
@@ -4,7 +4,6 @@
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>TriangleNet</RootNamespace>
<OutDir>$(SolutionDir)bin\$(Configuration)</OutDir>
</PropertyGroup>
<ItemGroup>
@@ -12,12 +11,12 @@
<Compile Include="..\Triangle.Rendering\Text\SvgImage.cs" Link="Rendering\SvgImage.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Triangle\Triangle.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Rendering\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Triangle\Triangle.csproj" />
</ItemGroup>
</Project>
+28
View File
@@ -0,0 +1,28 @@
using System.Collections.Generic;
using System.Drawing;
namespace TriangleNet.Rendering.GDI
{
internal class Helper
{
public static void Dispose(Dictionary<int, SolidBrush> brushes)
{
foreach (var brush in brushes.Values)
{
brush.Dispose();
}
}
public static Dictionary<int, SolidBrush> GetBrushDictionary(Dictionary<int, Color> ColorDictionary)
{
var brushes = new Dictionary<int, SolidBrush>();
foreach (var item in ColorDictionary)
{
brushes.Add(item.Key, new SolidBrush(item.Value));
}
return brushes;
}
}
}
@@ -275,11 +275,11 @@ namespace TriangleNet.Rendering.GDI
var colors = new ColorManager();
colors.Background = Color.White;
colors.Point = new SolidBrush(Color.FromArgb(60, 80, 120));
colors.SteinerPoint = new SolidBrush(Color.DarkGreen);
colors.Line = new Pen(Color.FromArgb(200, 200, 200));
colors.Segment = new Pen(Color.SteelBlue);
colors.VoronoiLine = new Pen(Color.FromArgb(160, 170, 180));
colors.Point = Color.FromArgb(60, 80, 120);
colors.SteinerPoint = Color.DarkGreen;
colors.Line = Color.FromArgb(200, 200, 200);
colors.Segment = Color.SteelBlue;
colors.VoronoiLine = Color.FromArgb(160, 170, 180);
return colors;
}
@@ -88,13 +88,17 @@ namespace TriangleNet.Rendering.GDI
}
else
{
meshRenderer.RenderEdges(layer.Points.Data, layer.Indices.Data, Context.ColorManager.Line);
using var pen = new Pen(Context.ColorManager.Line);
meshRenderer.RenderEdges(layer.Points.Data, layer.Indices.Data, pen);
}
}
private void RenderPolygon(IRenderLayer layer)
{
meshRenderer.RenderSegments(layer.Points.Data, layer.Indices.Data, Context.ColorManager.Segment);
using var pen = new Pen(Context.ColorManager.Segment);
meshRenderer.RenderSegments(layer.Points.Data, layer.Indices.Data, pen);
}
private void RenderPoints(IRenderLayer layer)
@@ -111,7 +115,9 @@ namespace TriangleNet.Rendering.GDI
}
else
{
meshRenderer.RenderEdges(layer.Points.Data, layer.Indices.Data, Context.ColorManager.VoronoiLine);
using var pen = new Pen(Context.ColorManager.VoronoiLine);
meshRenderer.RenderEdges(layer.Points.Data, layer.Indices.Data, pen);
}
}
}
@@ -7,7 +7,6 @@
namespace TriangleNet.Rendering.GDI
{
using System.Drawing;
using TriangleNet.Rendering.GDI.Native;
/// <summary>
/// Renders a mesh.
@@ -30,13 +29,16 @@ namespace TriangleNet.Rendering.GDI
int n = points.Length / size;
int m = limit > 0 ? limit : n;
using var Point = new SolidBrush(Context.ColorManager.Point);
using var SteinerPoint = new SolidBrush(Context.ColorManager.SteinerPoint);
// Draw unchanged points
RenderPoints(points, size, 0, m, Context.ColorManager.Point);
RenderPoints(points, size, 0, m, Point);
// Draw new (Steiner) points
if (limit > 0)
{
RenderPoints(points, size, m, n, Context.ColorManager.SteinerPoint);
RenderPoints(points, size, m, n, SteinerPoint);
}
}
@@ -86,9 +88,9 @@ namespace TriangleNet.Rendering.GDI
bool filled = partition != null;
var brushes = filled ? Context.ColorManager.GetBrushDictionary() : null;
var brushes = filled ? Helper.GetBrushDictionary(Context.ColorManager.ColorDictionary) : null;
// TODO: remove hardcoded color
// TODO: remove hard-coded color
var pen = new Pen(Color.FromArgb(20, 20, 20));
// Draw triangles
@@ -133,7 +135,7 @@ namespace TriangleNet.Rendering.GDI
if (filled)
{
Context.ColorManager.Dispose(brushes);
Helper.Dispose(brushes);
}
}
@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<RootNamespace>TriangleNet.Rendering.GDI</RootNamespace>
<AssemblyName>Triangle.Rendering.GDI</AssemblyName>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Triangle\Triangle.csproj" />
<ProjectReference Include="..\Triangle.Rendering\Triangle.Rendering.csproj" />
</ItemGroup>
</Project>
+12 -83
View File
@@ -7,88 +7,37 @@ namespace TriangleNet.Rendering
public class ColorManager
{
Color background;
SolidBrush point;
SolidBrush steinerPoint;
Pen line;
Pen segment;
Pen voronoiLine;
#region Public properties
/// <summary>
/// Gets or sets the background color.
/// </summary>
public Color Background
{
get { return background; }
set { background = value; }
}
public Color Background { get; set; }
/// <summary>
/// Gets or sets the brush used for points.
/// </summary>
public SolidBrush Point
{
get { return point; }
set
{
if (point != null) point.Dispose();
point = value;
}
}
public Color Point { get; set; }
/// <summary>
/// Gets or sets the brush used for steiner points.
/// </summary>
public SolidBrush SteinerPoint
{
get { return steinerPoint; }
set
{
if (steinerPoint != null) steinerPoint.Dispose();
steinerPoint = value;
}
}
public Color SteinerPoint { get; set; }
/// <summary>
/// Gets or sets the pen used for mesh edges.
/// </summary>
public Pen Line
{
get { return line; }
set
{
if (line != null) line.Dispose();
line = value;
}
}
public Color Line { get; set; }
/// <summary>
/// Gets or sets the pen used for mesh segments.
/// </summary>
public Pen Segment
{
get { return segment; }
set
{
if (segment != null) segment.Dispose();
segment = value;
}
}
public Color Segment { get; set; }
/// <summary>
/// Gets or sets the pen used for Voronoi edges.
/// </summary>
public Pen VoronoiLine
{
get { return voronoiLine; }
set
{
if (voronoiLine != null) voronoiLine.Dispose();
voronoiLine = value;
}
}
public Color VoronoiLine { get; set; }
#endregion
@@ -98,7 +47,7 @@ namespace TriangleNet.Rendering
public Dictionary<int, Color> ColorDictionary { get; set; }
/// <summary>
/// Gets or sets a colormap used for function plotting.
/// Gets or sets a color map used for function plotting.
/// </summary>
public ColorMap ColorMap { get; set; }
@@ -110,11 +59,11 @@ namespace TriangleNet.Rendering
var colors = new ColorManager();
colors.Background = Color.FromArgb(0, 0, 0);
colors.Point = new SolidBrush(Color.Green);
colors.SteinerPoint = new SolidBrush(Color.Peru);
colors.Line = new Pen(Color.FromArgb(30, 30, 30));
colors.Segment = new Pen(Color.DarkBlue);
colors.VoronoiLine = new Pen(Color.FromArgb(40, 50, 60));
colors.Point = Color.Green;
colors.SteinerPoint = Color.Peru;
colors.Line = Color.FromArgb(30, 30, 30);
colors.Segment = Color.DarkBlue;
colors.VoronoiLine = Color.FromArgb(40, 50, 60);
return colors;
}
@@ -145,26 +94,6 @@ namespace TriangleNet.Rendering
}
}
internal void Dispose(Dictionary<int, SolidBrush> brushes)
{
foreach (var brush in brushes.Values)
{
brush.Dispose();
}
}
internal Dictionary<int, SolidBrush> GetBrushDictionary()
{
var brushes = new Dictionary<int, SolidBrush>();
foreach (var item in ColorDictionary)
{
brushes.Add(item.Key, new SolidBrush(item.Value));
}
return brushes;
}
// Change or add as many colors as you like...
private static Color[] regionColors = {
Color.Transparent,
+1 -18
View File
@@ -2,10 +2,8 @@
namespace TriangleNet.Rendering
{
using System.Collections.Generic;
using System.Windows.Forms;
using TriangleNet.Geometry;
using TriangleNet.Meshing;
using TriangleNet.Rendering.GDI;
using TriangleNet.Rendering.Util;
public class RenderManager
@@ -26,21 +24,11 @@ namespace TriangleNet.Rendering
{
}
public RenderManager(IRenderControl control)
{
Initialize(control);
}
public RenderManager(IRenderControl control, IRenderer renderer)
{
Initialize(control, renderer);
}
public void Initialize(IRenderControl control)
{
Initialize(control, new LayerRenderer());
}
public void Initialize(IRenderControl control, IRenderer renderer)
{
this.zoom = new Projection(control.ClientRectangle);
@@ -58,12 +46,7 @@ namespace TriangleNet.Rendering
public bool TryCreateControl(string assemblyName, IEnumerable<string> dependencies,
out IRenderControl control)
{
if (!ReflectionHelper.TryCreateControl(assemblyName, dependencies, out control))
{
return false;
}
return control is Control;
return ReflectionHelper.TryCreateControl(assemblyName, dependencies, out control);
}
public void Resize()
@@ -2,9 +2,7 @@
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<OutDir>$(SolutionDir)bin\$(Configuration)</OutDir>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>TriangleNet.Rendering</RootNamespace>
<AssemblyName>Triangle.Rendering</AssemblyName>
<Platforms>AnyCPU;x64</Platforms>
+15 -25
View File
@@ -5,13 +5,11 @@ VisualStudioVersion = 17.0.32126.317
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Triangle", "Triangle\Triangle.csproj", "{F7907A0A-B75F-400B-9E78-BFAD00DB4D6B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MeshExplorer", "MeshExplorer\MeshExplorer.csproj", "{336AAF8A-5316-4303-9E73-5E38BD0B28AF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Triangle.Rendering", "Triangle.Rendering\Triangle.Rendering.csproj", "{41022E0E-BD0F-439E-BC3A-AABB1B43471B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Triangle.Tests", "Triangle.Tests\Triangle.Tests.csproj", "{67CCA496-DCD1-4D43-85D5-0A19A3948774}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Triangle.Examples", "Triangle.Examples\Triangle.Examples.csproj", "{70EC2A88-E7CC-4678-9936-ED539969B003}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Triangle.Examples", "Triangle.Examples\Triangle.Examples.csproj", "{70EC2A88-E7CC-4678-9936-ED539969B003}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Triangle.Rendering", "Triangle.Rendering\Triangle.Rendering.csproj", "{20D64FA8-EC38-4507-9D99-96F855ED62C0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -29,22 +27,6 @@ Global
{F7907A0A-B75F-400B-9E78-BFAD00DB4D6B}.Release|Any CPU.Build.0 = Release|Any CPU
{F7907A0A-B75F-400B-9E78-BFAD00DB4D6B}.Release|x64.ActiveCfg = Release|x64
{F7907A0A-B75F-400B-9E78-BFAD00DB4D6B}.Release|x64.Build.0 = Release|x64
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Debug|x64.ActiveCfg = Debug|x64
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Debug|x64.Build.0 = Debug|x64
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Release|Any CPU.Build.0 = Release|Any CPU
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Release|x64.ActiveCfg = Release|x64
{336AAF8A-5316-4303-9E73-5E38BD0B28AF}.Release|x64.Build.0 = Release|x64
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Debug|x64.ActiveCfg = Debug|x64
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Debug|x64.Build.0 = Debug|x64
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Release|Any CPU.Build.0 = Release|Any CPU
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Release|x64.ActiveCfg = Release|x64
{41022E0E-BD0F-439E-BC3A-AABB1B43471B}.Release|x64.Build.0 = Release|x64
{67CCA496-DCD1-4D43-85D5-0A19A3948774}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{67CCA496-DCD1-4D43-85D5-0A19A3948774}.Debug|Any CPU.Build.0 = Debug|Any CPU
{67CCA496-DCD1-4D43-85D5-0A19A3948774}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -55,12 +37,20 @@ Global
{67CCA496-DCD1-4D43-85D5-0A19A3948774}.Release|x64.Build.0 = Release|Any CPU
{70EC2A88-E7CC-4678-9936-ED539969B003}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{70EC2A88-E7CC-4678-9936-ED539969B003}.Debug|Any CPU.Build.0 = Debug|Any CPU
{70EC2A88-E7CC-4678-9936-ED539969B003}.Debug|x64.ActiveCfg = Debug|Any CPU
{70EC2A88-E7CC-4678-9936-ED539969B003}.Debug|x64.Build.0 = Debug|Any CPU
{70EC2A88-E7CC-4678-9936-ED539969B003}.Debug|x64.ActiveCfg = Debug|x64
{70EC2A88-E7CC-4678-9936-ED539969B003}.Debug|x64.Build.0 = Debug|x64
{70EC2A88-E7CC-4678-9936-ED539969B003}.Release|Any CPU.ActiveCfg = Release|Any CPU
{70EC2A88-E7CC-4678-9936-ED539969B003}.Release|Any CPU.Build.0 = Release|Any CPU
{70EC2A88-E7CC-4678-9936-ED539969B003}.Release|x64.ActiveCfg = Release|Any CPU
{70EC2A88-E7CC-4678-9936-ED539969B003}.Release|x64.Build.0 = Release|Any CPU
{70EC2A88-E7CC-4678-9936-ED539969B003}.Release|x64.ActiveCfg = Release|x64
{70EC2A88-E7CC-4678-9936-ED539969B003}.Release|x64.Build.0 = Release|x64
{20D64FA8-EC38-4507-9D99-96F855ED62C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{20D64FA8-EC38-4507-9D99-96F855ED62C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{20D64FA8-EC38-4507-9D99-96F855ED62C0}.Debug|x64.ActiveCfg = Debug|x64
{20D64FA8-EC38-4507-9D99-96F855ED62C0}.Debug|x64.Build.0 = Debug|x64
{20D64FA8-EC38-4507-9D99-96F855ED62C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{20D64FA8-EC38-4507-9D99-96F855ED62C0}.Release|Any CPU.Build.0 = Release|Any CPU
{20D64FA8-EC38-4507-9D99-96F855ED62C0}.Release|x64.ActiveCfg = Release|x64
{20D64FA8-EC38-4507-9D99-96F855ED62C0}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
+6 -3
View File
@@ -2,14 +2,17 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<OutDir>$(SolutionDir)bin\$(Configuration)</OutDir>
<RootNamespace>TriangleNet</RootNamespace>
<AssemblyName>Triangle</AssemblyName>
<Platforms>AnyCPU;x64</Platforms>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<Authors>Christian Woltering</Authors>
<AssemblyVersion>1.0.0</AssemblyVersion>
<Version>1.0.0-beta5</Version>
</PropertyGroup>
<ItemGroup>
<InternalsVisibleTo Include="Triangle.Tests" />
</ItemGroup>
</Project>