QuickImage – Rev 1

Subversion Repositories:
Rev:
using System.Drawing;
using System.Windows.Forms;

namespace CraftSynth.ImageEditor
{
        /// <summary>
        /// Rectangle tool
        /// </summary>
        internal class ToolText : ToolObject
        {
                public ToolText()
                {
                        Cursor = new Cursor(GetType(), "Rectangle.cur");
                }

                public override void OnMouseDown(DrawArea drawArea, MouseEventArgs e)
                {
                        TextDialog td = new TextDialog();
                        td.TopLevel = true;
                        td.TopMost = true;
                        td.TheColor = drawArea.LineColor;
                        td.TheText = _lastText ?? "";
                        td.TheFont = _lastFont ?? new Font(FontFamily.GenericSansSerif, 12, FontStyle.Regular);
                        td.Zoom = drawArea.Zoom;
                        td.StartPosition = FormStartPosition.Manual;
                        Point pnlLocationOnScreen = drawArea.MyParent.pnlDrawArea.PointToScreen(new Point(0, 0));
                        Point pp = e.Location;
                        pp = new Point(
                                pnlLocationOnScreen.X+pp.X //hit point on screen
                                -18-SystemInformation.Border3DSize.Width-SystemInformation.SizingBorderWidth //-text box location
                                +drawArea.Left //+scroll amount
                                ,
                                pnlLocationOnScreen.Y+pp.Y //hit point on screen
                                -18-SystemInformation.Border3DSize.Height-SystemInformation.SizingBorderWidth -SystemInformation.CaptionHeight //-text box location
                                +drawArea.Top //+scroll amount
                                );
                        td.Location = pp;
                        if (td.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(td.Text))
                        {
                                _lastText = td.TheText;
                                _lastFont = td.TheFont;
                                string t = td.TheText;
                                Color c = td.TheColor;
                                Font f = td.TheFont;
                                Point p = drawArea.MyParent.PointToClient(td.Location);
                                p = new Point(p.X+17-drawArea.Left,p.Y+15-drawArea.Top);
                                p = drawArea.BackTrackMouse(p);
                                AddNewObject(drawArea, new DrawText(p.X, p.Y, t, f, c));

                                int al = drawArea.TheLayers.ActiveLayerIndex;
                        drawArea.AddCommandToHistory(new CommandAdd(drawArea.TheLayers[al].Graphics[0]));

                                drawArea.ActiveTool = DrawArea.DrawToolType.Pointer;
                        }
                }

                private static string _lastText;
                private static Font _lastFont;

                public override void OnMouseMove(DrawArea drawArea, MouseEventArgs e)
                {
                        drawArea.Cursor = Cursor;
                        if (e.Button == MouseButtons.Left)
                        {
                                Point point = drawArea.BackTrackMouse(new Point(e.X, e.Y));
                                int al = drawArea.TheLayers.ActiveLayerIndex;
                                drawArea.TheLayers[al].Graphics[0].MoveHandleTo(point, 5);
                                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 (_lastFont != null)
                                        {
                                                _lastFont.Dispose();
                                                _lastFont = null;
                                        }
                                }

                                // Free any unmanaged objects here. 
                                
                                this._disposed = true;
                        }
                        base.Dispose(disposing);
                }

                ~ToolText()
                {
                         this.Dispose(false);
                }
                #endregion
        }
}

Generated by GNU Enscript 1.6.5.90.