// private /// <summary> /// Copy fields from this instance to cloned instance drawObject. /// Called from Clone functions of derived classes. /// </summary> /// <param name="drawObject">Object being cloned</param> protected void FillDrawObjectFields(DrawObject drawObject) { //drawObject.selected = selected; //drawObject.color = color; //drawObject.penWidth = penWidth; //drawObject.ID = ID; //drawObject._brushType = _brushType; //drawObject._penType = _penType; //drawObject.drawBrush = drawBrush; //drawObject.drawpen = drawpen; //drawObject.fillColor = fillColor; //drawObject._rotation = _rotation; //drawObject._center = _center; }
/// <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) { drawArea.UnselectAll(); o.Selected = true; o.Dirty = true; //int objectID = 0; // Set the object id now //objectID = +drawArea.Pages.GraphicPagesList[drawArea.PageNo].List.Count; //objectID++; //o.ID = objectID; o.oIndex = o.Parentpagelist.GetNewobjectoIndex(); drawArea.Pages.GraphicPagesList[drawArea.ActivePageNo].List.Add(o); drawArea.Pages.Dirty = true; drawArea.Capture = true; // Trace.WriteLine("drawArea.Capture = true"); drawArea.Refresh(); }
/// <summary> /// Returns (-1), (0), (+1) to represent the relative Z-order of the object being compared with this object /// </summary> /// <param name="obj">DrawObject that is compared to this object</param> /// <returns> (-1) if the object is less (further back) than this object. /// (0) if the object is equal to this object (same level graphically). /// (1) if the object is greater (closer to the front) than this object.</returns> public int CompareTo(object obj) { DrawObject d = obj as DrawObject; int x = 0; if (d != null) { if (d.oIndex == oIndex) { x = 0; } else if (d.oIndex > oIndex) { x = -1; } else { x = 1; } } return(x); }
/// <summary> /// Thanks to Member 3272353 for this fix to object ordering problem. /// </summary> /// <param name="obj"></param> public void Append(DrawObject obj) { graphicsList.Add(obj); }
/// <summary> /// Left mouse button is pressed /// </summary> /// <param name="drawArea"></param> /// <param name="e"></param> public override void OnMouseDown(DrawArea drawArea, MouseEventArgs e) { Point pointscroll = GetEventPointInArea(drawArea, e); commandChangeState = null; wasMove = false; selectMode = SelectionMode.None; Trace.WriteLine("ToolPointer OnMouseDown "); if (e.Button == MouseButtons.Left) { Point point; // if (drawArea.SnapEnable) { // point = drawArea.BackTrackMouse(new Point(drawArea.FittoSnap(e.X, drawArea.SnapX), drawArea.FittoSnap(e.Y, drawArea.SnapY))); } //else { point = drawArea.BackTrackMouse(pointscroll); } startPoint = point; lastPoint = point; FirstPoint = point; DrawObject o = null; int hittestresult = -1; for (int i = 0; i < drawArea.Pages.GraphicPagesList[drawArea.ActivePageNo].List.Count; i++) //foreach (DrawObject o in drawArea.Pages.GraphicPagesList[drawArea.ActivePageNo].List) { o = drawArea.Pages.GraphicPagesList[drawArea.ActivePageNo].List[i]; if (drawArea.Pages.LayerIsNotLock((LAYERS)o.Layer)) { hittestresult = o.HitTest(point); if (hittestresult != -1) { #if EWSAPP Trace.WriteLine("ToolPointer OnMouseDown Click over an object"); if (o.Selected) // object was selected { Trace.WriteLine("ToolPointer OnMouseDown object was selected"); if (hittestresult > 0) // over control points { Console.WriteLine("ToolPointer OnMouseDown over control points e.x {0} e.y {1} First.x {2} First.y {3}", o.rectangle.X, o.rectangle.Y, FirstPoint.X, FirstPoint.Y); selectMode = SelectionMode.Size; resizedObject = o; resizedObjectHandle = hittestresult; // Since we want to resize only one object, unselect all other objects drawArea.UnselectAll(); o.Selected = true; commandChangeState = new CommandChangeState(drawArea.Pages.GraphicPagesList[drawArea.ActivePageNo]); drawArea.Pages.Dirty = true; } else // clicked inside object { Trace.WriteLine("ToolPointer OnMouseDown clicked inside object "); //drawArea.Graphics.UnselectAll(); selectMode = SelectionMode.Move; drawArea.Cursor = Cursors.SizeAll; startPoint = point; } } else // object was not selected { Trace.WriteLine("ToolPointer OnMouseDown object was not selected "); if ((Control.ModifierKeys & Keys.Control) == 0) { drawArea.UnselectAll(); } o.Selected = true; DCS.Forms.MainForm.Instance().m_propertyGrid.SelectedObject = o; DCS.Forms.MainForm.Instance().m_propertyGrid.Refresh(); commandChangeState = new CommandChangeState(drawArea.Pages.GraphicPagesList[drawArea.ActivePageNo]); selectMode = SelectionMode.Move; drawArea.Cursor = Cursors.SizeAll; drawArea.Refresh(); } break; #endif } } } if (hittestresult == -1) // not clicked over any objet { Trace.WriteLine("ToolPointer OnMouseDown not clicked over an objet "); selectMode = SelectionMode.NetSelection; if ((Control.ModifierKeys & Keys.Control) == 0) { drawArea.UnselectAll(); } } } else { } }
/// <summary> /// Right mouse button is released /// </summary> /// <param name="drawArea"></param> /// <param name="e"></param> public override void OnMouseUp(DrawArea drawArea, MouseEventArgs e) { #if EWSAPP int newx; int newy; switch (selectMode) { case SelectionMode.NetSelection: Trace.WriteLine("ToolPointer OnMouseUp MouseButtons.Left SelectionMode.NetSelection"); drawArea.Pages.SelectInRectangle(drawArea.NetRectangle); selectMode = SelectionMode.None; drawArea.DrawNetRectangle = false; if (resizedObject != null) { // after resizing resizedObject.Normalize(); resizedObject = null; } drawArea.Capture = false; drawArea.Refresh(); if (commandChangeState != null && wasMove) { // Keep state after moving/resizing and add command to history commandChangeState.NewState(drawArea.Pages.GraphicPagesList[drawArea.ActivePageNo]); drawArea.Pages.AddCommandToHistory(commandChangeState); commandChangeState = null; } lastPoint = drawArea.BackTrackMouse(e.Location); break; case SelectionMode.Size: Trace.WriteLine("ToolPointer OnMouseUp MouseButtons.Left SelectionMode.Size"); break; case SelectionMode.Move: newx = e.X - FirstPoint.X; newy = e.Y - FirstPoint.Y; //newx = drawArea.FittoSnap(e.X, drawArea.SnapX); //newy = drawArea.FittoSnap(e.Y, drawArea.SnapY); if ((newx != 0) || (newy != 0)) { if (drawArea.SnapEnable) { foreach (DrawObject o in drawArea.Pages.GraphicPagesList[drawArea.ActivePageNo].Selection) { //o.MoveTo(drawArea.FittoSnap(o._rectangle.X + newx, drawArea.SnapX), drawArea.FittoSnap(o._rectangle.Y + newy, drawArea.SnapY)); int _x = o.rectangle.X; _x = o.rectangle.X + newx; _x = drawArea.FittoSnap(o.rectangle.X, drawArea.SnapX); int _y = o.rectangle.Y; _y = o.rectangle.Y + newy; _y = drawArea.FittoSnap(o.rectangle.Y, drawArea.SnapY); o.MoveTo(_x, _y); if ((o is DrawFBDBox)) { ((DrawFBDBox)o).UpdateWireConnections(); } } } drawArea.Cursor = Cursors.SizeAll; drawArea.Refresh(); drawArea.Pages.Dirty = true; } break; default: break; } selectMode = SelectionMode.None; drawArea.Cursor = Cursors.Default; #endif }
public void AddnewObject(DrawObject o) { parentTabGraphicPageControl.AddnewObject(o); }