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);
        }
Example #3
0
        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();
            }
        }
Example #4
0
 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)
                };
        }