示例#1
0
        /// <summary>
        /// Add new object to draw area.
        /// Function is called when user left-clicks draw area,
        /// and one of ToolObject-derived tools is active.
        /// </summary>
        /// <param name="drawArea"></param>
        /// <param name="o"></param>
        protected void AddNewObject(DrawArea drawArea, DrawObject o)
        {
            //if (!o.GetType().ToString().Equals("Annotation.DrawLine"))
            drawArea.ListGraphics.UnselectAll();
            o.Selected = true;
            drawArea.ListGraphics.Add(o);
            //o.ID = drawArea.ListGraphics.Count;
            drawArea.Capture = true;
            drawArea.Refresh();



            // drawArea.SetDirty();
        }
示例#2
0
        public override void OnMouseMove(DrawArea drawArea, MouseEventArgs e)
        {
            drawArea.Cursor = Cursor;
            //this if condition has been added by darshan to resolve defect no 0000539.

            if (drawArea.ListGraphics.Count > 0)
            {
                if (e.Button == MouseButtons.Left)
                {
                    Point point = new Point(e.X, e.Y);
                    drawArea.ListGraphics[0].MoveHandleTo(point, 2);
                    drawArea.Refresh();
                }
            }
        }
示例#3
0
 /// <summary>
 /// AddExistingObject will add existing polygon to drawarea.
 /// </summary>
 /// <param name="drawArea">drawarea is where the polygon is drawn</param>
 /// <param name="s">shape class details will be in s</param>
 public void AddExistingObject(DrawArea drawArea, Shape s)
 {
     if (AnnotationVariables.isGlaucomaTool)
     {
         if (DrawArea.isDrawCup)
         {
             if (DrawCupPolygon == null)
             {
                 DrawCupPolygon           = new DrawPolygon(s.PointArray[0].X, s.PointArray[0].Y, s.PointArray[1].X, s.PointArray[1].Y);
                 DrawCupPolygon.isCup     = DrawArea.isDrawCup;
                 DrawObject.LastUsedColor = Color.FromName(AnnotationVariables.cupColor);
                 DrawCupPolygon.Color     = DrawObject.LastUsedColor;
                 AddNewObject(drawArea, DrawCupPolygon);
                 ArrayList points = new ArrayList(s.PointArray);
                 DrawCupPolygon.pointArray       = points;
                 DrawCupPolygon.Shape.PointArray = points.Cast <Point>().ToList <Point>();
             }
         }
         else
         {
             if (DrawDiscPolygon == null)
             {
                 DrawDiscPolygon          = new DrawPolygon(s.PointArray[0].X, s.PointArray[0].Y, s.PointArray[1].X, s.PointArray[1].Y);
                 DrawDiscPolygon.isCup    = DrawArea.isDrawCup;
                 DrawObject.LastUsedColor = Color.Black;
                 DrawDiscPolygon.Color    = Color.FromName(AnnotationVariables.discColor);
                 AddNewObject(drawArea, DrawDiscPolygon);
                 ArrayList points = new ArrayList(s.PointArray);
                 DrawDiscPolygon.pointArray       = points;
                 DrawDiscPolygon.Shape.PointArray = points.Cast <Point>().ToList <Point>();
             }
         }
     }
     else
     {
         newPolygon = new DrawPolygon(s.PointArray[0].X, s.PointArray[0].Y, s.PointArray[1].X, s.PointArray[1].Y);
         DrawObject.LastUsedColor = Color.FromName(AnnotationVariables.annotationMarkingColor);
         AddNewObject(drawArea, newPolygon);
         ArrayList points = new ArrayList(s.PointArray);
         newPolygon.pointArray       = points;
         newPolygon.Shape.PointArray = points.Cast <Point>().ToList <Point>();
     }
     drawArea.ListGraphics.UnselectAll();
     drawArea.Refresh();
 }
