示例#1
0
        /// <summary>
        /// Append VelocityPointCollection to the graph
        /// </summary>
        /// <param name="collection"></param>
        /// <param name="pen"></param>
        /// <param name="description"></param>

        private LineAndMarker <ElementMarkerPointsGraph> AppendLineGraph(TwoDimensionViewPointCollection collection, Pen pen, string description)
        {
            CircleElementPointMarker pointMaker = new CircleElementPointMarker();

            pointMaker.Size  = 3;
            pointMaker.Brush = Brushes.Yellow;
            pointMaker.Fill  = Brushes.Purple;

            var v = new EnumerableDataSource <TwoDimensionViewPoint>(collection);

            v.SetXMapping(x => x.TimeStamp);
            v.SetYMapping(y => y.Value);
            return(chart.AddLineGraph(v, pen, pointMaker, new PenDescription(description)));
        }
示例#2
0
        /// <summary>
        /// add new line graph
        /// </summary>
        /// <param name="name">line graph name</param>
        /// <param name="datasource">graph data source </param>
        /// <param name="pen">pen color</param>
        /// <param name="isShow">is show at beginning</param>
        public void AddLineGraph(string name, TwoDimensionViewPointCollection datasource, Pen pen, bool isShow)
        {
            CheckBox newCheckBox = new CheckBox();

            newCheckBox.Content    = name;
            newCheckBox.IsChecked  = isShow;
            newCheckBox.Foreground = pen.Brush;
            lb_main.Items.Add(newCheckBox);

            LineAndMarker <ElementMarkerPointsGraph> line = AppendLineGraph(datasource, pen, name);
            Binding binding = new Binding("IsChecked")
            {
                Converter = new BoolToVisibilityConverter(),
                Mode      = BindingMode.OneWay,
                Source    = newCheckBox
            };

            line.LineGraph.SetBinding(LineGraph.VisibilityProperty, binding);
            line.MarkerGraph.SetBinding(LineGraph.VisibilityProperty, binding);
        }
示例#3
0
        /// <summary>
        /// draw split line
        /// </summary>
        /// <param name="split"></param>
        /// <param name="stroke"></param>
        /// <param name="min"></param>
        /// <param name="max"></param>
        /// <returns></returns>

        public LineGraph AddSplitLine(int split, double stroke, double min, double max, SegmentType segType, Color color)
        {
            var tempPoints = new TwoDimensionViewPointCollection();
            var v_right    = new EnumerableDataSource <TwoDimensionViewPoint>(tempPoints);

            v_right.SetXMapping(x => x.TimeStamp);
            v_right.SetYMapping(y => y.Value);
            tempPoints.Add(new TwoDimensionViewPoint(max, split));
            tempPoints.Add(new TwoDimensionViewPoint(min, split));

            LineGraph newSplit;

            if (segType == SegmentType.NotSegment)
            {
                newSplit = chart.AddLineGraph(v_right, color, stroke, "seg line");
            }
            else
            {
                newSplit         = new LineGraph(v_right);
                newSplit.LinePen = new Pen(new SolidColorBrush(color), stroke);
            }
            if (segType == SegmentType.AccSegment)
            {
                _accSegLineList.Add(newSplit);
            }
            if (segType == SegmentType.VelSegment)
            {
                _velSegLineList.Add(newSplit);
            }
            if (segType == SegmentType.AngSegment)
            {
                _angSegLineList.Add(newSplit);
            }


            return(newSplit);
        }
