コード例 #1
0
ファイル: FastLineSeries.cs プロジェクト: Mohsens22/OpenPasat
        /// <summary>
        /// Creates the segments of FastLineSeries.
        /// </summary>
        public override void CreateSegments()
        {
            if (GroupedSeriesYValues != null && GroupedSeriesYValues[0].Contains(double.NaN))
            {
                List <List <double> > yValList;
                List <List <double> > xValList;
                this.CreateEmptyPointSegments(GroupedSeriesYValues[0], out yValList, out xValList);
            }
            else if (YValues.Contains(double.NaN))
            {
                List <List <double> > yValList;
                List <List <double> > xValList;
                this.CreateEmptyPointSegments(YValues, out yValList, out xValList);
            }
            else
            {
                bool isGrouping = this.ActualXAxis is CategoryAxis ? (this.ActualXAxis as CategoryAxis).IsIndexed : true;
                if (!isGrouping)
                {
                    xValues = GroupedXValuesIndexes;
                }
                else
                {
                    xValues = (ActualXValues is IList <double> && !IsIndexed) ? ActualXValues as IList <double> : GetXValues();
                }
                if (!isGrouping)
                {
                    Segments.Clear();
                    Adornments.Clear();

                    if (Segment == null || Segments.Count == 0)
                    {
                        FastLineSegment segment = new FastLineSegment(xValues, GroupedSeriesYValues[0], this);
                        Segment = segment;
                        Segments.Add(segment);
                    }
                }
                else
                {
                    ClearUnUsedAdornments(this.DataCount);

                    if (Segment == null || Segments.Count == 0)
                    {
                        FastLineSegment segment = new FastLineSegment(xValues, YValues, this);
                        Segment = segment;
                        Segments.Add(segment);
                    }
                    else if (ActualXValues != null)
                    {
                        Segment.SetData(xValues, YValues);
                        (Segment as FastLineSegment).SetRange();
                        Segment.Item = ActualData;
                    }
                }

                isAdornmentPending = true;
            }
        }
コード例 #2
0
ファイル: FastLineSeries.cs プロジェクト: Mohsens22/OpenPasat
        public override void CreateEmptyPointSegments(IList <double> YValues, out List <List <double> > yValList, out List <List <double> > xValList)
        {
            if (this.ActualXAxis is CategoryAxis && (!(this.ActualXAxis as CategoryAxis).IsIndexed))
            {
                xValues = GroupedXValuesIndexes;
                base.CreateEmptyPointSegments(GroupedSeriesYValues[0], out yValList, out xValList);
            }
            else
            {
                xValues = (ActualXValues is IList <double> && !IsIndexed) ? ActualXValues as IList <double> : GetXValues();
                base.CreateEmptyPointSegments(YValues, out yValList, out xValList);
            }

            int j = 0;

            // EmptyPoint calculation
            if (Segments.Count != yValList.Count)
            {
                Segments.Clear();
            }

            ClearUnUsedAdornments(this.DataCount);
            if (Segment == null || Segments.Count == 0)
            {
                for (int i = 0; i < yValList.Count && i < xValList.Count; i++)
                {
                    if (i < xValList.Count && i < yValList.Count && xValList[i].Count > 0 && yValList[i].Count > 0)
                    {
                        Segment = new FastLineSegment(xValList[i], yValList[i], this);
                        Segments.Add(Segment);
                    }
                }
            }
            else if (xValues != null)
            {
                foreach (var segment in Segments)
                {
                    if (j < xValList.Count && j < yValList.Count && xValList[j].Count > 0 && yValList[j].Count > 0)
                    {
                        segment.SetData(xValList[j], yValList[j]);
                        (segment as FastLineSegment).SetRange();
                    }

                    j++;
                }
            }

            isAdornmentPending = true;
        }
コード例 #3
0
ファイル: FastLineSeries.cs プロジェクト: Mohsens22/OpenPasat
 /// <summary>
 /// Called when DataSource property changed
 /// </summary>
 /// <param name="oldValue"></param>
 /// <param name="newValue"></param>
 protected override void OnDataSourceChanged(System.Collections.IEnumerable oldValue, System.Collections.IEnumerable newValue)
 {
     Segment = null;
     base.OnDataSourceChanged(oldValue, newValue);
 }