示例#4
0
        public override void OnMouseUp(DrawArea drawArea, MouseEventArgs e)
        {
            c = new AnnotationText();
            //this if condition has been added by darshan to resolve defect no 0000539.

            if (drawArea.ListGraphics.Count > 0)
            {
                for (int i = 0; i < drawArea.ListGraphics.Count; i++)
                {
                    //if (drawArea.ListGraphics[i] is DrawLine)
                    if (drawArea.ListGraphics[i].GetType().ToString().Equals("Annotation.DrawLine"))
                    {
                    }
                    else
                    {
                        idVal = drawArea.ListGraphics.ids.ElementAtOrDefault(i);
                        if (idVal != 0)
                        {
                            c.ID = drawArea.ListGraphics.ids[i];
                            drawArea.ListGraphics[0].Normalize();
                            drawArea.CommentsAdded(c);
                        }
                    }
                }

                //c.Dock = DockStyle.Top;
                //c.SetBounds(c.Location.X, c.Location.Y, c.Width, c.Height);
                //}
                drawArea.ActiveTool = DrawArea.DrawToolType.Pointer;
                //drawArea.Capture = false;
                //annotationPanel.Location = drawArea.active_point;
                //c.ac.X = annotationPanel.Location.X;
                //c.ac.Y = annotationPanel.Location.Y;
                //c.Show();
                //drawArea.comments.Add(c.ac);
                drawArea.Refresh();
            }
            //drawArea.Refresh();
        }
示例#5
0
        /// <summary>
        /// Right mouse button is released
        /// </summary>
        /// <param name="drawArea"></param>
        /// <param name="e"></param>
        public override void OnMouseUp(DrawArea drawArea, MouseEventArgs e)
        {
            if (selectMode == SelectionMode.NetSelection)

            {
                // Group selection
                drawArea.ListGraphics.SelectInRectangle(drawArea.NetRectangle);

                selectMode = SelectionMode.None;
                drawArea.DrawNetRectangle = false;
            }

            if (resizedObject != null)
            {
                // after resizing
                resizedObject.Normalize();
                resizedObject = null;
            }

            drawArea.Capture = false;
            drawArea.Refresh();
        }
示例#6
0
        /// <summary>
        /// Left nouse button is pressed
        /// </summary>
        /// <param name="drawArea"></param>
        /// <param name="e"></param>
        public override void OnMouseDown(DrawArea drawArea, MouseEventArgs e)
        {
            Point point1 = new Point(e.X, e.Y);

            if (AnnotationVariables.isGlaucomaTool)
            {
                ValidatePointsForGlaucomaTool(point1, drawArea);
            }
            else
            {
                newPolygon = new DrawPolygon(e.X, e.Y, e.X + 1, e.Y + 1);
                AddNewObject(drawArea, newPolygon);
                lastX = e.X;
                lastY = e.Y;
                Args arg = new Args();//Added by darshan on 25-07-2016 as per NR:0001211 Note no:(0002558)
                arg["Print"]  = true;
                arg["Save"]   = true;
                arg["Export"] = true;//set to true when points drawn . By Ashutosh 21-7-2017

                _eventHandler.Notify(_eventHandler.AnnotationButtonsRefresh, arg);
            }
            drawArea.Refresh();
        }
示例#7
0
 /// <summary>
 /// AddExistingObject will add existing rectangle to drawarea.
 /// </summary>
 /// <param name="drawArea">drawarea is where the rectangle is drawn</param>
 /// <param name="s">shape class details will be in s</param>
 public void AddExistingObject(DrawArea drawArea, Shape s)
 {
     AddNewObject(drawArea, new DrawRectangle(s.StartPoint.X, s.StartPoint.Y, s.Width, s.Height));
     drawArea.ListGraphics.UnselectAll();
     drawArea.Refresh();
 }
示例#8
0
 public static void text_move(DrawArea drawArea, MouseEventArgs e)
 {
     c.Location = drawArea.active_point;
     drawArea.Refresh();
 }