示例#4
0
        private void DrawData()
        {
            //preprocess data
            double[] x = (from data in m_dataManager.DataModelList
                          select data.position_right.X).ToArray();
            // double[] x1 = new double[m_dataManager.DataModelList.Count];
            double[] y = (from data in m_dataManager.DataModelList
                          select data.position_right.Y).ToArray();
            int[] time = (from data in m_dataManager.DataModelList
                          select data.timeStamp).ToArray();
            //draw data
            //processed data
            double[] x_filter = m_csDataProcessor.MeanFilter(x, time);
            // x_filter = m_csDataProcessor.MeanFilter(x_filter, time);
            //double[] y_filter = m_csDataProcessor.MeanFilter(y, time);
            double[] y_filter = m_csDataProcessor.GetSDs(y);
            // y_filter = m_csDataProcessor.MeanFilter(y_filter, time);
            double[] velo = m_csDataProcessor.CalVelocity();
            double[] sd   = m_csDataProcessor.GetPositionSDs();
            double[] acc  = m_csDataProcessor.CalAcceleration(y_filter, time);
            TwoDimensionViewPointCollection Y_filtered         = new TwoDimensionViewPointCollection(y_filter, time);
            TwoDimensionViewPointCollection X_filtered         = new TwoDimensionViewPointCollection(x_filter, time);
            TwoDimensionViewPointCollection V_Right_Points     = new TwoDimensionViewPointCollection(velo, time);
            TwoDimensionViewPointCollection SD_Right_Points    = new TwoDimensionViewPointCollection(sd, time);
            TwoDimensionViewPointCollection A_Right_Points     = new TwoDimensionViewPointCollection(acc, time);
            TwoDimensionViewPointCollection X_Right_Points     = new TwoDimensionViewPointCollection(x, time);
            TwoDimensionViewPointCollection Y_Right_Points     = new TwoDimensionViewPointCollection(y, time);
            TwoDimensionViewPointCollection Angle_Right_Points = new TwoDimensionViewPointCollection();

            //left
            TwoDimensionViewPointCollection V_Left_Points     = new TwoDimensionViewPointCollection();
            TwoDimensionViewPointCollection A_Left_Points     = new TwoDimensionViewPointCollection();
            TwoDimensionViewPointCollection Angle_Left_Points = new TwoDimensionViewPointCollection();
            TwoDimensionViewPointCollection Y_Left_Points     = new TwoDimensionViewPointCollection();

            foreach (DataModel item in m_dataManager.DataModelList)
            {
                V_Left_Points.Add(new TwoDimensionViewPoint(item.v_left, item.timeStamp));
                A_Left_Points.Add(new TwoDimensionViewPoint(item.a_left, item.timeStamp));
                Angle_Right_Points.Add(new TwoDimensionViewPoint(item.angle_right, item.timeStamp));
                Angle_Left_Points.Add(new TwoDimensionViewPoint(item.angle_left, item.timeStamp));
                Y_Left_Points.Add(new TwoDimensionViewPoint(item.position_left.Y, item.timeStamp));
            }

            Pen veloPen  = new Pen(Brushes.DarkBlue, 2);
            Pen accPen   = new Pen(Brushes.Red, 2);
            Pen anglePen = new Pen(Brushes.ForestGreen, 2);
            Pen posPen   = new Pen(Brushes.Purple, 2);
            Pen filter   = new Pen(Brushes.Blue, 2);

            cht_right.AddLineGraph("SD", SD_Right_Points, veloPen, true);
            cht_right.AddLineGraph("acceleration", A_Right_Points, accPen, false);
            cht_right.AddLineGraph("angle", Angle_Right_Points, anglePen, false);
            cht_right.AddLineGraph("Y", Y_Right_Points, posPen, false);
            cht_right.AddLineGraph("Y filter", Y_filtered, filter, false);
            cht_right.AddLineGraph("X", X_Right_Points, filter, false);
            cht_right.AddLineGraph("X filter", X_filtered, filter, false);

            cht_left.AddLineGraph("velocity", V_Left_Points, veloPen, true);
            cht_left.AddLineGraph("acceleration", A_Left_Points, accPen, false);
            cht_left.AddLineGraph("angle", Angle_Left_Points, anglePen, false);
            cht_left.AddLineGraph("Y", Y_Left_Points, posPen, false);

            cht_big.AddLineGraph("r_velocity", V_Right_Points, veloPen, false);
            cht_big.AddLineGraph("r_acceleration", A_Right_Points, accPen, false);
            cht_big.AddLineGraph("r_angle", Angle_Right_Points, anglePen, false);
            cht_big.AddLineGraph("r_Y", Y_Right_Points, posPen, false);
            cht_big.AddLineGraph("l_velocity", V_Left_Points, veloPen, false);
            cht_big.AddLineGraph("l_acceleration", A_Left_Points, accPen, false);
            cht_big.AddLineGraph("l_angle", Angle_Left_Points, anglePen, false);
            cht_big.AddLineGraph("l_Y", Y_Left_Points, posPen, false);

            //add true word split line
            ssb_wordBox.Length = m_dataManager.DataModelList.Last().timeStamp;
            ssb_wordBox.AddWords(m_dataManager.True_Segmented_Words);
            tbk_words.Text = "";
            //add true word rect
            foreach (var item in m_dataManager.True_Segmented_Words)
            {
                tbk_words.Text += item.Word;
                cht_right.AddTruthRect(item.StartTime, item.EndTime, Brushes.LightPink);
                cht_left.AddTruthRect(item.StartTime, item.EndTime, Brushes.LightPink);
                cht_big.AddTruthRect(item.StartTime, item.EndTime, Brushes.LightPink);
            }

            //segmentate word
            //principle: 1.static=>1 or more signs or margin
            //           2.dynamic=>ME or sub-sign or signs.
            m_segmentatedStaticClips  = new SegmentedWordCollection();
            m_segmentatedDynamicClips = new SegmentedWordCollection();
            double threshold = 0.15;

            bool[] temp   = sd.Select(d => d < threshold).ToArray();
            bool[] bidata = new bool[temp.Length];
            for (int i = 2; i < bidata.Length - 2; i++)
            {
                if (temp[i])
                {
                    bidata[i - 2] = true;
                    bidata[i - 1] = true;
                    bidata[i]     = true;
                    bidata[i + 1] = true;
                    bidata[i + 2] = true;
                }
            }
            bool isInStatic = false;
            int  index      = -1;

            for (int i = 0; i < bidata.Length; i++)
            {
                if (!isInStatic && bidata[i])
                {
                    isInStatic = true;
                    if (index != -1 && i - index - 1 > 0)
                    {
                        m_segmentatedDynamicClips.Add(new SegmentedWordModel("dc", index, i - 1));
                    }
                    index = i;
                }
                if (isInStatic && !bidata[i])
                {
                    isInStatic = false;
                    m_segmentatedStaticClips.Add(new SegmentedWordModel("sc", index, i - 1));
                    index = i;
                }
            }
            //split dynamic clips
            double[] angVelo = m_csDataProcessor.GetAngularVelo();
            TwoDimensionViewPointCollection AngularVelo = new TwoDimensionViewPointCollection(angVelo, time);

            cht_right.AddLineGraph("av", AngularVelo, anglePen, false);
            double curveThreshold = 0.45;
            int    offset         = 3;

            temp = angVelo.Select(ang => ang > curveThreshold).ToArray();
            SegmentedWordModel[] tempList = new SegmentedWordModel[m_segmentatedDynamicClips.Count];
            m_segmentatedDynamicClips.CopyTo(tempList);
            foreach (var item in tempList)
            {
                int startFrame = item.StartTime;
                for (int i = item.StartTime + offset; i < item.EndTime - offset; i++)
                {
                    if (temp[i])
                    {
                        int seg = FindDynamicSegmentPoint(temp, i, item.EndTime);
                        m_segmentatedDynamicClips.Add(new SegmentedWordModel("split dc", startFrame, seg));
                        startFrame = seg;
                        i         += offset - 1;
                    }
                }
            }
            foreach (var item in m_segmentatedStaticClips)
            {
                cht_right.AddSegRect(item.StartTime, item.EndTime, Brushes.LightSkyBlue);
                cht_left.AddSegRect(item.StartTime, item.EndTime, Brushes.LightSkyBlue);
                cht_big.AddSegRect(item.StartTime, item.EndTime, Brushes.LightSkyBlue);
            }

            foreach (var item in m_segmentatedDynamicClips)
            {
                cht_right.AddSegRect(item.StartTime, item.EndTime, Brushes.LightYellow);
                cht_left.AddSegRect(item.StartTime, item.EndTime, Brushes.LightYellow);
                cht_big.AddSegRect(item.StartTime, item.EndTime, Brushes.LightYellow);
            }

            #region segmentation data from file

            foreach (int item in m_dataManager.AcSegmentTimeStampList)
            {
                cht_right.AddSplitLine(item, 2, Min, Max, SegmentType.AccSegment, Colors.DarkRed);
                cht_left.AddSplitLine(item, 2, Min, Max, SegmentType.AccSegment, Colors.DarkRed);
                ssb_wordBox.AddSplitLine(item, 2, SegmentType.AccSegment, Colors.DarkRed);
            }


            foreach (int item in m_dataManager.VeSegmentTimeStampList)
            {
                cht_right.AddSplitLine(item, 2, Min, Max, SegmentType.VelSegment, Colors.DarkBlue);
                cht_left.AddSplitLine(item, 2, Min, Max, SegmentType.VelSegment, Colors.DarkBlue);
                ssb_wordBox.AddSplitLine(item, 2, SegmentType.VelSegment, Colors.DarkBlue);
            }


            foreach (int item in m_dataManager.AngSegmentTimeStampList)
            {
                cht_right.AddSplitLine(item, 2, Min, Max, SegmentType.AngSegment, Colors.DarkGreen);
                cht_left.AddSplitLine(item, 2, Min, Max, SegmentType.AngSegment, Colors.DarkGreen);
                ssb_wordBox.AddSplitLine(item, 2, SegmentType.AngSegment, Colors.DarkGreen);
            }

            cb_show_rect.IsChecked = true;
            #endregion
        }
        /// <summary>
        /// Append VelocityPointCollection to the graph
        /// </summary>
        /// <param name="collection"></param>
        /// <param name="pen"></param>
        /// <param name="description"></param>
        private LineAndMarker<ElementMarkerPointsGraph> AppendLineGraph(TwoDimensionViewPointCollection collection, Pen pen, string description)
        {
            CircleElementPointMarker pointMaker = new CircleElementPointMarker();
            pointMaker.Size = 3;
            pointMaker.Brush = Brushes.Yellow;
            pointMaker.Fill = Brushes.Purple;

            var v = new EnumerableDataSource<TwoDimensionViewPoint>(collection);
            v.SetXMapping(x => x.TimeStamp);
            v.SetYMapping(y => y.Value);
            return chart.AddLineGraph(v, pen, pointMaker, new PenDescription(description));
        }
        /// <summary>
        /// draw split line
        /// </summary>
        /// <param name="split"></param>
        /// <param name="stroke"></param>
        /// <param name="min"></param>
        /// <param name="max"></param>
        /// <returns></returns>
        public LineGraph AddSplitLine(int split, double stroke, double min, double max, SegmentType segType, Color color)
        {
            var tempPoints = new TwoDimensionViewPointCollection();
            var v_right = new EnumerableDataSource<TwoDimensionViewPoint>(tempPoints);
            v_right.SetXMapping(x => x.TimeStamp);
            v_right.SetYMapping(y => y.Value);
            tempPoints.Add(new TwoDimensionViewPoint(max, split));
            tempPoints.Add(new TwoDimensionViewPoint(min, split));

            LineGraph newSplit;
            if (segType == SegmentType.NotSegment)
            {
                newSplit = chart.AddLineGraph(v_right, color, stroke, "seg line");
            }
            else
            {
                newSplit = new LineGraph(v_right);
                newSplit.LinePen = new Pen(new SolidColorBrush(color), stroke);
            }
            if (segType == SegmentType.AccSegment)
            {
                _accSegLineList.Add(newSplit);
            }
            if (segType == SegmentType.VelSegment)
            {
                _velSegLineList.Add(newSplit);
            }
            if (segType == SegmentType.AngSegment)
            {
                _angSegLineList.Add(newSplit);
            }

            return newSplit;
        }
        /// <summary>
        /// add new line graph
        /// </summary>
        /// <param name="name">line graph name</param>
        /// <param name="datasource">graph data source </param>
        /// <param name="pen">pen color</param>
        /// <param name="isShow">is show at beginning</param>
        public void AddLineGraph(string name, TwoDimensionViewPointCollection datasource, Pen pen, bool isShow)
        {
            CheckBox newCheckBox = new CheckBox();
            newCheckBox.Content = name;
            newCheckBox.IsChecked = isShow;
            newCheckBox.Foreground = pen.Brush;
            lb_main.Items.Add(newCheckBox);

            LineAndMarker<ElementMarkerPointsGraph> line = AppendLineGraph(datasource, pen, name);
            Binding binding = new Binding("IsChecked")
            {
                Converter = new BoolToVisibilityConverter(),
                Mode = BindingMode.OneWay,
                Source = newCheckBox
            };

            line.LineGraph.SetBinding(LineGraph.VisibilityProperty, binding);
            line.MarkerGraph.SetBinding(LineGraph.VisibilityProperty, binding);
        }
        private void DrawData()
        {
            //preprocess data
            double[] x = (from data in m_dataManager.DataModelList
                          select data.position_right.X).ToArray();
               // double[] x1 = new double[m_dataManager.DataModelList.Count];
            double[] y = (from data in m_dataManager.DataModelList
                          select data.position_right.Y).ToArray();
            int[] time = (from data in m_dataManager.DataModelList
                          select data.timeStamp).ToArray();
            //draw data
            //processed data
            double[] x_filter = m_csDataProcessor.MeanFilter(x, time);
               // x_filter = m_csDataProcessor.MeanFilter(x_filter, time);
            //double[] y_filter = m_csDataProcessor.MeanFilter(y, time);
            double[] y_filter = m_csDataProcessor.GetSDs(y);
               // y_filter = m_csDataProcessor.MeanFilter(y_filter, time);
            double[] velo = m_csDataProcessor.CalVelocity();
            double[] sd = m_csDataProcessor.GetPositionSDs();
            double[] acc = m_csDataProcessor.CalAcceleration(y_filter, time);
            TwoDimensionViewPointCollection Y_filtered = new TwoDimensionViewPointCollection(y_filter, time);
            TwoDimensionViewPointCollection X_filtered = new TwoDimensionViewPointCollection(x_filter, time);
            TwoDimensionViewPointCollection V_Right_Points = new TwoDimensionViewPointCollection(velo, time);
            TwoDimensionViewPointCollection SD_Right_Points = new TwoDimensionViewPointCollection(sd, time);
            TwoDimensionViewPointCollection A_Right_Points = new TwoDimensionViewPointCollection(acc,time);
            TwoDimensionViewPointCollection X_Right_Points = new TwoDimensionViewPointCollection(x, time);
            TwoDimensionViewPointCollection Y_Right_Points = new TwoDimensionViewPointCollection(y, time);
            TwoDimensionViewPointCollection Angle_Right_Points = new TwoDimensionViewPointCollection();

            //left
            TwoDimensionViewPointCollection V_Left_Points = new TwoDimensionViewPointCollection();
            TwoDimensionViewPointCollection A_Left_Points = new TwoDimensionViewPointCollection();
            TwoDimensionViewPointCollection Angle_Left_Points = new TwoDimensionViewPointCollection();
            TwoDimensionViewPointCollection Y_Left_Points = new TwoDimensionViewPointCollection();

            foreach (DataModel item in m_dataManager.DataModelList)
            {
                V_Left_Points.Add(new TwoDimensionViewPoint(item.v_left, item.timeStamp));
                A_Left_Points.Add(new TwoDimensionViewPoint(item.a_left, item.timeStamp));
                Angle_Right_Points.Add(new TwoDimensionViewPoint(item.angle_right, item.timeStamp));
                Angle_Left_Points.Add(new TwoDimensionViewPoint(item.angle_left, item.timeStamp));
                Y_Left_Points.Add(new TwoDimensionViewPoint(item.position_left.Y, item.timeStamp));

            }

            Pen veloPen = new Pen(Brushes.DarkBlue, 2);
            Pen accPen = new Pen(Brushes.Red, 2);
            Pen anglePen = new Pen(Brushes.ForestGreen, 2);
            Pen posPen = new Pen(Brushes.Purple, 2);
            Pen filter = new Pen(Brushes.Blue, 2);

            cht_right.AddLineGraph("SD", SD_Right_Points, veloPen, true);
            cht_right.AddLineGraph("acceleration", A_Right_Points, accPen,false);
            cht_right.AddLineGraph("angle", Angle_Right_Points, anglePen, false);
            cht_right.AddLineGraph("Y", Y_Right_Points, posPen, false);
            cht_right.AddLineGraph("Y filter", Y_filtered, filter, false);
            cht_right.AddLineGraph("X", X_Right_Points, filter, false);
            cht_right.AddLineGraph("X filter", X_filtered, filter, false);

            cht_left.AddLineGraph("velocity", V_Left_Points, veloPen,true);
            cht_left.AddLineGraph("acceleration", A_Left_Points, accPen, false);
            cht_left.AddLineGraph("angle", Angle_Left_Points, anglePen, false);
            cht_left.AddLineGraph("Y", Y_Left_Points, posPen, false);

            cht_big.AddLineGraph("r_velocity", V_Right_Points, veloPen, false);
            cht_big.AddLineGraph("r_acceleration", A_Right_Points, accPen, false);
            cht_big.AddLineGraph("r_angle", Angle_Right_Points, anglePen, false);
            cht_big.AddLineGraph("r_Y", Y_Right_Points, posPen, false);
            cht_big.AddLineGraph("l_velocity", V_Left_Points, veloPen, false);
            cht_big.AddLineGraph("l_acceleration", A_Left_Points, accPen, false);
            cht_big.AddLineGraph("l_angle", Angle_Left_Points, anglePen, false);
            cht_big.AddLineGraph("l_Y", Y_Left_Points, posPen, false);

            //add true word split line
            ssb_wordBox.Length = m_dataManager.DataModelList.Last().timeStamp;
            ssb_wordBox.AddWords(m_dataManager.True_Segmented_Words);
            tbk_words.Text = "";
            //add true word rect
            foreach (var item in m_dataManager.True_Segmented_Words)
            {
                tbk_words.Text += item.Word;
                cht_right.AddTruthRect(item.StartTime, item.EndTime, Brushes.LightPink);
                cht_left.AddTruthRect(item.StartTime, item.EndTime, Brushes.LightPink);
                cht_big.AddTruthRect(item.StartTime, item.EndTime, Brushes.LightPink);

            }

            //segmentate word
            //principle: 1.static=>1 or more signs or margin
            //           2.dynamic=>ME or sub-sign or signs.
            m_segmentatedStaticClips = new SegmentedWordCollection();
            m_segmentatedDynamicClips = new SegmentedWordCollection();
            double threshold = 0.15;
            bool[] temp = sd.Select(d => d < threshold).ToArray();
            bool[] bidata = new bool[temp.Length];
            for (int i = 2; i < bidata.Length - 2; i++)
            {
                if (temp[i])
                {
                    bidata[i - 2] = true;
                    bidata[i - 1] = true;
                    bidata[i] = true;
                    bidata[i + 1] = true;
                    bidata[i + 2] = true;
                }

            }
            bool isInStatic = false;
            int index = -1;
            for (int i = 0; i < bidata.Length; i++)
            {
                if (!isInStatic && bidata[i])
                {
                    isInStatic = true;
                    if (index != -1 && i-index-1>0)
                    {
                        m_segmentatedDynamicClips.Add(new SegmentedWordModel("dc", index, i - 1));
                    }
                    index = i;

                }
                if (isInStatic && !bidata[i])
                {
                    isInStatic = false;
                    m_segmentatedStaticClips.Add(new SegmentedWordModel("sc", index, i - 1));
                    index = i;
                }
            }
            //split dynamic clips
            double[] angVelo = m_csDataProcessor.GetAngularVelo();
            TwoDimensionViewPointCollection AngularVelo = new TwoDimensionViewPointCollection(angVelo, time);
            cht_right.AddLineGraph("av", AngularVelo, anglePen, false);
            double curveThreshold = 0.45;
            int offset = 3;
            temp = angVelo.Select(ang => ang > curveThreshold).ToArray();
            SegmentedWordModel[] tempList = new SegmentedWordModel[m_segmentatedDynamicClips.Count];
            m_segmentatedDynamicClips.CopyTo(tempList);
            foreach (var item in tempList)
            {
                int startFrame = item.StartTime;
                for (int i = item.StartTime + offset; i < item.EndTime - offset; i++)
                {
                    if (temp[i])
                    {
                        int seg = FindDynamicSegmentPoint(temp, i, item.EndTime);
                        m_segmentatedDynamicClips.Add(new SegmentedWordModel("split dc", startFrame, seg));
                        startFrame = seg;
                        i += offset - 1;
                    }
                }
            }
            foreach (var item in m_segmentatedStaticClips)
            {
                cht_right.AddSegRect(item.StartTime, item.EndTime, Brushes.LightSkyBlue);
                cht_left.AddSegRect(item.StartTime, item.EndTime, Brushes.LightSkyBlue);
                cht_big.AddSegRect(item.StartTime, item.EndTime, Brushes.LightSkyBlue);
            }

            foreach (var item in m_segmentatedDynamicClips)
            {
                cht_right.AddSegRect(item.StartTime, item.EndTime, Brushes.LightYellow);
                cht_left.AddSegRect(item.StartTime, item.EndTime, Brushes.LightYellow);
                cht_big.AddSegRect(item.StartTime, item.EndTime, Brushes.LightYellow);
            }

            #region segmentation data from file

            foreach (int item in m_dataManager.AcSegmentTimeStampList)
            {
                cht_right.AddSplitLine(item, 2, Min, Max, SegmentType.AccSegment, Colors.DarkRed);
                cht_left.AddSplitLine(item, 2, Min, Max, SegmentType.AccSegment, Colors.DarkRed);
                ssb_wordBox.AddSplitLine(item, 2, SegmentType.AccSegment, Colors.DarkRed);
            }

            foreach (int item in m_dataManager.VeSegmentTimeStampList)
            {
                cht_right.AddSplitLine(item, 2, Min, Max, SegmentType.VelSegment, Colors.DarkBlue);
                cht_left.AddSplitLine(item, 2, Min, Max, SegmentType.VelSegment, Colors.DarkBlue);
                ssb_wordBox.AddSplitLine(item, 2, SegmentType.VelSegment, Colors.DarkBlue);
            }

            foreach (int item in m_dataManager.AngSegmentTimeStampList)
            {
                cht_right.AddSplitLine(item, 2, Min, Max, SegmentType.AngSegment, Colors.DarkGreen);
                cht_left.AddSplitLine(item, 2, Min, Max, SegmentType.AngSegment, Colors.DarkGreen);
                ssb_wordBox.AddSplitLine(item, 2, SegmentType.AngSegment, Colors.DarkGreen);
            }

            cb_show_rect.IsChecked = true;
            #endregion
        }