public override void Update() { base.Update(); mapping = new SymmetricRangeMap(new Range<double>(Time - Width, Time), Mappers.Linear); }
public override void Update() { base.Update(); double interval = Width * ShiftLength; double intervals = Time / interval; int wholeIntervals = (int)intervals; double fractionalIntervals = intervals - wholeIntervals; double startTime = interval * (wholeIntervals + 1) - Width; double startPosition = 0; double endTime = Time; double endPosition = (1 - ShiftLength) + ShiftLength * fractionalIntervals; mapping = new SymmetricRangeMap(new Range<double>(startTime, startTime + Width), Mappers.Linear); graphMappings = new SymmetricRangeMap(new Range<double>(startTime, endTime), new Range<double>(startPosition, endPosition), Mappers.Linear); }
private void zoomSelector_Select(Rectangle selection) { Rectangle intersection = Rectangle.Intersect(diagram.Layouter.Area, selection); if (intersection.Width > 5 && intersection.Height > 5) { Vector2 leftTop = diagram.Layouter.ReverseMap(new Vector2(intersection.Left, intersection.Top)); Vector2 rightBottom = diagram.Layouter.ReverseMap(new Vector2(intersection.Right, intersection.Bottom)); Range<double> timeRange = new Range<double>(diagram.TimeManager.Mapping.Reverse.Map(leftTop.X), diagram.TimeManager.Mapping.Reverse.Map(rightBottom.X)); Range<double> valueRange = new Range<double>(diagram.ValueManager.Mapping.Reverse.Map(rightBottom.Y), diagram.ValueManager.Mapping.Reverse.Map(leftTop.Y)); SymmetricRangeMap timeMapping = new SymmetricRangeMap(new Range<double>(diagram.TimeManager.Time - diagram.TimeManager.Width, diagram.TimeManager.Time), timeRange, Mappers.Linear); SymmetricRangeMap valueMapping = new SymmetricRangeMap(diagram.ValueManager.Range, valueRange, Mappers.Linear); timeRange = timeMapping.Forward.Map(timeMapping.Source); valueRange = valueMapping.Forward.Map(valueMapping.Source); diagram.TimeManager.Time = timeRange.End; diagram.TimeManager.Width = timeRange.End - timeRange.Start; diagram.TimeManager.IsUpdated = false; if (!(diagram.ValueManager is FixedValueManager)) diagram.ValueManager = new FixedValueManager(); ((FixedValueManager)diagram.ValueManager).FixedRange = valueRange; settings.Diagram.Initialize(); } }
public DataSegment(SymmetricRangeMap timeMapping, Entry[] entries) { this.timeMapping = timeMapping; this.entries = entries; }
public override void Update() { base.Update(); double intervals = Time / Width; int wholeIntervals = (int)intervals; double fractionalIntervals = intervals - wholeIntervals; double startTime = Time - (1 - GapLength) * Width; double startPosition = (fractionalIntervals + GapLength) % 1; double endTime = Time; double endPosition = startPosition + (1 - GapLength); mapping = new SymmetricRangeMap(new Range<double>((wholeIntervals + 0) * Width, (wholeIntervals + 1) * Width), Mappers.Linear); if (startTime >= wholeIntervals * Width) graphMappings = new SymmetricRangeMap[] { new SymmetricRangeMap(new Range<double>(startTime, endTime), new Range<double>(startPosition,endPosition), Mappers.Linear) }; else graphMappings = new SymmetricRangeMap[] { new SymmetricRangeMap(new Range<double>(startTime, wholeIntervals * Width), new Range<double>(startPosition, 1), Mappers.Linear), new SymmetricRangeMap(new Range<double>(wholeIntervals * Width, endTime), new Range<double>(0, endPosition - 1), Mappers.Linear) }; }