public override void UpdateCanvas(Canvas canvas, IValueIterator iter) { markers.Clear(); if (iter.DataRepresentation.IsAnalog == true) { RenderAnalog(canvas, iter); } else { RenderSimple(canvas, iter); } }
public NewSortedDictionaryScopeIterator(SignalScopeDump dump) { this.Dump = dump; this.Type = dump.Type; iterators = new List <IValueIterator>(); foreach (AbstractSignalDump d in dump.Dumps) { IValueIterator i = d.Iterator; i.Reset(); iterators.Add(i); } }
public override void UpdateCanvas(Canvas canvas, IValueIterator iter) { DataRepresentation datapres = iter.DataRepresentation; if (datapres.IsAnalog == true) { RenderAnalog(canvas, iter); } else { RenderSimpleSignal(canvas, iter, DrawValue); } }
/// <summary> /// Получение значения текущего итератора в виде строки /// </summary> /// <returns></returns> public static string GetStringValue(IValueIterator iterator) { if (iterator.CurrentValue == null) { return("<NULL>"); } string result = string.Empty; AbstractValue val = iterator.CurrentValue.LastValue; result = DataContainer.ValueDump.DataConvertorUtils.ToString(val, iterator.DataRepresentation); return(result); }
public Map(IValueIterable <T> collection) : this(default_capacity) { if (collection == null) { return; } for (IValueIterator <T> x = collection.Begin(); x.IsAlive; x.Add()) { if (x.Value != null) { Add(x.Value.GetHashCode(), x.Value); } } }
public override void UpdateCanvas(Canvas canvas, IValueIterator iter) { RenderSimpleSignal(canvas, iter, DrawValue); }
public abstract void RenderAnalog(Canvas canvas, IValueIterator iter);
private void RenderSimple(Canvas canvas, IValueIterator iter) { RenderSimpleBus(canvas, iter, DrawValue); }
/// <summary> /// Обновление изображения /// </summary> /// <param name="canvas"></param> /// <param name="iter"></param> public abstract void UpdateCanvas(Canvas canvas, IValueIterator iter);
public override void UpdateCanvas(System.Windows.Controls.Canvas canvas, IValueIterator iter) { RenderSimpleBus(canvas, iter, DrawValue); }
private int GetValueFromItarotor(IValueIterator iter, DataRepresentation DataPres) { return((iter.CurrentValue.LastValue as IntegerValue).Value); }
public void RenderAnalog(Canvas canvas, IValueIterator iter) { DataRepresentation datapres = iter.DataRepresentation; RenderAnalogSimpleSignal(canvas, iter, datapres, GetValueFromTime, GetValueFromItarotor); }
public static IEnumerator <T> ToEnumerator <T>(this IValueIterator <T> inst) => new IteratorToEnumeratorWrapper <T>(inst).GetEnumerator();
public override void RenderAnalog(Canvas canvas, IValueIterator iter) { VectorDataRepresentation datapres = iter.DataRepresentation as VectorDataRepresentation; RenderAnalogBus(canvas, iter, datapres, GetValueFromTime, GetValueFromItarotor); }
/// <summary> /// Отображение шины в обычном виде /// </summary> /// <param name="canvas"></param> /// <param name="iter"></param> /// <param name="DrawValue"></param> protected void RenderSimpleBus(Canvas canvas, IValueIterator iter, DrawValueDelegate DrawValue) { canvas.Children.Clear(); UInt64 MinimumVisibleChange = scaleManager.MinimumVisibleChange; //Рисование начала диаграммы UInt64 x1 = 0, x2 = 0; string value = string.Empty; x1 = scaleManager.VisibleStartTime; iter.SetCurrentIndexByKey(scaleManager.VisibleStartTime); x2 = iter.LastEvent; if (x2 > scaleManager.VisibleEndTime) { x2 = scaleManager.VisibleEndTime; } if (x2 < scaleManager.VisibleStartTime) { x2 = scaleManager.VisibleStartTime; } Markers.Add(new TimeMarker(x1, scaleManager.GetOffset(x1))); while (true) { //Началась "серая" область if ((x2 - x1) <= MinimumVisibleChange) { UInt64 whitespace = x1; while (true) { x1 = iter.LastEvent; if (x1 > scaleManager.VisibleEndTime) { x1 = scaleManager.VisibleEndTime; } if (x1 < scaleManager.VisibleStartTime) { x1 = scaleManager.VisibleStartTime; } iter.MoveNext(); x2 = iter.LastEvent; if (x2 > scaleManager.VisibleEndTime) { x2 = scaleManager.VisibleEndTime; } if (x2 < scaleManager.VisibleStartTime) { x2 = scaleManager.VisibleStartTime; } //закончилась "серая" область if ((x2 - x1) >= scaleManager.MinimumVisibleChange) { AddWhitespace(canvas, whitespace, x1, scaleManager); value = AbstractSignalDump.GetStringValue(iter); Markers.Add(new TimeMarker(x1, scaleManager.GetOffset(x1))); DrawValue(canvas, x1, x2, scaleManager, value); break; } if ((iter.LastEvent >= scaleManager.VisibleEndTime) || (iter.IsEndOfIteration == true)) { Markers.Add(new TimeMarker(whitespace, scaleManager.GetOffset(whitespace))); AddWhitespace(canvas, whitespace, iter.LastEvent, scaleManager); break; } iter.SetCurrentIndexByKey(x1 + MinimumVisibleChange); } } else { value = AbstractSignalDump.GetStringValue(iter); Markers.Add(new TimeMarker(x1, scaleManager.GetOffset(x1))); DrawValue(canvas, x1, x2, scaleManager, value); iter.MoveNext(); } x1 = x2; x2 = iter.LastEvent; if ((iter.LastEvent >= scaleManager.VisibleEndTime) || (iter.IsEndOfIteration == true)) { value = AbstractSignalDump.GetStringValue(iter); Markers.Add(new TimeMarker(x1, scaleManager.GetOffset(x1))); DrawValue(canvas, x1, scaleManager.VisibleEndTime, scaleManager, value); break; } if (x2 > scaleManager.VisibleEndTime) { x2 = scaleManager.VisibleEndTime; } if (x2 < scaleManager.VisibleStartTime) { x2 = scaleManager.VisibleStartTime; } } }
private Double GetValueFromItarotor(IValueIterator iter, DataRepresentation DataPres) { return((double)(DataContainer.ValueDump.DataConvertorUtils.ToBigInteger((iter.CurrentValue.LastValue as STD_ULOGIC_VECTOR_VALUE), DataPres as VectorDataRepresentation).GetValueOrDefault(0))); }
/// <summary> /// Отображение сигнала в аналоговом виде /// </summary> /// <param name="canvas"></param> /// <param name="iter"></param> /// <param name="DataPres"></param> /// <param name="GetValue"></param> protected void RenderAnalogSimpleSignal <T>(Canvas canvas, IValueIterator iter, DataRepresentation DataPres, GetValueDelegateFromTime <T> GetValueFromTime, GetValueDelegateFromIterator <T> GetValueFromIterator) where T : IConvertible { canvas.Children.Clear(); Polyline polyLine = new Polyline(); polyLine.Stroke = Brushes.Black; polyLine.StrokeThickness = 1; if (scaleManager.VisibleTimeDiapasone < (scaleManager.Width * 5.0)) { iter.SetCurrentIndexByKey(scaleManager.VisibleStartTime); double min = GetValueFromTime(ScaleManager.VisibleStartTime, DataPres).ToDouble(CultureInfo.InvariantCulture);; double max = min; double value = 0; double height = canvas.ActualHeight; iter.SetCurrentIndexByKey(scaleManager.VisibleStartTime); value = GetValueFromTime(ScaleManager.VisibleStartTime, DataPres).ToDouble(CultureInfo.InvariantCulture);; polyLine.Points.Add(new Point(0, (double)(value))); //Рисование начала диаграммы UInt64 x1 = 0, x2 = 0; x1 = scaleManager.VisibleStartTime; UInt64 MinimumVisibleChange = scaleManager.MinimumVisibleChange * 2; iter.SetCurrentIndexByKey(scaleManager.VisibleStartTime); x2 = iter.LastEvent; if (x2 > scaleManager.VisibleEndTime) { x2 = scaleManager.VisibleEndTime; } if (x2 < scaleManager.VisibleStartTime) { x2 = scaleManager.VisibleStartTime; } while (true) { value = GetValueFromIterator(iter, DataPres).ToDouble(CultureInfo.InvariantCulture);; if (min > value) { min = value; } if (max < value) { max = value; } polyLine.Points.Add(new Point(scaleManager.GetOffset(x1), (double)(value))); polyLine.Points.Add(new Point(scaleManager.GetOffset(x2), (double)(value))); iter.MoveNext(); x1 = x2; x2 = iter.LastEvent; if ((iter.LastEvent >= scaleManager.VisibleEndTime) || (iter.IsEndOfIteration == true)) { value = GetValueFromTime(ScaleManager.VisibleEndTime, DataPres).ToDouble(CultureInfo.InvariantCulture);; if (min > value) { min = value; } if (max < value) { max = value; } polyLine.Points.Add(new Point(scaleManager.GetOffset(x1), (double)(value))); polyLine.Points.Add(new Point(scaleManager.GetOffset(x2), (double)(value))); break; } if (x2 > scaleManager.VisibleEndTime) { x2 = scaleManager.VisibleEndTime; } if (x2 < scaleManager.VisibleStartTime) { x2 = scaleManager.VisibleStartTime; } } double DeltaY = (max != min) ? (height / (double)(max - min)) : 1; for (int i = 0; i < polyLine.Points.Count; i++) { Point point = polyLine.Points[i]; point.Y = ((double)max - point.Y) * DeltaY; polyLine.Points[i] = point; } } else { iter.SetCurrentIndexByKey(scaleManager.VisibleStartTime); double min = GetValueFromTime(ScaleManager.VisibleStartTime, DataPres).ToDouble(CultureInfo.InvariantCulture);; double max = min; double value = 0; double height = canvas.ActualHeight; for (double x = 0; x < scaleManager.Width; x++) { UInt64 time = scaleManager.GetTime(x); iter.SetCurrentIndexByKey(time); value = GetValueFromIterator(iter, DataPres).ToDouble(CultureInfo.InvariantCulture);; if (min > value) { min = value; } if (max < value) { max = value; } polyLine.Points.Add(new Point(x, (double)(value))); } double DeltaY = (max != min) ? (height / (double)(max - min)) : 1; for (int i = 0; i < polyLine.Points.Count; i++) { Point point = polyLine.Points[i]; point.Y = ((double)max - point.Y) * DeltaY; polyLine.Points[i] = point; } } canvas.Children.Add(polyLine); }
public IteratorToEnumeratorWrapper(IValueIterator <T> inst) => this.inst = inst;
private Double GetValueFromItarotor(IValueIterator iter, DataRepresentation DataPres) { return((iter.CurrentValue.LastValue as RealValue).Value); }