示例#9
0
 /// <summary>
 /// AddExistingObject will add existing line to drawarea.
 /// </summary>
 /// <param name="drawArea">drawarea is where the line is drawn</param>
 /// <param name="s">shape class details will be in s</param>
 public void AddExistingObject(DrawArea drawArea, Shape s)
 {
     AddNewObject(drawArea, new DrawLine(s.StartPoint.X, s.StartPoint.Y, s.EndPoint.X, s.EndPoint.Y));
     drawArea.ListGraphics.UnselectAll();
     drawArea.Refresh();
 }
示例#10
0
        /// <summary>
        /// Left mouse button is pressed
        /// </summary>
        /// <param name="drawArea"></param>
        /// <param name="e"></param>
        public override void OnMouseDown(DrawArea drawArea, MouseEventArgs e)
        {
            selectMode = SelectionMode.None;
            Point point = new Point(e.X, e.Y);

            // Test for resizing (only if control is selected, cursor is on the handle)
            int n = drawArea.ListGraphics.SelectionCount;

            for (int i = 0; i < n; i++)
            {
                DrawObject o            = drawArea.ListGraphics.GetSelectedObject(i);
                int        handleNumber = o.HitTest(point);

                if (handleNumber > 0)
                {
                    selectMode = SelectionMode.Size;

                    // keep resized object in class members
                    resizedObject       = o;
                    resizedObjectHandle = handleNumber;

                    // Since we want to resize only one object, unselect all other objects
                    drawArea.ListGraphics.UnselectAll();
                    o.Selected = true;

                    break;
                }
            }

            // Test for move (cursor is on the object)
            if (selectMode == SelectionMode.None)
            {
                List <AnnotationComments> annocmt = null;
                int        n1 = drawArea.ListGraphics.Count;
                DrawObject o  = null;

                if (drawArea.comments.Count != 0)
                {
                    annocmt = drawArea.comments;
                    annocmt.Reverse();
                }
                string[] str = drawArea.ListGraphics.graphicType;
                for (int i = 0; i < n1; i++)
                {
                    int a = drawArea.ListGraphics[i].HitTest(point);
                    if (drawArea.ListGraphics[i].PointContainer(point) == 0)
                    {
                        o = drawArea.ListGraphics[i];
                        break;
                    }
                    //if (drawArea.ListGraphics[i].HitTest(point) == 0)
                    //{
                    //    o = drawArea.ListGraphics[i];
                    //    //if(annocmt!=null)
                    //    //    //o.ID = annocmt[i].ID;
                    //    break;
                    //}
                }

                if (o != null)
                {
                    isZoom     = false;
                    selectMode = SelectionMode.Move;

                    // Unselect all if Ctrl is not pressed and clicked object is not selected yet
                    if ((Control.ModifierKeys & Keys.Control) == 0 && !o.Selected)
                    {
                        drawArea.ListGraphics.UnselectAll();
                    }

                    // Select clicked object

                    o.Selected = true;
                    if (o is DrawPolygon)
                    {
                        DrawPolygon polyGon = o as DrawPolygon;

                        if (AnnotationVariables.isGlaucomaTool)
                        {
                            _eventHandler.Notify(_eventHandler.EnableMovePointInCDRTool, new Args());//public void Notify(String n, Args args) defined in IVLEventHandler.By ashutosh 25-07-2017
                        }
                    }

                    drawArea.Cursor = Cursors.SizeAll;
                }
            }
            // Net selection
            if (selectMode == SelectionMode.None)
            {
                // click on background
                if ((Control.ModifierKeys & Keys.Control) == 0)
                {
                    drawArea.ListGraphics.UnselectAll();
                    drawArea.unselectalltext();
                }
                selectMode = SelectionMode.NetSelection;
                isZoom     = true;
                drawArea.DrawNetRectangle = true;
            }
            lastPoint.X           = e.X;
            lastPoint.Y           = e.Y;
            startPoint.X          = e.X;
            startPoint.Y          = e.Y;
            drawArea.Capture      = true;
            drawArea.NetRectangle = DrawRectangle.GetNormalizedRectangle(startPoint, lastPoint);
            drawArea.Refresh();
        }
