Ejemplo n.º 1
0
        protected override bool MsGraphControlOnMouseUpEvent(ZedGraphControl sender, MouseEventArgs e)
        {
            if (_peakResize != null)
            {
                var    point = new PointF(e.X - _peakResize.MousePt.X + _peakResize.CoordPt.X, e.Y);
                double x, y;
                MsGraphControl.GraphPane.ReverseTransform(point, out x, out y);
                var    peaks = PeptideFileAnalysis.CalculatedPeaks;
                double newStart, newEnd;
                switch (_peakResize.LineSegment)
                {
                case LineSegment.Start:
                    newStart = x;
                    newEnd   = _peakResize.Peak.EndTime;
                    break;

                case LineSegment.End:
                    newStart = _peakResize.Peak.StartTime;
                    newEnd   = x;
                    break;

                default:
                    newStart = x;
                    newEnd   = x - _peakResize.Peak.StartTime + _peakResize.Peak.EndTime;
                    break;
                }
                var newPeaks = peaks.ChangeTime(_peakResize.TracerFormula, Math.Min(newStart, newEnd), Math.Max(newStart, newEnd));
                _peakResize = null;
                PeptideFileAnalysis.SetCalculatedPeaks(newPeaks);
                PeptideAnalysis.EnsurePeaksCalculated();
            }
            return(base.MsGraphControlOnMouseUpEvent(sender, e));
        }
Ejemplo n.º 2
0
 protected override bool MsGraphControlOnMouseDownEvent(ZedGraphControl sender, MouseEventArgs e)
 {
     _peakResize = null;
     if (base.MsGraphControlOnMouseDownEvent(sender, e))
     {
         return(true);
     }
     if ((_peakResize = PeakResizeFromPoint(e.Location)) != null)
     {
         sender.Cursor = _peakResize.GetCursor();
         return(true);
     }
     return(false);
 }
Ejemplo n.º 3
0
        private PeakResize PeakResizeFromPoint(PointF pointF)
        {
            if (_peakLines == null)
            {
                return(null);
            }
            var peaks = PeptideFileAnalysis.CalculatedPeaks;

            if (peaks == null)
            {
                return(null);
            }
            foreach (var entry in _peakLines)
            {
                var peak = peaks.GetPeak(entry.Key);
                if (peak == null)
                {
                    continue;
                }
                var peakDisplay = entry.Value;
                var peakResize  = new PeakResize
                {
                    TracerFormula = entry.Key,
                    Peak          = peak.Value,
                    MousePt       = pointF,
                    PeakDisplay   = peakDisplay,
                };
                if (peakDisplay.HorizontalLine != null)
                {
                    PointF startPt = MsGraphControl.GraphPane.GeneralTransform(peakDisplay.HorizontalLine.Points[0], CoordType.AxisXYScale);
                    PointF endPt   = MsGraphControl.GraphPane.GeneralTransform(peakDisplay.HorizontalLine.Points[1],
                                                                               CoordType.AxisXYScale);
                    if (Math.Abs(pointF.Y - startPt.Y) <= 2)
                    {
                        if (Math.Abs(pointF.X - startPt.X) <= 2)
                        {
                            peakResize.LineSegment = LineSegment.Start;
                            peakResize.CoordPt     = startPt;
                            return(peakResize);
                        }
                        if (Math.Abs(pointF.X - endPt.X) <= 2)
                        {
                            peakResize.LineSegment = LineSegment.End;
                            peakResize.CoordPt     = endPt;
                            return(peakResize);
                        }
                        if (pointF.X > startPt.X && pointF.X < endPt.X)
                        {
                            peakResize.LineSegment = LineSegment.Middle;
                            peakResize.CoordPt     = startPt;
                            return(peakResize);
                        }
                    }
                }
                foreach (var lineItemSeg in new[] { new KeyValuePair <LineItem, LineSegment>(peakDisplay.StartVerticalLine, LineSegment.Start),
                                                    new KeyValuePair <LineItem, LineSegment>(peakDisplay.EndVerticalLine, LineSegment.End) })
                {
                    if (lineItemSeg.Key == null)
                    {
                        continue;
                    }
                    PointF firstPt = MsGraphControl.GraphPane.GeneralTransform(lineItemSeg.Key.Points[0],
                                                                               CoordType.AxisXYScale);
                    PointF lastPt = MsGraphControl.GraphPane.GeneralTransform(lineItemSeg.Key.Points[1],
                                                                              CoordType.AxisXYScale);
                    if (Math.Abs(pointF.X - firstPt.X) <= 1 &&
                        pointF.Y >= Math.Min(firstPt.Y, lastPt.Y) &&
                        pointF.Y <= Math.Max(firstPt.Y, lastPt.Y))
                    {
                        peakResize.LineSegment = lineItemSeg.Value;
                        peakResize.CoordPt     = new PointF(firstPt.X, pointF.Y);
                        return(peakResize);
                    }
                }
            }
            return(null);
        }
