From 33017193d2ca0b7b18e65526f93feb2fe3bfec46 Mon Sep 17 00:00:00 2001 From: Ian C <ianc@noddybox.co.uk> Date: Sat, 21 May 2005 01:28:48 +0000 Subject: Changed so that editing allows alpha to be used. Font import still not working correctly. --- AlphaColourDialog.cs | 508 +++++++++++++++++++++++++++++++ BitmapChar.cs | 48 ++- BitmapFontEd.AlphaColourDialog.resources | Bin 0 -> 12357 bytes BitmapFontEd.GfxEditor.resources | Bin 13351 -> 14416 bytes BitmapFontEd.prjx | 7 +- DropShadowForm.cs | 3 +- GfxEditor.cs | 217 ++++++++----- MainForm.cs | 41 ++- Util.cs | 5 - 9 files changed, 697 insertions(+), 132 deletions(-) create mode 100644 AlphaColourDialog.cs create mode 100644 BitmapFontEd.AlphaColourDialog.resources diff --git a/AlphaColourDialog.cs b/AlphaColourDialog.cs new file mode 100644 index 0000000..87faf69 --- /dev/null +++ b/AlphaColourDialog.cs @@ -0,0 +1,508 @@ +// XXX - YYY +// Copyright (C) 200X 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.Windows.Forms; + +namespace BitmapFontEd +{ + /// <summary> + /// Description of AlphaColourDialog. + /// </summary> + public class AlphaColourDialog : System.Windows.Forms.Form + { + private System.Windows.Forms.Label m_common7; + private System.Windows.Forms.Label m_common4; + private System.Windows.Forms.Label m_common5; + private System.Windows.Forms.Label m_common3; + private System.Windows.Forms.TextBox m_red; + private System.Windows.Forms.TrackBar m_greenSlider; + private System.Windows.Forms.TextBox m_alpha; + private System.Windows.Forms.Label m_preview; + private System.Windows.Forms.ComboBox m_named; + private System.Windows.Forms.TrackBar m_redSlider; + private System.Windows.Forms.TrackBar m_alphaSlider; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox m_green; + private System.Windows.Forms.TrackBar m_blueSlider; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox m_blue; + private System.Windows.Forms.Label m_common8; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label m_common2; + private System.Windows.Forms.Button m_ok; + private System.Windows.Forms.Button m_cancel; + private System.Windows.Forms.Label m_common1; + private System.Windows.Forms.Label m_common6; + + private bool m_allowAlpha; + + public AlphaColourDialog(string title) + { + // + // The InitializeComponent() call is required for Windows Forms designer support. + // + InitializeComponent(); + + Text=title; + + foreach (KnownColor col in Enum.GetValues(typeof(KnownColor))) + { + if (Color.FromKnownColor(col).A==255) + { + m_named.Items.Add(col.ToString()); + } + } + + m_allowAlpha=true; + } + + public Color Color + { + get + { + return m_preview.BackColor; + } + set + { + m_redSlider.Value=value.R; + m_greenSlider.Value=value.G; + m_blueSlider.Value=value.B; + + if (m_allowAlpha) + { + m_alphaSlider.Value=value.A; + } + else + { + m_alphaSlider.Value=255; + } + + SetColour(); + } + } + + public bool AllowAlpha + { + set + { + m_allowAlpha=value; + m_alphaSlider.Visible=false; + } + } + + private void SetColour() + { + m_red.Text=m_redSlider.Value.ToString(); + m_green.Text=m_greenSlider.Value.ToString(); + m_blue.Text=m_blueSlider.Value.ToString(); + m_alpha.Text=m_alphaSlider.Value.ToString(); + + m_preview.BackColor=Color.FromArgb(m_alphaSlider.Value, + m_redSlider.Value, + m_greenSlider.Value, + m_blueSlider.Value); + } + + #region Windows Forms Designer generated code + /// <summary> + /// 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. + /// </summary> + private void InitializeComponent() { + this.m_common6 = new System.Windows.Forms.Label(); + this.m_common1 = new System.Windows.Forms.Label(); + this.m_cancel = new System.Windows.Forms.Button(); + this.m_ok = new System.Windows.Forms.Button(); + this.m_common2 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.m_common8 = new System.Windows.Forms.Label(); + this.m_blue = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.m_blueSlider = new System.Windows.Forms.TrackBar(); + this.m_green = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.m_alphaSlider = new System.Windows.Forms.TrackBar(); + this.m_redSlider = new System.Windows.Forms.TrackBar(); + this.m_named = new System.Windows.Forms.ComboBox(); + this.m_preview = new System.Windows.Forms.Label(); + this.m_alpha = new System.Windows.Forms.TextBox(); + this.m_greenSlider = new System.Windows.Forms.TrackBar(); + this.m_red = new System.Windows.Forms.TextBox(); + this.m_common3 = new System.Windows.Forms.Label(); + this.m_common5 = new System.Windows.Forms.Label(); + this.m_common4 = new System.Windows.Forms.Label(); + this.m_common7 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.m_blueSlider)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.m_alphaSlider)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.m_redSlider)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.m_greenSlider)).BeginInit(); + this.SuspendLayout(); + // + // m_common6 + // + this.m_common6.BackColor = System.Drawing.Color.Yellow; + this.m_common6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.m_common6.Location = new System.Drawing.Point(56, 240); + this.m_common6.Name = "m_common6"; + this.m_common6.Size = new System.Drawing.Size(24, 24); + this.m_common6.TabIndex = 21; + this.m_common6.Click += new System.EventHandler(this.OnCommon); + // + // m_common1 + // + this.m_common1.BackColor = System.Drawing.Color.Black; + this.m_common1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.m_common1.Location = new System.Drawing.Point(16, 208); + this.m_common1.Name = "m_common1"; + this.m_common1.Size = new System.Drawing.Size(24, 24); + this.m_common1.TabIndex = 16; + this.m_common1.Click += new System.EventHandler(this.OnCommon); + // + // m_cancel + // + this.m_cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.m_cancel.Location = new System.Drawing.Point(296, 328); + this.m_cancel.Name = "m_cancel"; + this.m_cancel.Size = new System.Drawing.Size(104, 24); + this.m_cancel.TabIndex = 13; + this.m_cancel.Text = "Cancel"; + // + // m_ok + // + this.m_ok.Location = new System.Drawing.Point(184, 328); + this.m_ok.Name = "m_ok"; + this.m_ok.Size = new System.Drawing.Size(104, 24); + this.m_ok.TabIndex = 12; + this.m_ok.Text = "OK"; + this.m_ok.Click += new System.EventHandler(this.OnOK); + // + // m_common2 + // + this.m_common2.BackColor = System.Drawing.Color.White; + this.m_common2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.m_common2.Location = new System.Drawing.Point(56, 208); + this.m_common2.Name = "m_common2"; + this.m_common2.Size = new System.Drawing.Size(24, 24); + this.m_common2.TabIndex = 17; + this.m_common2.Click += new System.EventHandler(this.OnCommon); + // + // label4 + // + this.label4.Location = new System.Drawing.Point(352, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(56, 24); + this.label4.TabIndex = 7; + this.label4.Text = "Alpha"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label5 + // + this.label5.Location = new System.Drawing.Point(8, 192); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(128, 16); + this.label5.TabIndex = 15; + this.label5.Text = "Primary Colours:"; + // + // label6 + // + this.label6.Location = new System.Drawing.Point(8, 280); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(128, 16); + this.label6.TabIndex = 24; + this.label6.Text = "Named Colours:"; + // + // m_common8 + // + this.m_common8.BackColor = System.Drawing.Color.Cyan; + this.m_common8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.m_common8.Location = new System.Drawing.Point(136, 240); + this.m_common8.Name = "m_common8"; + this.m_common8.Size = new System.Drawing.Size(24, 24); + this.m_common8.TabIndex = 23; + this.m_common8.Click += new System.EventHandler(this.OnCommon); + // + // m_blue + // + this.m_blue.Location = new System.Drawing.Point(304, 296); + this.m_blue.MaxLength = 3; + this.m_blue.Name = "m_blue"; + this.m_blue.ReadOnly = true; + this.m_blue.Size = new System.Drawing.Size(40, 20); + this.m_blue.TabIndex = 10; + this.m_blue.Text = "textBox1"; + // + // label2 + // + this.label2.Location = new System.Drawing.Point(240, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(56, 24); + this.label2.TabIndex = 3; + this.label2.Text = "Green"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.Location = new System.Drawing.Point(296, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(56, 24); + this.label3.TabIndex = 5; + this.label3.Text = "Blue"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // m_blueSlider + // + this.m_blueSlider.Location = new System.Drawing.Point(304, 24); + this.m_blueSlider.Maximum = 255; + this.m_blueSlider.Name = "m_blueSlider"; + this.m_blueSlider.Orientation = System.Windows.Forms.Orientation.Vertical; + this.m_blueSlider.Size = new System.Drawing.Size(42, 264); + this.m_blueSlider.TabIndex = 4; + this.m_blueSlider.TickFrequency = 5; + this.m_blueSlider.Scroll += new System.EventHandler(this.OnBlue); + // + // m_green + // + this.m_green.Location = new System.Drawing.Point(248, 296); + this.m_green.MaxLength = 3; + this.m_green.Name = "m_green"; + this.m_green.ReadOnly = true; + this.m_green.Size = new System.Drawing.Size(40, 20); + this.m_green.TabIndex = 9; + this.m_green.Text = "textBox1"; + // + // label1 + // + this.label1.Location = new System.Drawing.Point(184, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(56, 24); + this.label1.TabIndex = 1; + this.label1.Text = "Red"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // m_alphaSlider + // + this.m_alphaSlider.Location = new System.Drawing.Point(360, 24); + this.m_alphaSlider.Maximum = 255; + this.m_alphaSlider.Name = "m_alphaSlider"; + this.m_alphaSlider.Orientation = System.Windows.Forms.Orientation.Vertical; + this.m_alphaSlider.Size = new System.Drawing.Size(42, 264); + this.m_alphaSlider.TabIndex = 6; + this.m_alphaSlider.TickFrequency = 5; + this.m_alphaSlider.Value = 255; + this.m_alphaSlider.Scroll += new System.EventHandler(this.OnAlpha); + // + // m_redSlider + // + this.m_redSlider.Location = new System.Drawing.Point(192, 24); + this.m_redSlider.Maximum = 255; + this.m_redSlider.Name = "m_redSlider"; + this.m_redSlider.Orientation = System.Windows.Forms.Orientation.Vertical; + this.m_redSlider.Size = new System.Drawing.Size(42, 264); + this.m_redSlider.TabIndex = 0; + this.m_redSlider.TickFrequency = 5; + this.m_redSlider.Scroll += new System.EventHandler(this.OnRed); + // + // m_named + // + this.m_named.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.m_named.Location = new System.Drawing.Point(8, 296); + this.m_named.MaxDropDownItems = 20; + this.m_named.Name = "m_named"; + this.m_named.Size = new System.Drawing.Size(168, 21); + this.m_named.Sorted = true; + this.m_named.TabIndex = 25; + this.m_named.SelectedIndexChanged += new System.EventHandler(this.OnNamedColour); + // + // m_preview + // + this.m_preview.BackColor = System.Drawing.Color.Black; + this.m_preview.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.m_preview.Location = new System.Drawing.Point(8, 8); + this.m_preview.Name = "m_preview"; + this.m_preview.Size = new System.Drawing.Size(168, 168); + this.m_preview.TabIndex = 14; + // + // m_alpha + // + this.m_alpha.Location = new System.Drawing.Point(360, 296); + this.m_alpha.MaxLength = 3; + this.m_alpha.Name = "m_alpha"; + this.m_alpha.ReadOnly = true; + this.m_alpha.Size = new System.Drawing.Size(40, 20); + this.m_alpha.TabIndex = 11; + this.m_alpha.Text = "textBox1"; + // + // m_greenSlider + // + this.m_greenSlider.Location = new System.Drawing.Point(248, 24); + this.m_greenSlider.Maximum = 255; + this.m_greenSlider.Name = "m_greenSlider"; + this.m_greenSlider.Orientation = System.Windows.Forms.Orientation.Vertical; + this.m_greenSlider.Size = new System.Drawing.Size(42, 264); + this.m_greenSlider.TabIndex = 2; + this.m_greenSlider.TickFrequency = 5; + this.m_greenSlider.Scroll += new System.EventHandler(this.OnGreen); + // + // m_red + // + this.m_red.Location = new System.Drawing.Point(192, 296); + this.m_red.MaxLength = 3; + this.m_red.Name = "m_red"; + this.m_red.ReadOnly = true; + this.m_red.Size = new System.Drawing.Size(40, 20); + this.m_red.TabIndex = 8; + this.m_red.Text = "textBox1"; + // + // m_common3 + // + this.m_common3.BackColor = System.Drawing.Color.Red; + this.m_common3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.m_common3.Location = new System.Drawing.Point(96, 208); + this.m_common3.Name = "m_common3"; + this.m_common3.Size = new System.Drawing.Size(24, 24); + this.m_common3.TabIndex = 18; + this.m_common3.Click += new System.EventHandler(this.OnCommon); + // + // m_common5 + // + this.m_common5.BackColor = System.Drawing.Color.Blue; + this.m_common5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.m_common5.Location = new System.Drawing.Point(16, 240); + this.m_common5.Name = "m_common5"; + this.m_common5.Size = new System.Drawing.Size(24, 24); + this.m_common5.TabIndex = 20; + this.m_common5.Click += new System.EventHandler(this.OnCommon); + // + // m_common4 + // + this.m_common4.BackColor = System.Drawing.Color.Lime; + this.m_common4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.m_common4.Location = new System.Drawing.Point(136, 208); + this.m_common4.Name = "m_common4"; + this.m_common4.Size = new System.Drawing.Size(24, 24); + this.m_common4.TabIndex = 19; + this.m_common4.Click += new System.EventHandler(this.OnCommon); + // + // m_common7 + // + this.m_common7.BackColor = System.Drawing.Color.Fuchsia; + this.m_common7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.m_common7.Location = new System.Drawing.Point(96, 240); + this.m_common7.Name = "m_common7"; + this.m_common7.Size = new System.Drawing.Size(24, 24); + this.m_common7.TabIndex = 22; + this.m_common7.Click += new System.EventHandler(this.OnCommon); + // + // AlphaColourDialog + // + this.AcceptButton = this.m_ok; + this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); + this.CancelButton = this.m_cancel; + this.ClientSize = new System.Drawing.Size(410, 362); + this.Controls.Add(this.m_named); + this.Controls.Add(this.label6); + this.Controls.Add(this.m_common8); + this.Controls.Add(this.m_common7); + this.Controls.Add(this.m_common6); + this.Controls.Add(this.m_common5); + this.Controls.Add(this.m_common4); + this.Controls.Add(this.m_common3); + this.Controls.Add(this.m_common2); + this.Controls.Add(this.m_common1); + this.Controls.Add(this.label5); + this.Controls.Add(this.m_preview); + this.Controls.Add(this.m_cancel); + this.Controls.Add(this.m_ok); + this.Controls.Add(this.m_alpha); + this.Controls.Add(this.m_blue); + this.Controls.Add(this.m_green); + this.Controls.Add(this.m_red); + this.Controls.Add(this.label4); + this.Controls.Add(this.m_alphaSlider); + this.Controls.Add(this.label3); + this.Controls.Add(this.m_blueSlider); + this.Controls.Add(this.label2); + this.Controls.Add(this.m_greenSlider); + this.Controls.Add(this.label1); + this.Controls.Add(this.m_redSlider); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "AlphaColourDialog"; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "AlphaColourDialog"; + ((System.ComponentModel.ISupportInitialize)(this.m_blueSlider)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.m_alphaSlider)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.m_redSlider)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.m_greenSlider)).EndInit(); + this.ResumeLayout(false); + } + #endregion + + void OnRed(object sender, System.EventArgs e) + { + SetColour(); + } + + void OnGreen(object sender, System.EventArgs e) + { + SetColour(); + } + + void OnBlue(object sender, System.EventArgs e) + { + SetColour(); + } + + void OnAlpha(object sender, System.EventArgs e) + { + SetColour(); + } + + void OnOK(object sender, System.EventArgs e) + { + DialogResult=DialogResult.OK; + Close(); + } + + void OnCommon(object sender, System.EventArgs e) + { + Label l=(Label)sender; + + Color=l.BackColor; + } + + void OnNamedColour(object sender, System.EventArgs e) + { + string s=(string)m_named.SelectedItem; + + Color=Color.FromKnownColor((KnownColor)Enum.Parse(typeof(KnownColor),s)); + } + + } +} diff --git a/BitmapChar.cs b/BitmapChar.cs index 12d3aae..4719b33 100644 --- a/BitmapChar.cs +++ b/BitmapChar.cs @@ -34,7 +34,7 @@ namespace BitmapFontEd m_width=width; m_height=height; m_data=new Color[m_width,m_height]; - Clear(Color.Black); + Clear(Color.Empty); m_changed=false; } @@ -81,7 +81,7 @@ namespace BitmapFontEd for(int y=0;y<height;y++) for(int x=0;x<width;x++) - data[x,y]=Color.Black; + data[x,y]=Color.Empty; uint mx=Math.Min(width,m_width); uint my=Math.Min(height,m_height); @@ -201,17 +201,17 @@ namespace BitmapFontEd // for(int y=0;y<m_height;y++) for(int x=0;x<m_width;x++) - d[x,y]=Color.Black; + d[x,y]=Color.Empty; for(int y=0;y<m_height;y++) for(int x=0;x<m_width;x++) - if (m_data[x,y]!=Color.Black) + if (m_data[x,y].A!=0) { int nx=x+dx; int ny=y+dy; if (nx>=0 && nx<m_width && ny>=0 && ny<m_height && - m_data[nx,ny]==Color.Black) + m_data[nx,ny].A==0) { d[nx,ny]=col; } @@ -219,7 +219,7 @@ namespace BitmapFontEd for(int y=0;y<m_height;y++) for(int x=0;x<m_width;x++) - if (d[x,y]!=Color.Black) + if (d[x,y].A!=0) { m_data[x,y]=d[x,y]; } @@ -235,11 +235,11 @@ namespace BitmapFontEd // for(int y=0;y<m_height;y++) for(int x=0;x<m_width;x++) - d[x,y]=Color.Black; + d[x,y]=Color.Empty; for(int y=0;y<m_height;y++) for(int x=0;x<m_width;x++) - if (m_data[x,y]!=Color.Black) + if (m_data[x,y].A!=0) { for(int dx=-1;dx<2;dx++) for(int dy=-1;dy<2;dy++) @@ -248,7 +248,7 @@ namespace BitmapFontEd int ny=y+dy; if (nx>=0 && nx<m_width && ny>=0 && ny<m_height && - m_data[nx,ny]==Color.Black) + m_data[nx,ny].A==0) { d[nx,ny]=col; } @@ -257,7 +257,7 @@ namespace BitmapFontEd for(int y=0;y<m_height;y++) for(int x=0;x<m_width;x++) - if (d[x,y]!=Color.Black) + if (d[x,y].A!=0) { m_data[x,y]=d[x,y]; } @@ -274,14 +274,10 @@ namespace BitmapFontEd { for(uint y=0;y<m_height;y++) { - if (m_data[x,y]!=Color.Black) - { - Util.WriteInt(stream,m_data[x,y].ToArgb()); - } - else - { - Util.WriteInt(stream,0); - } + stream.WriteByte(m_data[x,y].B); + stream.WriteByte(m_data[x,y].G); + stream.WriteByte(m_data[x,y].R); + stream.WriteByte(m_data[x,y].A); } } } @@ -297,16 +293,12 @@ namespace BitmapFontEd { for(uint y=0;y<height;y++) { - int col=Util.ReadInt(stream); - - if (col==0) - { - s[x,y]=Color.Black; - } - else - { - s[x,y]=Color.FromArgb(255,(col&0xff0000)>>16,(col&0xff00)>>8,col&0xff); - } + int B=stream.ReadByte(); + int G=stream.ReadByte(); + int R=stream.ReadByte(); + int A=stream.ReadByte(); + + s[x,y]=Color.FromArgb(A,R,G,B); } } diff --git a/BitmapFontEd.AlphaColourDialog.resources b/BitmapFontEd.AlphaColourDialog.resources new file mode 100644 index 0000000..c7f215e Binary files /dev/null and b/BitmapFontEd.AlphaColourDialog.resources differ diff --git a/BitmapFontEd.GfxEditor.resources b/BitmapFontEd.GfxEditor.resources index 275f1ce..01b0eb4 100644 Binary files a/BitmapFontEd.GfxEditor.resources and b/BitmapFontEd.GfxEditor.resources differ diff --git a/BitmapFontEd.prjx b/BitmapFontEd.prjx index ece3b36..213ceea 100644 --- a/BitmapFontEd.prjx +++ b/BitmapFontEd.prjx @@ -10,17 +10,20 @@ <File name="..\Util.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> <File name=".\DropShadowForm.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> <File name=".\BitmapFontEd.DropShadowForm.resources" subtype="Code" buildaction="EmbedAsResource" dependson="" data="" /> + <File name=".\BitmapFontEd.DebugDisplay.resources" subtype="Code" buildaction="EmbedAsResource" dependson="" data="" /> + <File name=".\AlphaColourDialog.cs" subtype="Code" buildaction="Compile" dependson="" data="" /> + <File name=".\BitmapFontEd.AlphaColourDialog.resources" subtype="Code" buildaction="EmbedAsResource" dependson="" data="" /> </Contents> <References /> <DeploymentInformation target="" script="" strategy="File" /> <Configuration runwithwarnings="True" name="Debug"> - <CodeGeneration runtime="MsNet" compiler="Csc" compilerversion="" warninglevel="4" nowarn="" includedebuginformation="True" optimize="False" unsafecodeallowed="False" generateoverflowchecks="True" mainclass="" target="WinExe" definesymbols="" generatexmldocumentation="False" win32Icon="" noconfig="False" nostdlib="False" /> + <CodeGeneration runtime="MsNet" compiler="Csc" compilerversion="Standard" warninglevel="4" nowarn="" includedebuginformation="True" optimize="False" unsafecodeallowed="False" generateoverflowchecks="True" mainclass="" target="WinExe" definesymbols="" generatexmldocumentation="False" win32Icon="" noconfig="False" nostdlib="False" /> <Execution commandlineparameters="" consolepause="False" /> <Output directory="..\bin\Debug" assembly="BitmapFontEd" executeScript="" executeBeforeBuild="" executeAfterBuild="" executeBeforeBuildArguments="" executeAfterBuildArguments="" /> </Configuration> <Configurations active="Debug"> <Configuration runwithwarnings="True" name="Debug"> - <CodeGeneration runtime="MsNet" compiler="Csc" compilerversion="" warninglevel="4" nowarn="" includedebuginformation="True" optimize="False" unsafecodeallowed="False" generateoverflowchecks="True" mainclass="" target="WinExe" definesymbols="" generatexmldocumentation="False" win32Icon="" noconfig="False" nostdlib="False" /> + <CodeGeneration runtime="MsNet" compiler="Csc" compilerversion="Standard" warninglevel="4" nowarn="" includedebuginformation="True" optimize="False" unsafecodeallowed="False" generateoverflowchecks="True" mainclass="" target="WinExe" definesymbols="" generatexmldocumentation="False" win32Icon="" noconfig="False" nostdlib="False" /> <Execution commandlineparameters="" consolepause="False" /> <Output directory="..\bin\Debug" assembly="BitmapFontEd" executeScript="" executeBeforeBuild="" executeAfterBuild="" executeBeforeBuildArguments="" executeAfterBuildArguments="" /> </Configuration> diff --git a/DropShadowForm.cs b/DropShadowForm.cs index ac3b55f..2446042 100644 --- a/DropShadowForm.cs +++ b/DropShadowForm.cs @@ -306,10 +306,9 @@ namespace BitmapFontEd void OnSelectColor(object sender, System.EventArgs e) { - ColorDialog d=new ColorDialog(); + AlphaColourDialog d=new AlphaColourDialog("Select shadow colour"); d.Color=m_color.BackColor; - d.FullOpen=true; if (d.ShowDialog()==DialogResult.OK) { diff --git a/GfxEditor.cs b/GfxEditor.cs index f5f002a..b78155a 100644 --- a/GfxEditor.cs +++ b/GfxEditor.cs @@ -35,7 +35,7 @@ namespace BitmapFontEd { private System.Windows.Forms.Label m_fgPreview; private System.Windows.Forms.ComboBox m_modeList; - private System.Windows.Forms.PictureBox m_edit; + private System.Windows.Forms.Label m_recent8; private System.Windows.Forms.Label m_recent1; private System.Windows.Forms.Label label11; private System.Windows.Forms.Label m_recent4; @@ -44,12 +44,14 @@ namespace BitmapFontEd private System.Windows.Forms.Label m_recent7; private System.Windows.Forms.Label m_bgPreview; private System.Windows.Forms.Label m_recent2; - private System.Windows.Forms.NumericUpDown m_sizeY; + private System.Windows.Forms.Label m_recent3; private System.Windows.Forms.PictureBox m_preview; + private System.Windows.Forms.NumericUpDown m_sizeY; + private System.Windows.Forms.Label m_gridCol; + private System.Windows.Forms.PictureBox m_edit; private System.Windows.Forms.Label label12; private System.Windows.Forms.Label label13; private System.Windows.Forms.Label m_pos; - private System.Windows.Forms.Label m_recent3; private System.Windows.Forms.Label label14; private System.Windows.Forms.Label label15; private System.Windows.Forms.Button m_undoButton; @@ -61,7 +63,7 @@ namespace BitmapFontEd private System.Windows.Forms.Label label6; private System.Windows.Forms.Label label5; private System.Windows.Forms.Label label4; - private System.Windows.Forms.Label m_recent8; + private System.Windows.Forms.Label m_backCol; public const int MAX_SIZE=32; @@ -99,7 +101,6 @@ namespace BitmapFontEd private uint m_grid; private uint m_mx; private uint m_my; - private Color m_gridCol; private bool m_drawing; private Mode m_mode; @@ -128,10 +129,8 @@ namespace BitmapFontEd m_char=null; m_grid=8; - m_grid=8; m_mx=SIZE; m_my=SIZE; - m_gridCol=Color.LightGreen; m_editRect=m_edit.ClientRectangle; m_editBmp=new Bitmap(m_editRect.Width,m_editRect.Height); @@ -144,6 +143,8 @@ namespace BitmapFontEd m_drawing=false; m_mode=Mode.ePlot; + m_bgPreview.BackColor=Color.FromArgb(0); + if (m_editRect.Width!=SIZE && m_editRect.Height!=SIZE) { throw new Exception("GfxEditor built with bad SIZE!"); @@ -165,7 +166,7 @@ namespace BitmapFontEd /// not be able to load this method if it was changed manually. /// </summary> private void InitializeComponent() { - this.m_recent8 = new System.Windows.Forms.Label(); + this.m_backCol = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label(); this.label6 = new System.Windows.Forms.Label(); @@ -177,12 +178,14 @@ namespace BitmapFontEd this.m_undoButton = new System.Windows.Forms.Button(); this.label15 = new System.Windows.Forms.Label(); this.label14 = new System.Windows.Forms.Label(); - this.m_recent3 = new System.Windows.Forms.Label(); this.m_pos = new System.Windows.Forms.Label(); this.label13 = new System.Windows.Forms.Label(); this.label12 = new System.Windows.Forms.Label(); - this.m_preview = new System.Windows.Forms.PictureBox(); + this.m_edit = new System.Windows.Forms.PictureBox(); + this.m_gridCol = new System.Windows.Forms.Label(); this.m_sizeY = new System.Windows.Forms.NumericUpDown(); + this.m_preview = new System.Windows.Forms.PictureBox(); + this.m_recent3 = new System.Windows.Forms.Label(); this.m_recent2 = new System.Windows.Forms.Label(); this.m_bgPreview = new System.Windows.Forms.Label(); this.m_recent7 = new System.Windows.Forms.Label(); @@ -191,22 +194,22 @@ namespace BitmapFontEd this.m_recent4 = new System.Windows.Forms.Label(); this.label11 = new System.Windows.Forms.Label(); this.m_recent1 = new System.Windows.Forms.Label(); - this.m_edit = new System.Windows.Forms.PictureBox(); + this.m_recent8 = new System.Windows.Forms.Label(); this.m_modeList = new System.Windows.Forms.ComboBox(); this.m_fgPreview = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.m_sizeX)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.m_sizeY)).BeginInit(); this.SuspendLayout(); // - // m_recent8 + // m_backCol // - this.m_recent8.BackColor = System.Drawing.Color.Black; - this.m_recent8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.m_recent8.Location = new System.Drawing.Point(352, 272); - this.m_recent8.Name = "m_recent8"; - this.m_recent8.Size = new System.Drawing.Size(16, 16); - this.m_recent8.TabIndex = 32; - this.m_recent8.MouseUp += new System.Windows.Forms.MouseEventHandler(this.OnRecent); + this.m_backCol.BackColor = System.Drawing.Color.Black; + this.m_backCol.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.m_backCol.Location = new System.Drawing.Point(168, 272); + this.m_backCol.Name = "m_backCol"; + this.m_backCol.Size = new System.Drawing.Size(24, 24); + this.m_backCol.TabIndex = 34; + this.m_backCol.Click += new System.EventHandler(this.OnPaper); // // label4 // @@ -260,7 +263,7 @@ namespace BitmapFontEd 0}); this.m_sizeX.Name = "m_sizeX"; this.m_sizeX.ReadOnly = true; - this.m_sizeX.Size = new System.Drawing.Size(48, 21); + this.m_sizeX.Size = new System.Drawing.Size(48, 20); this.m_sizeX.TabIndex = 19; this.m_sizeX.Value = new System.Decimal(new int[] { 1, @@ -320,21 +323,11 @@ namespace BitmapFontEd this.label14.Size = new System.Drawing.Size(16, 16); this.label14.TabIndex = 29; // - // m_recent3 - // - this.m_recent3.BackColor = System.Drawing.Color.Black; - this.m_recent3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.m_recent3.Location = new System.Drawing.Point(328, 248); - this.m_recent3.Name = "m_recent3"; - this.m_recent3.Size = new System.Drawing.Size(16, 16); - this.m_recent3.TabIndex = 27; - this.m_recent3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.OnRecent); - // // m_pos // - this.m_pos.Location = new System.Drawing.Point(160, 272); + this.m_pos.Location = new System.Drawing.Point(208, 272); this.m_pos.Name = "m_pos"; - this.m_pos.Size = new System.Drawing.Size(104, 24); + this.m_pos.Size = new System.Drawing.Size(56, 24); this.m_pos.TabIndex = 23; this.m_pos.TextAlign = System.Drawing.ContentAlignment.TopRight; // @@ -354,14 +347,29 @@ namespace BitmapFontEd this.label12.Size = new System.Drawing.Size(16, 16); this.label12.TabIndex = 31; // - // m_preview + // m_edit // - this.m_preview.BackColor = System.Drawing.SystemColors.Control; - this.m_preview.Location = new System.Drawing.Point(288, 184); - this.m_preview.Name = "m_preview"; - this.m_preview.Size = new System.Drawing.Size(34, 34); - this.m_preview.TabIndex = 1; - this.m_preview.TabStop = false; + this.m_edit.BackColor = System.Drawing.SystemColors.Control; + this.m_edit.Location = new System.Drawing.Point(8, 8); + this.m_edit.Name = "m_edit"; + this.m_edit.Size = new System.Drawing.Size(256, 256); + this.m_edit.TabIndex = 0; + this.m_edit.TabStop = false; + this.m_edit.MouseEnter += new System.EventHandler(this.OnEnterEditor); + this.m_edit.MouseUp += new System.Windows.Forms.MouseEventHandler(this.OnMouseMove); + this.m_edit.MouseMove += new System.Windows.Forms.MouseEventHandler(this.OnMouseMove); + this.m_edit.MouseLeave += new System.EventHandler(this.OnLeaveEditor); + this.m_edit.MouseDown += new System.Windows.Forms.MouseEventHandler(this.OnMouseMove); + // + // m_gridCol + // + this.m_gridCol.BackColor = System.Drawing.Color.Lime; + this.m_gridCol.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.m_gridCol.Location = new System.Drawing.Point(136, 272); + this.m_gridCol.Name = "m_gridCol"; + this.m_gridCol.Size = new System.Drawing.Size(24, 24); + this.m_gridCol.TabIndex = 33; + this.m_gridCol.Click += new System.EventHandler(this.OnGrid); // // m_sizeY // @@ -379,7 +387,7 @@ namespace BitmapFontEd 0}); this.m_sizeY.Name = "m_sizeY"; this.m_sizeY.ReadOnly = true; - this.m_sizeY.Size = new System.Drawing.Size(48, 21); + this.m_sizeY.Size = new System.Drawing.Size(48, 20); this.m_sizeY.TabIndex = 20; this.m_sizeY.Value = new System.Decimal(new int[] { 1, @@ -389,6 +397,25 @@ namespace BitmapFontEd this.m_sizeY.ValueChanged += new System.EventHandler(this.OnSizeHeight); this.m_sizeY.Leave += new System.EventHandler(this.OnSizeHeight); // + // m_preview + // + this.m_preview.BackColor = System.Drawing.SystemColors.Control; + this.m_preview.Location = new System.Drawing.Point(288, 184); + this.m_preview.Name = "m_preview"; + this.m_preview.Size = new System.Drawing.Size(34, 34); + this.m_preview.TabIndex = 1; + this.m_preview.TabStop = false; + // + // m_recent3 + // + this.m_recent3.BackColor = System.Drawing.Color.Black; + this.m_recent3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.m_recent3.Location = new System.Drawing.Point(328, 248); + this.m_recent3.Name = "m_recent3"; + this.m_recent3.Size = new System.Drawing.Size(16, 16); + this.m_recent3.TabIndex = 27; + this.m_recent3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.OnRecent); + // // m_recent2 // this.m_recent2.BackColor = System.Drawing.Color.Black; @@ -401,7 +428,7 @@ namespace BitmapFontEd // // m_bgPreview // - this.m_bgPreview.BackColor = System.Drawing.Color.Black; + this.m_bgPreview.BackColor = System.Drawing.Color.Transparent; this.m_bgPreview.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.m_bgPreview.Location = new System.Drawing.Point(336, 112); this.m_bgPreview.Name = "m_bgPreview"; @@ -467,19 +494,15 @@ namespace BitmapFontEd this.m_recent1.TabIndex = 25; this.m_recent1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.OnRecent); // - // m_edit + // m_recent8 // - this.m_edit.BackColor = System.Drawing.SystemColors.Control; - this.m_edit.Location = new System.Drawing.Point(8, 8); - this.m_edit.Name = "m_edit"; - this.m_edit.Size = new System.Drawing.Size(256, 256); - this.m_edit.TabIndex = 0; - this.m_edit.TabStop = false; - this.m_edit.MouseEnter += new System.EventHandler(this.OnEnterEditor); - this.m_edit.MouseUp += new System.Windows.Forms.MouseEventHandler(this.OnMouseMove); - this.m_edit.MouseMove += new System.Windows.Forms.MouseEventHandler(this.OnMouseMove); - this.m_edit.MouseLeave += new System.EventHandler(this.OnLeaveEditor); - this.m_edit.MouseDown += new System.Windows.Forms.MouseEventHandler(this.OnMouseMove); + this.m_recent8.BackColor = System.Drawing.Color.Black; + this.m_recent8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.m_recent8.Location = new System.Drawing.Point(352, 272); + this.m_recent8.Name = "m_recent8"; + this.m_recent8.Size = new System.Drawing.Size(16, 16); + this.m_recent8.TabIndex = 32; + this.m_recent8.MouseUp += new System.Windows.Forms.MouseEventHandler(this.OnRecent); // // m_modeList // @@ -514,6 +537,8 @@ namespace BitmapFontEd // // GfxEditor // + this.Controls.Add(this.m_backCol); + this.Controls.Add(this.m_gridCol); this.Controls.Add(this.m_recent8); this.Controls.Add(this.m_recent7); this.Controls.Add(this.m_recent6); @@ -551,11 +576,6 @@ namespace BitmapFontEd // ------------------------------------------------------- #region Public Interfaces - public Color GridColour - { - set {m_gridCol=value;} - } - public uint CharWidth { get {return m_width;} @@ -634,14 +654,14 @@ namespace BitmapFontEd private void DrawGrid() { Graphics g=Graphics.FromImage(m_prevBmp); - Pen p=new Pen(m_gridCol); + Pen p=new Pen(m_gridCol.BackColor); g.Clear(Color.Black); Flush(ref g); g=Graphics.FromImage(m_editBmp); - g.Clear(Color.Black); + g.Clear(m_backCol.BackColor); for(int x=0;x<m_width+1;x++) { @@ -659,6 +679,14 @@ namespace BitmapFontEd m_preview.Invalidate(); } + private void RedrawChar() + { + DrawGrid(); + DrawChar(); + } + + // This could really do with some optimisations + // private void DrawChar() { if (m_char==null) @@ -668,7 +696,7 @@ namespace BitmapFontEd Graphics editg=Graphics.FromImage(m_editBmp); Graphics prevg=Graphics.FromImage(m_prevBmp); - + for(uint x=0;x<m_char.Width;x++) for(uint y=0;y<m_char.Height;y++) if (m_overlay[x,y]==TRANS) @@ -678,19 +706,36 @@ namespace BitmapFontEd Flush(ref editg); Flush(ref prevg); - + m_edit.Invalidate(); + m_edit.Update(); m_preview.Invalidate(); + m_preview.Update(); } private void CharPlot(Graphics edit, Graphics prev, - uint x, uint y, Color c) + uint x, uint y, Color c) { - SolidBrush p=new SolidBrush(c); + if (m_prevBmp.GetPixel((int)x,(int)y)==c) + { + return; + } + + SolidBrush p=new SolidBrush(m_backCol.BackColor); + + uint gx=x*m_grid+1; + uint gy=y*m_grid+1; + uint gw=m_grid-1; - edit.FillRectangle(p,x*m_grid+1,y*m_grid+1,m_grid-1,m_grid-1); + edit.FillRectangle(p,gx,gy,gw,gw); + prev.FillRectangle(p,1+x,1+y,1,1); + + p=new SolidBrush(c); + + edit.FillRectangle(p,gx,gy,gw,gw); prev.FillRectangle(p,1+x,1+y,1,1); } + #endregion // ------------------------------------------------------- @@ -758,14 +803,14 @@ namespace BitmapFontEd for(uint x=x1;x<=x2;x++) { - m_overlay[x,y1]=m_gridCol; - m_overlay[x,y2]=m_gridCol; + m_overlay[x,y1]=m_gridCol.BackColor; + m_overlay[x,y2]=m_gridCol.BackColor; } for(uint y=y1;y<=y2;y++) { - m_overlay[x1,y]=m_gridCol; - m_overlay[x2,y]=m_gridCol; + m_overlay[x1,y]=m_gridCol.BackColor; + m_overlay[x2,y]=m_gridCol.BackColor; } } @@ -1284,10 +1329,9 @@ namespace BitmapFontEd void OnForeground(object sender, System.EventArgs e) { - ColorDialog d=new ColorDialog(); + AlphaColourDialog d=new AlphaColourDialog("Select Colour for Left Mouse Button"); d.Color=m_fgPreview.BackColor; - d.FullOpen=true; if (d.ShowDialog()==DialogResult.OK) { @@ -1298,10 +1342,9 @@ namespace BitmapFontEd void OnBackground(object sender, System.EventArgs e) { - ColorDialog d=new ColorDialog(); + AlphaColourDialog d=new AlphaColourDialog("Select Colour for Right Mouse Button"); d.Color=m_bgPreview.BackColor; - d.FullOpen=true; if (d.ShowDialog()==DialogResult.OK) { @@ -1324,6 +1367,34 @@ namespace BitmapFontEd } } + void OnGrid(object sender, System.EventArgs e) + { + AlphaColourDialog d=new AlphaColourDialog("Select Grid Colour"); + + d.AllowAlpha=false; + d.Color=m_gridCol.BackColor; + + if (d.ShowDialog()==DialogResult.OK) + { + m_gridCol.BackColor=d.Color; + RedrawChar(); + } + } + + void OnPaper(object sender, System.EventArgs e) + { + AlphaColourDialog d=new AlphaColourDialog("Select Background Colour"); + + d.AllowAlpha=false; + d.Color=m_backCol.BackColor; + + if (d.ShowDialog()==DialogResult.OK) + { + m_backCol.BackColor=d.Color; + RedrawChar(); + } + } + #endregion } } diff --git a/MainForm.cs b/MainForm.cs index efc34c5..6a48840 100644 --- a/MainForm.cs +++ b/MainForm.cs @@ -913,10 +913,9 @@ namespace BitmapFontEd void OnGlow(object sender, System.EventArgs e) { - ColorDialog d=new ColorDialog(); + AlphaColourDialog d=new AlphaColourDialog("Select Glow Colour"); d.Color=m_glowCol; - d.FullOpen=true; if (d.ShowDialog()==DialogResult.OK) { @@ -944,31 +943,27 @@ namespace BitmapFontEd { int x,y; int mx,my; - bool found; - - //System.Diagnostics.Debugger.Break(); c.Clear(m_edit.BackColor); - found=false; + mx=Int32.MinValue; + my=Int32.MinValue; - for(my=GfxEditor.MAX_SIZE-1;my>=0 && !found;my--) - for(x=0;x<GfxEditor.MAX_SIZE && !found;x++) - if (!Util.IsBlack(bmp.GetPixel(x,my))) - found=true; + for(y=0;y<GfxEditor.MAX_SIZE;y++) + for(x=0;x<GfxEditor.MAX_SIZE;x++) + if (bmp.GetPixel(x,y).A!=0) + { + mx=Math.Max(mx,x); + my=Math.Max(my,y); + } - if (!found) + if (mx==Int32.MinValue) return; - found=false; - - for(mx=GfxEditor.MAX_SIZE-1;mx>=0 && !found;mx--) - for(y=0;y<GfxEditor.MAX_SIZE && !found;y++) - if (!Util.IsBlack(bmp.GetPixel(mx,y))) - found=true; - + System.Diagnostics.Debug.WriteLine("(pre)mx="+mx+" my="+my); mx=Math.Min(mx+1,GfxEditor.MAX_SIZE); my=Math.Min(my+1,GfxEditor.MAX_SIZE); + System.Diagnostics.Debug.WriteLine("(post)mx="+mx+" my="+my); c.Resize((uint)mx,(uint)my); @@ -983,10 +978,9 @@ namespace BitmapFontEd if (fdlg.ShowDialog()==DialogResult.OK) { - ColorDialog coldlg=new ColorDialog(); + AlphaColourDialog coldlg=new AlphaColourDialog("Font Colour"); coldlg.Color=Color.White; - coldlg.FullOpen=true; if (coldlg.ShowDialog()==DialogResult.OK) { @@ -995,6 +989,7 @@ namespace BitmapFontEd Bitmap bmp=new Bitmap(GfxEditor.MAX_SIZE, GfxEditor.MAX_SIZE, PixelFormat.Format32bppArgb); + SolidBrush b=new SolidBrush(coldlg.Color); using (Graphics g=Graphics.FromImage(bmp)) @@ -1002,12 +997,14 @@ namespace BitmapFontEd for(byte ascii=33;ascii<127;ascii++) { string s=Encoding.ASCII.GetString(new byte[] {ascii}); - g.Clear(Color.Black); + g.Clear(Color.Transparent); g.DrawString(s,fdlg.Font,b,0,0); - g.Flush(); + g.Flush(FlushIntention.Sync); GrabChar(bmp,m_chars[ascii-32]); } } + + m_edit.BitmapChar=new BitmapChar(m_chars[m_selected]); } catch (Exception ex) { diff --git a/Util.cs b/Util.cs index bd9b414..314cc3d 100644 --- a/Util.cs +++ b/Util.cs @@ -53,11 +53,6 @@ namespace BitmapFontEd MessageBoxButtons.OK,MessageBoxIcon.Information); } - public static bool IsBlack(Color c) - { - return c.R==0 && c.G==0 && c.B==0; - } - public static uint ReadUint(Stream str) { uint l=0; -- cgit v1.2.3