public NormalizingPlotter(NPlot.Windows.PlotSurface2D plotSurface, TimeSpan displayPeriod)
            : base(plotSurface)
        {
            this.DisplayPeriod = displayPeriod;
            HeartRate heartRate = HeartRate.Instance;

            NormalizerFilter normalizerFilter = new NormalizerFilter(TimeSpan.FromSeconds(1.5));
            LightStoneDevice.Instance.RawHeartSignalOutput.Add(normalizerFilter);

            int bufferSize = (int)(m_DisplayPeriod.Ticks / LightStoneDevice.SamplingInterval.Ticks);
            m_PointBuffer = TimeSpanBuffer<double>.Synchronized(m_DisplayPeriod, bufferSize);
            normalizerFilter.Output.Add(m_PointBuffer);

            this.PlotSurface.Clear();

            m_LinePlot = new LinePlot();
            m_LinePlot.Pen = new Pen(Color.Red, 2.0f);
            this.PlotSurface.Add(m_LinePlot);

            this.PlotSurface.XAxis1 = new DateTimeAxis(this.PlotSurface.XAxis1);
            this.PlotSurface.XAxis1.NumberFormat = "hh:mm:ss";

            this.PlotSurface.Title = "Normalized Heart Signal";
            this.PlotSurface.XAxis1.Label = "Time";
            this.PlotSurface.YAxis1.Label = "Magnitude";

            Refresh();
        }
        protected override void OnCreateControl()
        {
            if (!this.DesignMode)
            {
                HeartRate heartRate = HeartRate.Instance;

                NormalizerFilter normalizerFilter = new NormalizerFilter(TimeSpan.FromSeconds(1.5));
                LightStoneDevice.Instance.RawHeartSignalOutput.Add(normalizerFilter);

                int bufferSize = (int)(this.DisplayPeriod.Ticks / LightStoneDevice.SamplingInterval.Ticks);
                m_PointBuffer = TimeSpanBuffer<double>.Synchronized(this.DisplayPeriod, bufferSize);
                normalizerFilter.Output.Add(m_PointBuffer);

                base.PlotSurface.Clear();

                m_LinePlot = new LinePlot();
                m_LinePlot.Pen = new Pen(Color.Red, 2.0f);
                base.PlotSurface.Add(m_LinePlot);

                base.PlotSurface.XAxis1 = new DateTimeAxis(base.PlotSurface.XAxis1);
                base.PlotSurface.XAxis1.NumberFormat = "mm:ss";

                base.PlotSurface.Title = "Normalized Heart Signal";
                base.PlotSurface.XAxis1.Label = "Time";
                base.PlotSurface.YAxis1.Label = "Magnitude";

                RefreshGraph();

                base.StartTimer(100);
            }
            base.OnCreateControl();
        }