示例#11
0
        /// <summary>
        /// Mouse is moved.
        /// None button is pressed, ot left button is pressed.
        /// </summary>
        /// <param name="drawArea"></param>
        /// <param name="e"></param>
        public override void OnMouseMove(DrawArea drawArea, MouseEventArgs e)
        {
            Point point  = new Point(e.X, e.Y);
            Point point1 = new Point();

            // set cursor when mouse button is not pressed
            if (e.Button == MouseButtons.None)
            {
                Cursor cursor = null;

                for (int i = 0; i < drawArea.ListGraphics.Count; i++)
                {
                    int n = drawArea.ListGraphics[i].HitTest(point);

                    if (n == 5)
                    {
                        point1 = drawArea.ListGraphics[i].GetHandleCursor(n).HotSpot;
                        //annotateText.Location = drawArea.active_point;
                    }
                    if (n > 0)
                    {
                        cursor = drawArea.ListGraphics[i].GetHandleCursor(n);
                        break;
                    }
                }



                if (cursor == null)
                {
                    cursor = Cursors.Default;
                }

                drawArea.Cursor = cursor;

                return;
            }


            if (e.Button != MouseButtons.Left)
            {
                return;
            }

            /// Left button is pressed

            // Find difference between previous and current position
            int dx = e.X - lastPoint.X;
            int dy = e.Y - lastPoint.Y;


            lastPoint.X = e.X;
            lastPoint.Y = e.Y;
            int ControlIndx = 0;
            int shiftVal    = 0;

            // resize
            if (selectMode == SelectionMode.Size)
            {
                if (resizedObject != null)
                {
                    if (AnnotationVariables.isGlaucomaTool)
                    {
                        if (resizedObject is DrawPolygon)
                        {
                            if (ToolPolygon.modifyPolygon)
                            {
                                if (e.Button != MouseButtons.Left)
                                {
                                    return;
                                }
                                DrawPolygon poly = resizedObject as DrawPolygon;// this line has been added in order to get the polygon details instead of directly getting from the generic object which solves the problem cup going outside disc and disc coming inside cup by sriram
                                if (!poly.isCup)
                                {
                                    if (ToolPolygon.DrawDiscPolygon == null)
                                    {
                                        return;                 // precaution
                                    }
                                    // if (distance < minDistance)
                                    {
                                        // Distance between last two points is less than minimum -
                                        // move last point
                                        if (ToolPolygon.DrawCupPolygon != null)
                                        {
                                            if (!NearestNeighbours((Point[])ToolPolygon.DrawCupPolygon.pointArray.ToArray(typeof(Point)), point))
                                            {
                                                resizedObject.MoveHandleTo(point, resizedObjectHandle);
                                            }
                                            if (AnnotationVariables.isGlaucomaToolViewing)
                                            {
                                                Args arg = new Args();
                                                arg["Save"]     = true;
                                                arg["IsViewed"] = false;
                                                _eventHandler.Notify(_eventHandler.UpdateGlaucomaToolControls, arg);
                                            }
                                        }
                                        else
                                        {
                                            resizedObject.MoveHandleTo(point, resizedObjectHandle);
                                        }
                                    }
                                }
                                else
                                {
                                    if (ToolPolygon.DrawCupPolygon == null)
                                    {
                                        return;                 // precaution
                                    }
                                    // if (distance < minDistance)
                                    {
                                        // Distance between last two points is less than minimum -
                                        // move last point
                                        if (ToolPolygon.DrawDiscPolygon != null)
                                        {
                                            if (NearestNeighbours((Point[])ToolPolygon.DrawDiscPolygon.pointArray.ToArray(typeof(Point)), point))
                                            {
                                                //if (!InsidePolygon((Point[])ToolPolygon.DrawDiscPolygon.pointArray.ToArray(typeof(Point)), point))
                                                resizedObject.MoveHandleTo(point, resizedObjectHandle);
                                            }
                                            if (AnnotationVariables.isGlaucomaToolViewing)
                                            {
                                                Args arg = new Args();
                                                if (drawArea.ListGraphics[0].HandleCount >= 3 && drawArea.ListGraphics[1].HandleCount >= 3)//this has been added to solve the defect no 0001515
                                                {
                                                    arg["Save"]     = true;
                                                    arg["IsViewed"] = false;
                                                }
                                                else
                                                {
                                                    arg["Save"]     = false;
                                                    arg["IsViewed"] = true;
                                                }
                                                _eventHandler.Notify(_eventHandler.UpdateGlaucomaToolControls, arg);
                                            }
                                        }
                                        else
                                        {
                                            resizedObject.MoveHandleTo(point, resizedObjectHandle);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        resizedObject.MoveHandleTo(point, resizedObjectHandle);
                        Args arg = new Args();
                        arg["Save"]     = true;
                        arg["IsViewed"] = false;
                        _eventHandler.Notify(_eventHandler.AnnotationButtonsRefresh, arg);
                    }
                    drawArea.Refresh();
                    Rectangle handleRect = drawArea.ListGraphics[ControlIndx].GetHandleRectangle(5);

                    point.X = handleRect.X;
                    point.Y = handleRect.Y;
                    //drawArea.active_point = point;
                    ////ToolObject.text_move(drawArea, e);
                    //(drawArea.Controls[ControlIndx] as Panel).Location = drawArea.active_point;

                    //drawArea.Controls[ControlIndx].SendToBack();
                    //drawArea.Refresh();
                }
            }

            // move
            if (!AnnotationVariables.isGlaucomaTool)
            {
                if (selectMode == SelectionMode.Move)
                {
                    int n = drawArea.ListGraphics.SelectionCount;

                    for (int i = 0; i < n; i++)
                    {
                        drawArea.ListGraphics.GetSelectedObject(i).Move(dx, dy);
                        //if (i == 5)
                        //{
                        //    drawArea.active_point = drawArea.ListGraphics[i].GetHandleCursor(n).HotSpot;
                        //}
                    }
                    //This below if statement was added by Darshan on 25-08-2015 to solve Defect no 0000596: system is getting crashed.
                    if (n > 0)
                    {
                        Rectangle handleRect = drawArea.ListGraphics[ControlIndx].GetHandleRectangle(5);

                        point.X = handleRect.X;
                        point.Y = handleRect.Y;
                        drawArea.Refresh();

                        drawArea.active_point = point;
                    }
                    Args arg = new Args();
                    arg["Save"]     = true;
                    arg["IsViewed"] = false;
                    _eventHandler.Notify(_eventHandler.AnnotationButtonsRefresh, arg);
                    //drawArea.Location = new Point(point.X, point.Y);

                    //foreach (AnnotationText item in drawArea.Controls)
                    //{
                    //    item.Location = drawArea.active_point;
                    //}

                    // (drawArea.Controls[ControlIndx] as Panel).Location = drawArea.active_point;
                    // //ToolObject.text_move(drawArea, e);

                    // drawArea.Controls[ControlIndx].SendToBack();
                    // drawArea.Cursor = Cursors.SizeAll;
                    //drawArea.Refresh();
                }

                if (selectMode == SelectionMode.NetSelection)
                {
                    drawArea.NetRectangle = DrawRectangle.GetNormalizedRectangle(startPoint, lastPoint);
                    drawArea.Refresh();
                    return;
                }
            }
        }