// BitmapFontEd // Copyright (C) 2005 Ian Cowburn // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // // $Id$ // using System; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; using System.Windows.Forms; using System.Text; using System.IO; namespace BitmapFontEd { /// /// Description of MainForm. /// public class MainForm : System.Windows.Forms.Form { private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label1; private System.Windows.Forms.MenuItem m_helpMenu; private System.Windows.Forms.NumericUpDown m_codeSelect; private System.Windows.Forms.GroupBox m_globaladjustGroup; private System.Windows.Forms.GroupBox m_adjustGroup; private System.Windows.Forms.Button m_scrollDown; private System.Windows.Forms.Button m_scrollUp; private System.Windows.Forms.MenuItem m_break1; private System.Windows.Forms.MenuItem m_fileMenu; private System.Windows.Forms.Button m_mirrorVertical; private System.Windows.Forms.Button m_rotRight; private System.Windows.Forms.Button m_revert; private System.Windows.Forms.Button m_dropShadow; private System.Windows.Forms.MenuItem m_about; private System.Windows.Forms.Label label3; private System.Windows.Forms.Button m_scrollRight; private System.Windows.Forms.CheckBox m_applyAll; private System.Windows.Forms.Button m_grabFont; private System.Windows.Forms.Label label6; private System.Windows.Forms.Button m_rotLeft; private System.Windows.Forms.Label label4; private System.Windows.Forms.TrackBar m_charSelect; private System.Windows.Forms.MainMenu m_menu; private System.Windows.Forms.Button m_resize; private System.Windows.Forms.ComboBox m_asciiSelect; private System.Windows.Forms.Button m_edge; private System.Windows.Forms.MenuItem m_quit; private System.Windows.Forms.MenuItem m_save; private System.Windows.Forms.Label label5; private System.Windows.Forms.MenuItem m_saveAs; private System.Windows.Forms.Button m_scrollLeft; private System.Windows.Forms.GroupBox m_editGroup; private System.Windows.Forms.MenuItem m_new; private System.Windows.Forms.MenuItem m_open; private System.Windows.Forms.Button m_mirrorHorizontal; private System.Windows.Forms.GroupBox m_selectGroup; private System.Windows.Forms.Button m_clear; private GfxEditor m_edit; private BitmapCharList m_chars; private int m_selected; private bool m_inSelect; private string m_path; private DropShadowForm m_shadowForm; private Color m_glowCol=Color.White; public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // Trying to add this in the designer seems to mess up quite a bit. // m_edit=new GfxEditor(); m_edit.Location=new Point(4,16); m_editGroup.Controls.Add(m_edit); m_shadowForm=new DropShadowForm(); m_chars=new BitmapCharList(); for(byte c=32;c<127;c++) { switch(c) { case 32: m_asciiSelect.Items.Add("Space"); break; case 127: m_asciiSelect.Items.Add("DEL"); break; default: m_asciiSelect.Items.Add (Encoding.ASCII.GetString(new byte[] {c})); break; } } m_path=""; m_save.Enabled=false; m_selected=0; SelectChar(0); } [STAThread] public static void Main(string[] args) { Application.Run(new MainForm()); } #region Windows Forms Designer generated code /// /// This method is required for Windows Forms designer support. /// Do not change the method contents inside the source code editor. The Forms designer might /// not be able to load this method if it was changed manually. /// private void InitializeComponent() { this.m_clear = new System.Windows.Forms.Button(); this.m_selectGroup = new System.Windows.Forms.GroupBox(); this.m_mirrorHorizontal = new System.Windows.Forms.Button(); this.m_open = new System.Windows.Forms.MenuItem(); this.m_new = new System.Windows.Forms.MenuItem(); this.m_editGroup = new System.Windows.Forms.GroupBox(); this.m_scrollLeft = new System.Windows.Forms.Button(); this.m_saveAs = new System.Windows.Forms.MenuItem(); this.label5 = new System.Windows.Forms.Label(); this.m_save = new System.Windows.Forms.MenuItem(); this.m_quit = new System.Windows.Forms.MenuItem(); this.m_edge = new System.Windows.Forms.Button(); this.m_asciiSelect = new System.Windows.Forms.ComboBox(); this.m_resize = new System.Windows.Forms.Button(); this.m_menu = new System.Windows.Forms.MainMenu(); this.m_charSelect = new System.Windows.Forms.TrackBar(); this.label4 = new System.Windows.Forms.Label(); this.m_rotLeft = new System.Windows.Forms.Button(); this.label6 = new System.Windows.Forms.Label(); this.m_grabFont = new System.Windows.Forms.Button(); this.m_applyAll = new System.Windows.Forms.CheckBox(); this.m_scrollRight = new System.Windows.Forms.Button(); this.label3 = new System.Windows.Forms.Label(); this.m_about = new System.Windows.Forms.MenuItem(); this.m_dropShadow = new System.Windows.Forms.Button(); this.m_revert = new System.Windows.Forms.Button(); this.m_rotRight = new System.Windows.Forms.Button(); this.m_mirrorVertical = new System.Windows.Forms.Button(); this.m_fileMenu = new System.Windows.Forms.MenuItem(); this.m_break1 = new System.Windows.Forms.MenuItem(); this.m_scrollUp = new System.Windows.Forms.Button(); this.m_scrollDown = new System.Windows.Forms.Button(); this.m_adjustGroup = new System.Windows.Forms.GroupBox(); this.m_globaladjustGroup = new System.Windows.Forms.GroupBox(); this.m_codeSelect = new System.Windows.Forms.NumericUpDown(); this.m_helpMenu = new System.Windows.Forms.MenuItem(); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.m_selectGroup.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.m_charSelect)).BeginInit(); this.m_adjustGroup.SuspendLayout(); this.m_globaladjustGroup.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.m_codeSelect)).BeginInit(); this.SuspendLayout(); // // m_clear // this.m_clear.Location = new System.Drawing.Point(8, 40); this.m_clear.Name = "m_clear"; this.m_clear.Size = new System.Drawing.Size(96, 24); this.m_clear.TabIndex = 3; this.m_clear.Text = "Clear"; this.m_clear.Click += new System.EventHandler(this.OnClear); // // m_selectGroup // this.m_selectGroup.Controls.Add(this.m_codeSelect); this.m_selectGroup.Controls.Add(this.m_asciiSelect); this.m_selectGroup.Controls.Add(this.m_revert); this.m_selectGroup.Controls.Add(this.m_charSelect); this.m_selectGroup.Controls.Add(this.label2); this.m_selectGroup.Controls.Add(this.label1); this.m_selectGroup.Location = new System.Drawing.Point(8, 344); this.m_selectGroup.Name = "m_selectGroup"; this.m_selectGroup.Size = new System.Drawing.Size(408, 104); this.m_selectGroup.TabIndex = 1; this.m_selectGroup.TabStop = false; this.m_selectGroup.Text = "Character"; // // m_mirrorHorizontal // this.m_mirrorHorizontal.Location = new System.Drawing.Point(8, 88); this.m_mirrorHorizontal.Name = "m_mirrorHorizontal"; this.m_mirrorHorizontal.Size = new System.Drawing.Size(96, 24); this.m_mirrorHorizontal.TabIndex = 5; this.m_mirrorHorizontal.Text = "Horizontal"; this.m_mirrorHorizontal.Click += new System.EventHandler(this.OnHorizontalMirror); // // m_open // this.m_open.Index = 1; this.m_open.Shortcut = System.Windows.Forms.Shortcut.CtrlO; this.m_open.Text = "&Open"; this.m_open.Click += new System.EventHandler(this.OnOpen); // // m_new // this.m_new.Index = 0; this.m_new.Shortcut = System.Windows.Forms.Shortcut.CtrlN; this.m_new.Text = "&New"; this.m_new.Click += new System.EventHandler(this.OnNew); // // m_editGroup // this.m_editGroup.Location = new System.Drawing.Point(8, 8); this.m_editGroup.Name = "m_editGroup"; this.m_editGroup.Size = new System.Drawing.Size(408, 328); this.m_editGroup.TabIndex = 1; this.m_editGroup.TabStop = false; this.m_editGroup.Text = "Editor"; // // m_scrollLeft // this.m_scrollLeft.Location = new System.Drawing.Point(8, 136); this.m_scrollLeft.Name = "m_scrollLeft"; this.m_scrollLeft.Size = new System.Drawing.Size(96, 24); this.m_scrollLeft.TabIndex = 8; this.m_scrollLeft.Text = "Left"; this.m_scrollLeft.Click += new System.EventHandler(this.OnLeftScroll); // // m_saveAs // this.m_saveAs.Index = 3; this.m_saveAs.Shortcut = System.Windows.Forms.Shortcut.F12; this.m_saveAs.Text = "S&ave as..."; this.m_saveAs.Click += new System.EventHandler(this.OnSaveAs); // // label5 // this.label5.Location = new System.Drawing.Point(8, 200); this.label5.Name = "label5"; this.label5.Size = new System.Drawing.Size(72, 16); this.label5.TabIndex = 11; this.label5.Text = "Rotate"; this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // m_save // this.m_save.Index = 2; this.m_save.Shortcut = System.Windows.Forms.Shortcut.CtrlS; this.m_save.Text = "&Save"; this.m_save.Click += new System.EventHandler(this.OnSave); // // m_quit // this.m_quit.Index = 5; this.m_quit.Shortcut = System.Windows.Forms.Shortcut.CtrlQ; this.m_quit.Text = "&Quit"; this.m_quit.Click += new System.EventHandler(this.OnQuit); // // m_edge // this.m_edge.Location = new System.Drawing.Point(112, 272); this.m_edge.Name = "m_edge"; this.m_edge.Size = new System.Drawing.Size(96, 24); this.m_edge.TabIndex = 17; this.m_edge.Text = "Edge"; this.m_edge.Click += new System.EventHandler(this.OnEdge); // // m_asciiSelect // this.m_asciiSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.m_asciiSelect.Location = new System.Drawing.Point(224, 64); this.m_asciiSelect.MaxDropDownItems = 20; this.m_asciiSelect.Name = "m_asciiSelect"; this.m_asciiSelect.Size = new System.Drawing.Size(64, 21); this.m_asciiSelect.TabIndex = 9; this.m_asciiSelect.SelectedIndexChanged += new System.EventHandler(this.OnSelectByChar); // // m_resize // this.m_resize.Location = new System.Drawing.Point(8, 16); this.m_resize.Name = "m_resize"; this.m_resize.Size = new System.Drawing.Size(88, 24); this.m_resize.TabIndex = 1; this.m_resize.Text = "Resize All"; this.m_resize.Click += new System.EventHandler(this.OnResize); // // m_menu // this.m_menu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.m_fileMenu, this.m_helpMenu}); // // m_charSelect // this.m_charSelect.Location = new System.Drawing.Point(8, 16); this.m_charSelect.Maximum = 94; this.m_charSelect.Name = "m_charSelect"; this.m_charSelect.Size = new System.Drawing.Size(392, 42); this.m_charSelect.TabIndex = 6; this.m_charSelect.Scroll += new System.EventHandler(this.OnSelectChar); // // label4 // this.label4.Location = new System.Drawing.Point(8, 120); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(72, 16); this.label4.TabIndex = 6; this.label4.Text = "Scroll"; this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // m_rotLeft // this.m_rotLeft.Location = new System.Drawing.Point(8, 216); this.m_rotLeft.Name = "m_rotLeft"; this.m_rotLeft.Size = new System.Drawing.Size(96, 24); this.m_rotLeft.TabIndex = 13; this.m_rotLeft.Text = "Left"; this.m_rotLeft.Click += new System.EventHandler(this.OnRotateLeft); // // label6 // this.label6.Location = new System.Drawing.Point(8, 256); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(88, 16); this.label6.TabIndex = 14; this.label6.Text = "Special Effects"; this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // m_grabFont // this.m_grabFont.Location = new System.Drawing.Point(8, 304); this.m_grabFont.Name = "m_grabFont"; this.m_grabFont.Size = new System.Drawing.Size(96, 24); this.m_grabFont.TabIndex = 18; this.m_grabFont.Text = "Grab Font"; this.m_grabFont.Click += new System.EventHandler(this.OnGrabFont); // // m_applyAll // this.m_applyAll.Location = new System.Drawing.Point(8, 16); this.m_applyAll.Name = "m_applyAll"; this.m_applyAll.Size = new System.Drawing.Size(88, 16); this.m_applyAll.TabIndex = 1; this.m_applyAll.Text = "Apply To All"; // // m_scrollRight // this.m_scrollRight.Location = new System.Drawing.Point(112, 136); this.m_scrollRight.Name = "m_scrollRight"; this.m_scrollRight.Size = new System.Drawing.Size(96, 24); this.m_scrollRight.TabIndex = 9; this.m_scrollRight.Text = "Right"; this.m_scrollRight.Click += new System.EventHandler(this.OnRightScroll); // // label3 // this.label3.Location = new System.Drawing.Point(8, 72); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(72, 16); this.label3.TabIndex = 3; this.label3.Text = "Mirror"; this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // m_about // this.m_about.Index = 0; this.m_about.Text = "&About"; this.m_about.Click += new System.EventHandler(this.OnAbout); // // m_dropShadow // this.m_dropShadow.Location = new System.Drawing.Point(8, 272); this.m_dropShadow.Name = "m_dropShadow"; this.m_dropShadow.Size = new System.Drawing.Size(96, 24); this.m_dropShadow.TabIndex = 16; this.m_dropShadow.Text = "Drop Shadow"; this.m_dropShadow.Click += new System.EventHandler(this.OnDropShadow); // // m_revert // this.m_revert.Location = new System.Drawing.Point(304, 64); this.m_revert.Name = "m_revert"; this.m_revert.Size = new System.Drawing.Size(88, 24); this.m_revert.TabIndex = 7; this.m_revert.Text = "Revert"; this.m_revert.Click += new System.EventHandler(this.OnRevert); // // m_rotRight // this.m_rotRight.Location = new System.Drawing.Point(112, 216); this.m_rotRight.Name = "m_rotRight"; this.m_rotRight.Size = new System.Drawing.Size(96, 24); this.m_rotRight.TabIndex = 14; this.m_rotRight.Text = "Right"; this.m_rotRight.Click += new System.EventHandler(this.OnRotateRight); // // m_mirrorVertical // this.m_mirrorVertical.Location = new System.Drawing.Point(112, 88); this.m_mirrorVertical.Name = "m_mirrorVertical"; this.m_mirrorVertical.Size = new System.Drawing.Size(96, 24); this.m_mirrorVertical.TabIndex = 6; this.m_mirrorVertical.Text = "Vertical"; this.m_mirrorVertical.Click += new System.EventHandler(this.OnVerticalMirror); // // m_fileMenu // this.m_fileMenu.Index = 0; this.m_fileMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.m_new, this.m_open, this.m_save, this.m_saveAs, this.m_break1, this.m_quit}); this.m_fileMenu.Text = "&File"; // // m_break1 // this.m_break1.Index = 4; this.m_break1.Text = "-"; // // m_scrollUp // this.m_scrollUp.Location = new System.Drawing.Point(8, 168); this.m_scrollUp.Name = "m_scrollUp"; this.m_scrollUp.Size = new System.Drawing.Size(96, 24); this.m_scrollUp.TabIndex = 10; this.m_scrollUp.Text = "Up"; this.m_scrollUp.Click += new System.EventHandler(this.OnUpScroll); // // m_scrollDown // this.m_scrollDown.Location = new System.Drawing.Point(112, 168); this.m_scrollDown.Name = "m_scrollDown"; this.m_scrollDown.Size = new System.Drawing.Size(96, 24); this.m_scrollDown.TabIndex = 11; this.m_scrollDown.Text = "Down"; this.m_scrollDown.Click += new System.EventHandler(this.OnDownScroll); // // m_adjustGroup // this.m_adjustGroup.Controls.Add(this.m_grabFont); this.m_adjustGroup.Controls.Add(this.m_edge); this.m_adjustGroup.Controls.Add(this.m_dropShadow); this.m_adjustGroup.Controls.Add(this.label6); this.m_adjustGroup.Controls.Add(this.m_rotRight); this.m_adjustGroup.Controls.Add(this.m_rotLeft); this.m_adjustGroup.Controls.Add(this.label5); this.m_adjustGroup.Controls.Add(this.m_scrollDown); this.m_adjustGroup.Controls.Add(this.m_scrollUp); this.m_adjustGroup.Controls.Add(this.m_scrollRight); this.m_adjustGroup.Controls.Add(this.m_scrollLeft); this.m_adjustGroup.Controls.Add(this.label4); this.m_adjustGroup.Controls.Add(this.m_mirrorVertical); this.m_adjustGroup.Controls.Add(this.m_mirrorHorizontal); this.m_adjustGroup.Controls.Add(this.label3); this.m_adjustGroup.Controls.Add(this.m_clear); this.m_adjustGroup.Controls.Add(this.m_applyAll); this.m_adjustGroup.Location = new System.Drawing.Point(424, 64); this.m_adjustGroup.Name = "m_adjustGroup"; this.m_adjustGroup.Size = new System.Drawing.Size(216, 384); this.m_adjustGroup.TabIndex = 3; this.m_adjustGroup.TabStop = false; this.m_adjustGroup.Text = "Adjustments and Effects"; // // m_globaladjustGroup // this.m_globaladjustGroup.Controls.Add(this.m_resize); this.m_globaladjustGroup.Location = new System.Drawing.Point(424, 8); this.m_globaladjustGroup.Name = "m_globaladjustGroup"; this.m_globaladjustGroup.Size = new System.Drawing.Size(216, 48); this.m_globaladjustGroup.TabIndex = 2; this.m_globaladjustGroup.TabStop = false; this.m_globaladjustGroup.Text = "Global Adjustments"; // // m_codeSelect // this.m_codeSelect.Location = new System.Drawing.Point(88, 64); this.m_codeSelect.Maximum = new System.Decimal(new int[] { 126, 0, 0, 0}); this.m_codeSelect.Minimum = new System.Decimal(new int[] { 32, 0, 0, 0}); this.m_codeSelect.Name = "m_codeSelect"; this.m_codeSelect.ReadOnly = true; this.m_codeSelect.Size = new System.Drawing.Size(64, 20); this.m_codeSelect.TabIndex = 10; this.m_codeSelect.Value = new System.Decimal(new int[] { 32, 0, 0, 0}); this.m_codeSelect.ValueChanged += new System.EventHandler(this.OnSelectByCode); // // m_helpMenu // this.m_helpMenu.Index = 1; this.m_helpMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.m_about}); this.m_helpMenu.Text = "&Help"; // // label1 // this.label1.Location = new System.Drawing.Point(16, 64); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(72, 24); this.label1.TabIndex = 1; this.label1.Text = "ASCII Code:"; this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // label2 // this.label2.Location = new System.Drawing.Point(160, 64); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(72, 24); this.label2.TabIndex = 3; this.label2.Text = "Character:"; this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // MainForm // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(650, 479); this.Controls.Add(this.m_adjustGroup); this.Controls.Add(this.m_globaladjustGroup); this.Controls.Add(this.m_selectGroup); this.Controls.Add(this.m_editGroup); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.Menu = this.m_menu; this.MinimumSize = new System.Drawing.Size(648, 504); this.Name = "MainForm"; this.Text = "Bitmap Font Editor"; this.Closing += new System.ComponentModel.CancelEventHandler(this.OnClosing); this.m_selectGroup.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.m_charSelect)).EndInit(); this.m_adjustGroup.ResumeLayout(false); this.m_globaladjustGroup.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.m_codeSelect)).EndInit(); this.ResumeLayout(false); } #endregion private bool EditChanged { get {return m_edit.BitmapChar!=null && m_edit.BitmapChar.Changed;} } private bool ChangesAllowed { get {return (!m_chars.Changed && !EditChanged) || Util.YesNo("Abandon changes?");} } void OnAbout(object sender, System.EventArgs e) { Util.About(); } void OnNew(object sender, System.EventArgs e) { if (ChangesAllowed) { m_chars=new BitmapCharList(); m_edit.BitmapChar=new BitmapChar(); OnSelectChar(null,null); m_save.Enabled=false; } } void OnOpen(object sender, System.EventArgs e) { if (ChangesAllowed) { OpenFileDialog fsel=new OpenFileDialog(); fsel.FileName=m_path; fsel.Filter="Bitmap Font Files (*.bmf)|*.bmf|All files (*.*)|*.*"; if (fsel.ShowDialog()==DialogResult.OK) { using(FileStream str=File.Open(fsel.FileName,FileMode.Open)) { try { m_chars=BitmapCharList.Input(str); m_path=fsel.FileName; m_save.Enabled=true; str.Close(); } catch (Exception ex) { Util.Error("Error opening " + fsel.FileName + ":\n" + ex.Message); } } } m_edit.BitmapChar=m_chars[m_selected]; } } void OnSave(object sender, System.EventArgs e) { FetchEdit(); using(FileStream str=File.Open(m_path,FileMode.Create)) { try { m_chars.Output(str); str.Close(); } catch (Exception ex) { Util.Error("Error writing " + m_path + ":\n" + ex.Message); } } } void OnSaveAs(object sender, System.EventArgs e) { SaveFileDialog fsel=new SaveFileDialog(); fsel.FileName=m_path; fsel.Filter="Bitmap Font Files (*.bmf)|*.bmf|All files (*.*)|*.*"; if (fsel.ShowDialog()==DialogResult.OK) { FetchEdit(); using(FileStream str=File.Open(fsel.FileName,FileMode.Create)) { try { m_chars.Output(str); m_path=fsel.FileName; str.Close(); } catch (Exception ex) { Util.Error("Error writing " + fsel.FileName + ":\n" + ex.Message); } } } } void OnQuit(object sender, System.EventArgs e) { Close(); } void OnClosing(object sender, System.ComponentModel.CancelEventArgs e) { if (!ChangesAllowed) { e.Cancel=true; } } private void FetchEdit() { if (EditChanged) { m_chars[m_selected]=m_edit.BitmapChar; } } private void SelectChar(int sel) { m_inSelect=true; FetchEdit(); m_selected=sel; m_charSelect.Value=sel; m_codeSelect.Value=sel+32; m_asciiSelect.SelectedIndex=sel; m_edit.BitmapChar=new BitmapChar(m_chars[m_selected]); m_inSelect=false; } void OnSelectByCode(object sender, System.EventArgs e) { if (!m_inSelect) { SelectChar(Convert.ToInt32(m_codeSelect.Value)-32); } } void OnSelectByChar(object sender, System.EventArgs e) { if (!m_inSelect) { SelectChar(m_asciiSelect.SelectedIndex); } } void OnSelectChar(object sender, System.EventArgs e) { if (!m_inSelect) { SelectChar(m_charSelect.Value); } } void OnRevert(object sender, System.EventArgs e) { m_edit.BitmapChar=new BitmapChar(m_chars[m_selected]); } void OnResize(object sender, System.EventArgs e) { int w=m_edit.CharWidth; int h=m_edit.CharHeight; if (Util.YesNo("Sure you want to resize all characters to " + w + " by " + h)) { foreach (BitmapChar c in m_chars) { c.Resize(w,h); } } } void OnClear(object sender, System.EventArgs e) { FetchEdit(); if (m_applyAll.Checked) { if (Util.YesNo("Clear ALL Characters?")) { foreach (BitmapChar c in m_chars) { c.Clear(m_edit.SelectedBackground); } } } else { m_chars[m_selected].Clear(m_edit.SelectedBackground); } m_edit.BitmapChar=new BitmapChar(m_chars[m_selected]); } void OnHorizontalMirror(object sender, System.EventArgs e) { FetchEdit(); if (m_applyAll.Checked) { foreach (BitmapChar c in m_chars) { c.MirrorHorizontal(); } } else { m_chars[m_selected].MirrorHorizontal(); } m_edit.BitmapChar=new BitmapChar(m_chars[m_selected]); } void OnVerticalMirror(object sender, System.EventArgs e) { FetchEdit(); if (m_applyAll.Checked) { foreach (BitmapChar c in m_chars) { c.MirrorVertical(); } } else { m_chars[m_selected].MirrorVertical(); } m_edit.BitmapChar=new BitmapChar(m_chars[m_selected]); } private void Scroll(int dx, int dy) { FetchEdit(); if (m_applyAll.Checked) { foreach (BitmapChar c in m_chars) { c.Scroll(dx,dy); } } else { m_chars[m_selected].Scroll(dx,dy); } m_edit.BitmapChar=new BitmapChar(m_chars[m_selected]); } void OnLeftScroll(object sender, System.EventArgs e) { Scroll(-1,0); } void OnRightScroll(object sender, System.EventArgs e) { Scroll(1,0); } void OnUpScroll(object sender, System.EventArgs e) { Scroll(0,-1); } void OnDownScroll(object sender, System.EventArgs e) { Scroll(0,1); } void OnRotateLeft(object sender, System.EventArgs e) { FetchEdit(); if (m_applyAll.Checked) { foreach (BitmapChar c in m_chars) { c.RotateLeft(); } } else { m_chars[m_selected].RotateLeft(); } m_edit.BitmapChar=new BitmapChar(m_chars[m_selected]); } void OnRotateRight(object sender, System.EventArgs e) { FetchEdit(); if (m_applyAll.Checked) { foreach (BitmapChar c in m_chars) { c.RotateRight(); } } else { m_chars[m_selected].RotateRight(); } m_edit.BitmapChar=new BitmapChar(m_chars[m_selected]); } void OnDropShadow(object sender, System.EventArgs e) { if (m_shadowForm.ShowDialog()==DialogResult.OK) { DropShadowForm.Shadow shadow=m_shadowForm.ShadowSize; Color col=m_shadowForm.ShadowColour; FetchEdit(); if (m_applyAll.Checked) { foreach (BitmapChar c in m_chars) { c.DropShadow(shadow.DX,shadow.DY,col); } } else { m_chars[m_selected].DropShadow(shadow.DX,shadow.DY,col); } m_edit.BitmapChar=new BitmapChar(m_chars[m_selected]); } } void OnEdge(object sender, System.EventArgs e) { AlphaColourDialog d=new AlphaColourDialog("Select Glow Colour"); d.Color=m_glowCol; if (d.ShowDialog()==DialogResult.OK) { m_glowCol=d.Color; FetchEdit(); if (m_applyAll.Checked) { foreach (BitmapChar c in m_chars) { c.Edge(m_glowCol); } } else { m_chars[m_selected].Edge(m_glowCol); } m_edit.BitmapChar=new BitmapChar(m_chars[m_selected]); } } private void GrabChar(Bitmap bmp, BitmapChar c) { int x,y; int mx,my; c.Clear(m_edit.BackColor); mx=Int32.MinValue; my=Int32.MinValue; for(y=0;y