aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/SideChains/RealTimeGraphEx/ExtensionMethods/RenderTargetExtensions.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/SideChains/RealTimeGraphEx/ExtensionMethods/RenderTargetExtensions.cs')
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphEx/ExtensionMethods/RenderTargetExtensions.cs83
1 files changed, 83 insertions, 0 deletions
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphEx/ExtensionMethods/RenderTargetExtensions.cs b/Software/Visual_Studio/SideChains/RealTimeGraphEx/ExtensionMethods/RenderTargetExtensions.cs
new file mode 100644
index 000000000..fcedc6083
--- /dev/null
+++ b/Software/Visual_Studio/SideChains/RealTimeGraphEx/ExtensionMethods/RenderTargetExtensions.cs
@@ -0,0 +1,83 @@
+using SharpDX;
+using SharpDX.Direct2D1;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace RealTimeGraphEx.ExtensionMethods
+{
+ public static class RenderTargetExtensions
+ {
+ public static void DrawPolygon(this RenderTarget target, SharpDX.Direct2D1.Factory factory, Brush stroke, double strokeWidth, Vector2[] vectors)
+ {
+ PathGeometry geo = new PathGeometry(factory);
+ GeometrySink sink1;
+ sink1 = geo.Open();
+ sink1.BeginFigure(vectors[0], new FigureBegin());
+ sink1.AddLines(vectors);
+ sink1.EndFigure(new FigureEnd());
+ sink1.Close();
+
+ target.DrawGeometry(geo, stroke, (float)strokeWidth);
+
+ vectors = null;
+ geo.Dispose();
+ sink1.Dispose();
+ stroke.Dispose();
+ }
+
+ public static void DrawMultiPolygon(this RenderTarget target, SharpDX.Direct2D1.Factory factory, List<Brush> strokes, double strokeWidth, List<Vector2[]> vectorsCollection)
+ {
+ List<PathGeometry> geos = new List<PathGeometry>();
+ List<GeometrySink> sinks = new List<GeometrySink>();
+
+ foreach (var vectors in vectorsCollection)
+ {
+ var geo = new PathGeometry(factory);
+ GeometrySink sink1;
+ sink1 = geo.Open();
+ sink1.BeginFigure(vectors[0], new FigureBegin());
+ sink1.AddLines(vectors);
+ sink1.EndFigure(new FigureEnd());
+ sink1.Close();
+
+ geos.Add(geo);
+ sinks.Add(sink1);
+ }
+
+ for (int i = 0; i < geos.Count; i++)
+ {
+ target.DrawGeometry(geos[i], strokes[i], (float)strokeWidth);
+ }
+
+ vectorsCollection = null;
+
+ for (int i = 0; i < strokes.Count; i++)
+ {
+ geos[i].Dispose();
+ sinks[i].Dispose();
+ strokes[i].Dispose();
+ }
+ }
+
+ public static void FillPolygon(this RenderTarget target, SharpDX.Direct2D1.Factory factory, Brush fill, Vector2[] vectors)
+ {
+ PathGeometry geo = new PathGeometry(factory);
+ GeometrySink sink1;
+ sink1 = geo.Open();
+ sink1.BeginFigure(vectors[0], new FigureBegin());
+ sink1.AddLines(vectors);
+ sink1.EndFigure(new FigureEnd());
+ sink1.Close();
+
+ target.FillGeometry(geo, fill);
+
+ vectors = null;
+ geo.Dispose();
+ sink1.Dispose();
+ fill.Dispose();
+ }
+ }
+}