using System.Windows.Forms; namespace CraftSynth.ImageEditor { /// /// Base class for all tools which create new graphic object /// internal abstract class ToolObject : Tool { private Cursor cursor; /// /// Tool cursor. /// protected Cursor Cursor { get { return cursor; } set { cursor = value; } } /// /// Left mouse is released. /// New object is created and resized. /// /// /// public override void OnMouseUp(DrawArea drawArea, MouseEventArgs e) { int al = drawArea.TheLayers.ActiveLayerIndex; if (drawArea.TheLayers[al].Graphics.Count > 0) drawArea.TheLayers[al].Graphics[0].Normalize(); //drawArea.ActiveTool = DrawArea.DrawToolType.Pointer; drawArea.Capture = false; drawArea.Refresh(); } /// /// Add new object to draw area. /// Function is called when user left-clicks draw area, /// and one of ToolObject-derived tools is active. /// /// /// protected void AddNewObject(DrawArea drawArea, DrawObject o) { int al = drawArea.TheLayers.ActiveLayerIndex; drawArea.TheLayers[al].Graphics.UnselectAll(); o.Selected = true; o.Dirty = true; int objectID = 0; // Set the object id now for (int i = 0; i < drawArea.TheLayers.Count; i++) { objectID = +drawArea.TheLayers[i].Graphics.Count; } objectID++; o.ID = objectID; drawArea.TheLayers[al].Graphics.Add(o); drawArea.Capture = true; drawArea.Refresh(); } #region Destruction private bool _disposed = false; protected override void Dispose(bool disposing) { if (!this._disposed) { if (disposing) { // Free any managed objects here. if (this.cursor != null) { this.cursor.Dispose(); } } // Free any unmanaged objects here. this._disposed = true; } base.Dispose(disposing); } ~ToolObject() { this.Dispose(false); } #endregion } }