aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/SideChains/RealTimeGraphEx/Controllers/GraphControllerBase.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/SideChains/RealTimeGraphEx/Controllers/GraphControllerBase.cs')
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphEx/Controllers/GraphControllerBase.cs62
1 files changed, 62 insertions, 0 deletions
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphEx/Controllers/GraphControllerBase.cs b/Software/Visual_Studio/SideChains/RealTimeGraphEx/Controllers/GraphControllerBase.cs
new file mode 100644
index 000000000..c045ca03a
--- /dev/null
+++ b/Software/Visual_Studio/SideChains/RealTimeGraphEx/Controllers/GraphControllerBase.cs
@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace RealTimeGraphEx.Controllers
+{
+ public abstract class GraphControllerBase : DependencyObject
+ {
+ protected Action clearMethod;
+ protected Action startThreadMethod;
+ protected Action<bool> pausedMethod;
+ protected Action<bool> changeRenderModeMethod;
+ protected Action pushMarkerMethod;
+
+ public bool IsPaused
+ {
+ get { return (bool)GetValue(IsPausedProperty); }
+ set { SetValue(IsPausedProperty, value); }
+ }
+ public static readonly DependencyProperty IsPausedProperty =
+ DependencyProperty.Register("IsPaused", typeof(bool), typeof(GraphControllerBase), new PropertyMetadata(false, new PropertyChangedCallback(PausedChanged)));
+
+ private static void PausedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
+ {
+ var control = d as GraphControllerBase;
+ if (control.pausedMethod != null)
+ {
+ control.pausedMethod(control.IsPaused);
+ }
+ }
+
+
+ internal void RegisterMethods(Action clear, Action startThread, Action<bool> paused, Action<bool> renderMode, Action pushMarker)
+ {
+ changeRenderModeMethod = renderMode;
+ pausedMethod = paused;
+ clearMethod = clear;
+ startThreadMethod = startThread;
+ pushMarkerMethod = pushMarker;
+ }
+
+ public abstract void Clear();
+
+ public virtual void ChangeRenderMode(bool enabled)
+ {
+ changeRenderModeMethod(enabled);
+ }
+
+ internal abstract void ClearPoints();
+
+ public void PushMarkerLine()
+ {
+ if (pushMarkerMethod != null)
+ {
+ pushMarkerMethod();
+ }
+ }
+ }
+}