Ejemplo n.º 4
0
        protected override bool MsGraphControlOnMouseMoveEvent(ZedGraphControl sender, MouseEventArgs e)
        {
            if (_peakResize != null)
            {
                var         peakDisplay = _peakResize.PeakDisplay;
                PointPair[] points      = new[]
                {
                    new PointPair(peakDisplay.Start, peakDisplay.Height),
                    new PointPair(peakDisplay.End, peakDisplay.Height),
                };
                var    screenPt = new PointF(e.Location.X - _peakResize.MousePt.X + _peakResize.CoordPt.X, _peakResize.CoordPt.Y);
                double x, y;
                MsGraphControl.GraphPane.ReverseTransform(screenPt, out x, out y);
                switch (_peakResize.LineSegment)
                {
                case LineSegment.Start:
                    points[0] = new PointPair(x, points[0].Y);
                    break;

                case LineSegment.End:
                    points[1] = new PointPair(x, points[0].Y);
                    break;

                case LineSegment.Middle:
                    points = new[]
                    {
                        new PointPair(x, points[0].Y),
                        new PointPair(x - points[0].X + points[1].X, points[1].Y)
                    };
                    break;
                }

                if (peakDisplay.HorizontalLine != null)
                {
                    peakDisplay.HorizontalLine.RemovePoint(1);
                    peakDisplay.HorizontalLine.RemovePoint(0);
                    peakDisplay.HorizontalLine.AddPoint(points[0]);
                    peakDisplay.HorizontalLine.AddPoint(points[1]);
                }
                foreach (var lineItemPt in new[] {
                    new KeyValuePair <LineItem, PointPair>(peakDisplay.StartVerticalLine, points[0]),
                    new KeyValuePair <LineItem, PointPair>(peakDisplay.EndVerticalLine, points[1])
                })
                {
                    if (lineItemPt.Key == null)
                    {
                        continue;
                    }
                    lineItemPt.Key.RemovePoint(1);
                    lineItemPt.Key.RemovePoint(0);
                    lineItemPt.Key.AddPoint(new PointPair(lineItemPt.Value.X, peakDisplay.Height));
                    lineItemPt.Key.AddPoint(new PointPair(lineItemPt.Value.X, 0));
                }
                MsGraphControl.Invalidate();
                sender.Cursor = _peakResize.GetCursor();
                return(true);
            }
            if (base.MsGraphControlOnMouseMoveEvent(sender, e))
            {
                return(true);
            }
            PeakResize peakResize = PeakResizeFromPoint(e.Location);

            if (peakResize != null)
            {
                sender.Cursor = peakResize.GetCursor();
                return(true);
            }
            return(false);
        }
Ejemplo n.º 5
0
        private PeakResize PeakResizeFromPoint(PointF pointF)
        {
            if (_peakLines == null)
            {
                return null;
            }
            var peaks = PeptideFileAnalysis.CalculatedPeaks;
            if (peaks == null)
            {
                return null;
            }
            foreach (var entry in _peakLines)
            {
                var peak = peaks.GetPeak(entry.Key);
                if (peak == null)
                {
                    continue;
                }
                var peakDisplay = entry.Value;
                var peakResize = new PeakResize
                {
                    TracerFormula = entry.Key,
                    Peak = peak.Value,
                    MousePt = pointF,
                    PeakDisplay = peakDisplay,
                };
                if (peakDisplay.HorizontalLine != null)
                {
                    PointF startPt = MsGraphControl.GraphPane.GeneralTransform(peakDisplay.HorizontalLine.Points[0], CoordType.AxisXYScale);
                    PointF endPt = MsGraphControl.GraphPane.GeneralTransform(peakDisplay.HorizontalLine.Points[1],
                                                                             CoordType.AxisXYScale);
                    if (Math.Abs(pointF.Y - startPt.Y) <= 2)
                    {
                        if (Math.Abs(pointF.X - startPt.X) <= 2)
                        {
                            peakResize.LineSegment = LineSegment.Start;
                            peakResize.CoordPt = startPt;
                            return peakResize;
                        }
                        if (Math.Abs(pointF.X - endPt.X) <= 2)
                        {
                            peakResize.LineSegment = LineSegment.End;
                            peakResize.CoordPt = endPt;
                            return peakResize;
                        }
                        if (pointF.X > startPt.X && pointF.X < endPt.X)
                        {
                            peakResize.LineSegment = LineSegment.Middle;
                            peakResize.CoordPt = startPt;
                            return peakResize;
                        }
                    }
                }
                foreach (var lineItemSeg in new[] { new KeyValuePair<LineItem, LineSegment>(peakDisplay.StartVerticalLine, LineSegment.Start),
                    new KeyValuePair<LineItem, LineSegment>(peakDisplay.EndVerticalLine, LineSegment.End)})
                {
                    if (lineItemSeg.Key == null)
                    {
                        continue;
                    }
                    PointF firstPt = MsGraphControl.GraphPane.GeneralTransform(lineItemSeg.Key.Points[0],
                                                                               CoordType.AxisXYScale);
                    PointF lastPt = MsGraphControl.GraphPane.GeneralTransform(lineItemSeg.Key.Points[1],
                                                                              CoordType.AxisXYScale);
                    if (Math.Abs(pointF.X - firstPt.X) <= 1
                        && pointF.Y >= Math.Min(firstPt.Y, lastPt.Y)
                        && pointF.Y <= Math.Max(firstPt.Y, lastPt.Y))
                    {
                        peakResize.LineSegment = lineItemSeg.Value;
                        peakResize.CoordPt = new PointF(firstPt.X, pointF.Y);
                        return peakResize;
                    }
                }

            }
            return null;
        }
Ejemplo n.º 6
0
 protected override bool MsGraphControlOnMouseUpEvent(ZedGraphControl sender, MouseEventArgs e)
 {
     if (_peakResize != null)
     {
         var point = new PointF(e.X - _peakResize.MousePt.X + _peakResize.CoordPt.X, e.Y);
         double x, y;
         MsGraphControl.GraphPane.ReverseTransform(point, out x, out y);
         var peaks = PeptideFileAnalysis.CalculatedPeaks;
         double newStart, newEnd;
         switch (_peakResize.LineSegment)
         {
             case LineSegment.Start:
                 newStart = x;
                 newEnd = _peakResize.Peak.EndTime;
                 break;
             case LineSegment.End:
                 newStart = _peakResize.Peak.StartTime;
                 newEnd = x;
                 break;
             default:
                 newStart = x;
                 newEnd = x - _peakResize.Peak.StartTime + _peakResize.Peak.EndTime;
                 break;
         }
         var newPeaks = peaks.ChangeTime(_peakResize.TracerFormula, Math.Min(newStart, newEnd), Math.Max(newStart, newEnd));
         _peakResize = null;
         PeptideFileAnalysis.SetCalculatedPeaks(newPeaks);
         PeptideAnalysis.EnsurePeaksCalculated();
     }
     return base.MsGraphControlOnMouseUpEvent(sender, e);
 }
Ejemplo n.º 7
0
 protected override bool MsGraphControlOnMouseDownEvent(ZedGraphControl sender, MouseEventArgs e)
 {
     _peakResize = null;
     if (base.MsGraphControlOnMouseDownEvent(sender, e))
     {
         return true;
     }
     if ((_peakResize = PeakResizeFromPoint(e.Location)) != null)
     {
         sender.Cursor = _peakResize.GetCursor();
         return true;
     }
     return false;
 }