diff --git a/.gitignore b/.gitignore index f635fe4..75316d1 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore examples/tests/32x32/ +examples/tests/PNGout/ # User-specific files *.rsuser diff --git a/McBitFont/About.Designer.cs b/McBitFont/About.Designer.cs index e7fe392..7279f6b 100644 --- a/McBitFont/About.Designer.cs +++ b/McBitFont/About.Designer.cs @@ -124,7 +124,7 @@ MinimizeBox = false; Name = "About"; ShowInTaskbar = false; - StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; Text = "About McBitFont"; Load += About_Load; ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit(); diff --git a/McBitFont/CodeShift.Designer.cs b/McBitFont/CodeShift.Designer.cs index 1ded990..6f1493e 100644 --- a/McBitFont/CodeShift.Designer.cs +++ b/McBitFont/CodeShift.Designer.cs @@ -164,7 +164,7 @@ Name = "CodeShift"; ShowIcon = false; ShowInTaskbar = false; - StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; Text = "Code Shift"; Load += CodeShift_Load; ((System.ComponentModel.ISupportInitialize)nudValue).EndInit(); diff --git a/McBitFont/Export.Designer.cs b/McBitFont/Export.Designer.cs index d258383..410b405 100644 --- a/McBitFont/Export.Designer.cs +++ b/McBitFont/Export.Designer.cs @@ -343,7 +343,7 @@ Name = "Export"; ShowIcon = false; ShowInTaskbar = false; - StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; Text = "Export"; Load += Export_Load; gbScan.ResumeLayout(false); diff --git a/McBitFont/FontTester.Designer.cs b/McBitFont/FontTester.Designer.cs new file mode 100644 index 0000000..4fc6680 --- /dev/null +++ b/McBitFont/FontTester.Designer.cs @@ -0,0 +1,197 @@ +namespace McBitFont { + partial class FontTester { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() { + components = new System.ComponentModel.Container(); + lblSpace = new System.Windows.Forms.Label(); + nudSpace = new System.Windows.Forms.NumericUpDown(); + lblText = new System.Windows.Forms.Label(); + tbText = new System.Windows.Forms.TextBox(); + dotPanel = new System.Windows.Forms.Panel(); + vScroll = new System.Windows.Forms.VScrollBar(); + hScroll = new System.Windows.Forms.HScrollBar(); + lblZoom = new System.Windows.Forms.Label(); + cbZoom = new System.Windows.Forms.ComboBox(); + toolTip1 = new System.Windows.Forms.ToolTip(components); + chkBaseline = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)nudSpace).BeginInit(); + SuspendLayout(); + // + // lblSpace + // + lblSpace.AutoSize = true; + lblSpace.Location = new System.Drawing.Point(12, 9); + lblSpace.Name = "lblSpace"; + lblSpace.Size = new System.Drawing.Size(41, 15); + lblSpace.TabIndex = 0; + lblSpace.Text = "Space:"; + // + // nudSpace + // + nudSpace.Location = new System.Drawing.Point(59, 6); + nudSpace.Maximum = new decimal(new int[] { 255, 0, 0, 0 }); + nudSpace.Name = "nudSpace"; + nudSpace.Size = new System.Drawing.Size(40, 23); + nudSpace.TabIndex = 1; + toolTip1.SetToolTip(nudSpace, "Space between symbols in pixels"); + nudSpace.Value = new decimal(new int[] { 1, 0, 0, 0 }); + nudSpace.ValueChanged += Scrolling; + // + // lblText + // + lblText.AutoSize = true; + lblText.Location = new System.Drawing.Point(12, 37); + lblText.Name = "lblText"; + lblText.Size = new System.Drawing.Size(138, 15); + lblText.TabIndex = 2; + lblText.Text = "Text to test the font with:"; + // + // tbText + // + tbText.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tbText.Font = new System.Drawing.Font("Segoe UI Semibold", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + tbText.Location = new System.Drawing.Point(12, 55); + tbText.Name = "tbText"; + tbText.Size = new System.Drawing.Size(260, 29); + tbText.TabIndex = 3; + toolTip1.SetToolTip(tbText, "Text to test the font with"); + tbText.TextChanged += Text_Changed; + // + // dotPanel + // + dotPanel.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + dotPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + dotPanel.BackColor = System.Drawing.Color.White; + dotPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + dotPanel.Location = new System.Drawing.Point(12, 90); + dotPanel.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + dotPanel.Name = "dotPanel"; + dotPanel.Size = new System.Drawing.Size(238, 98); + dotPanel.TabIndex = 4; + dotPanel.Paint += PaintPixels; + dotPanel.Resize += ZoomChanged; + // + // vScroll + // + vScroll.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + vScroll.LargeChange = 25; + vScroll.Location = new System.Drawing.Point(251, 84); + vScroll.Name = "vScroll"; + vScroll.Size = new System.Drawing.Size(21, 125); + vScroll.TabIndex = 17; + vScroll.ValueChanged += Scrolling; + // + // hScroll + // + hScroll.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + hScroll.Location = new System.Drawing.Point(12, 188); + hScroll.Name = "hScroll"; + hScroll.Size = new System.Drawing.Size(238, 21); + hScroll.TabIndex = 16; + hScroll.ValueChanged += Scrolling; + // + // lblZoom + // + lblZoom.AutoSize = true; + lblZoom.Location = new System.Drawing.Point(173, 9); + lblZoom.Name = "lblZoom"; + lblZoom.Size = new System.Drawing.Size(42, 15); + lblZoom.TabIndex = 18; + lblZoom.Text = "Zoom:"; + // + // cbZoom + // + cbZoom.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbZoom.FormattingEnabled = true; + cbZoom.Items.AddRange(new object[] { "2", "3", "5", "10", "15", "20", "25", "30", "35", "40", "45", "50" }); + cbZoom.Location = new System.Drawing.Point(222, 6); + cbZoom.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbZoom.Name = "cbZoom"; + cbZoom.Size = new System.Drawing.Size(50, 23); + cbZoom.TabIndex = 19; + cbZoom.TabStop = false; + toolTip1.SetToolTip(cbZoom, "Zoom level"); + cbZoom.SelectedIndexChanged += ZoomChanged; + // + // toolTip1 + // + toolTip1.AutoPopDelay = 10000; + toolTip1.InitialDelay = 500; + toolTip1.ReshowDelay = 100; + // + // chkBaseline + // + chkBaseline.AutoSize = true; + chkBaseline.Location = new System.Drawing.Point(203, 36); + chkBaseline.Name = "chkBaseline"; + chkBaseline.Size = new System.Drawing.Size(69, 19); + chkBaseline.TabIndex = 20; + chkBaseline.Text = "Baseline"; + chkBaseline.UseVisualStyleBackColor = true; + chkBaseline.CheckedChanged += Scrolling; + // + // FontTester + // + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + ClientSize = new System.Drawing.Size(284, 221); + Controls.Add(chkBaseline); + Controls.Add(cbZoom); + Controls.Add(lblZoom); + Controls.Add(vScroll); + Controls.Add(hScroll); + Controls.Add(dotPanel); + Controls.Add(tbText); + Controls.Add(lblText); + Controls.Add(nudSpace); + Controls.Add(lblSpace); + MaximizeBox = false; + MinimizeBox = false; + MinimumSize = new System.Drawing.Size(260, 260); + Name = "FontTester"; + ShowIcon = false; + ShowInTaskbar = false; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + Text = "Font Tester"; + Load += FontTester_Load; + ((System.ComponentModel.ISupportInitialize)nudSpace).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private System.Windows.Forms.Label lblSpace; + private System.Windows.Forms.NumericUpDown nudSpace; + private System.Windows.Forms.Label lblText; + private System.Windows.Forms.TextBox tbText; + private System.Windows.Forms.Panel dotPanel; + private System.Windows.Forms.VScrollBar vScroll; + private System.Windows.Forms.HScrollBar hScroll; + private System.Windows.Forms.Label lblZoom; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.ComboBox cbZoom; + private System.Windows.Forms.CheckBox chkBaseline; + } +} \ No newline at end of file diff --git a/McBitFont/FontTester.cs b/McBitFont/FontTester.cs new file mode 100644 index 0000000..e30cf02 --- /dev/null +++ b/McBitFont/FontTester.cs @@ -0,0 +1,166 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace McBitFont { + public partial class FontTester : Form { + + private int codepage = 1251; + private int height; + private List frames; + private int baseline; + private readonly int absentWidth = 5; + private readonly int pixelOffset = 5; + + private int baselineThickness = 1; + private byte[] encoded = []; + private int cellSize; + private int width; + + public FontTester(int codepage, int height, int baseline, List frames) { + InitializeComponent(); + Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); + this.codepage = codepage; + this.height = height; + this.baseline = baseline; + this.frames = frames; + } + + private void FontTester_Load(object sender, EventArgs e) { + cbZoom.SelectedIndex = 2; + //cbZoom.SelectedIndexChanged += ZoomChanged; + dotPanel.MouseWheel += new MouseEventHandler(DotPanel_MouseWheel); + } + + private void PaintPixels(object sender, PaintEventArgs e) { + Graphics g = dotPanel.CreateGraphics(); + SolidBrush sbb = new SolidBrush(Color.Black); + SolidBrush sbw = new SolidBrush(Color.White); + SolidBrush sbp = new SolidBrush(Color.LightPink); + SolidBrush sb; + Pen blackPen = new(Color.Black); + Pen bluePen = new(Color.FromArgb(100, 20, 20, 200), baselineThickness); + int x, y, i, j; + + // Sycle through ecoded bytes of test text + int space = (int)nudSpace.Value; + int index = 0; + for (int c = 0; c < encoded.Length; c++) { + // Check if we have suck symbol + var f = frames.FindAll(x => x.code == encoded[c]); + if (f.Count == 1) { + // Draw the symbol + for (i = 0; i < f[0].width; i++) { + x = pixelOffset + (index + i) * cellSize - hScroll.Value; + for (j = 0; j < f[0].height; j++) { + y = pixelOffset + j * cellSize - vScroll.Value; + // Fill the cell with color + if (f[0].data[i, j]) sb = sbb; + else sb = sbw; + g.FillRectangle(sb, x, y, cellSize, cellSize); + } + } + index += (f[0].width > 0 ? f[0].width + space : 0); + } else { + blackPen.Width = cellSize; + blackPen.Alignment = System.Drawing.Drawing2D.PenAlignment.Inset; + x = pixelOffset + index * cellSize - hScroll.Value; + y = pixelOffset - vScroll.Value; + g.DrawRectangle(blackPen, x, y + cellSize, absentWidth * cellSize, (height - 2) * cellSize); + g.FillRectangle(sbp, x + cellSize, y + 2 * cellSize, (absentWidth - 2) * cellSize, (height - 4) * cellSize); + index += 5 + space; + } + } + + // Draw baseline + if (chkBaseline.Checked && baseline > 0) { + x = pixelOffset - hScroll.Value; + y = pixelOffset + baseline * cellSize - vScroll.Value; + g.DrawLine(bluePen, x, y, dotPanel.Width - 2 * pixelOffset, y); + } + } + + private void Text_Changed(object sender, EventArgs e) { + int space = (int)nudSpace.Value; + + encoded = Encoding.GetEncoding(codepage).GetBytes(tbText.Text); + + width = space > 0 ? space : 1; + for (int c = 0; c < encoded.Length; c++) { + var f = frames.FindAll(x => x.code == encoded[c]); + width += (f.Count == 1 ? f[0].width : absentWidth) + space; + } + dotPanel.Invalidate(); + } + + private void ZoomChanged(object sender, EventArgs e) { + cellSize = Convert.ToInt32(cbZoom.Text); + + int w = pixelOffset + width * cellSize; + int h = pixelOffset + height * cellSize; + + if (w <= dotPanel.Width) { + hScroll.Enabled = false; + hScroll.Value = 0; + } else { + hScroll.Maximum = w - dotPanel.Width + 12; + hScroll.Minimum = 0; + hScroll.Enabled = true; + } + + if (h <= dotPanel.Height) { + vScroll.Enabled = false; + vScroll.Value = 0; + } else { + vScroll.Maximum = h - dotPanel.Height + 12; + vScroll.Minimum = 0; + vScroll.Enabled = true; + } + + // Baseline thickness calc + baselineThickness = cellSize / 5; + if (baselineThickness > 5) baselineThickness = 5; + if (baselineThickness < 1) baselineThickness = 1; + + dotPanel.Refresh(); + } + + private void DotPanel_MouseWheel(object sender, MouseEventArgs e) { + int t = e.Delta / 120; + if (e.Delta == 0) return; + if (ModifierKeys.HasFlag(Keys.Control)) { + t += cbZoom.SelectedIndex; + if (t > cbZoom.Items.Count - 1) return; + if (t < 0) return; + cbZoom.SelectedIndex = t; + } else if (ModifierKeys.HasFlag(Keys.Shift)) { + if (hScroll.Enabled) { + t = t * -1 * cellSize + hScroll.Value; + if (t < hScroll.Minimum) t = hScroll.Minimum; + if (t > hScroll.Maximum) t = hScroll.Maximum; + hScroll.Value = t; + } + } else { + if (vScroll.Enabled) { + t = t * -1 * cellSize + vScroll.Value; + if (t < vScroll.Minimum) t = vScroll.Minimum; + if (t > vScroll.Maximum) t = vScroll.Maximum; + vScroll.Value = t; + } + } + } + + private void Scrolling(object sender, EventArgs e) { + dotPanel.Invalidate(); + } + } + + +} diff --git a/McBitFont/FontTester.resx b/McBitFont/FontTester.resx new file mode 100644 index 0000000..dcfd08d --- /dev/null +++ b/McBitFont/FontTester.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index d8815be..cec5515 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -67,6 +67,7 @@ importTextToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); importImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + exportFontLayoutPNGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); undoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -83,6 +84,7 @@ removeBeforeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); removeAfterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); CodeShiftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + testFontToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); canvasToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ClearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); FillToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -107,6 +109,10 @@ lblSelectionLabel = new System.Windows.Forms.Label(); lblSelection = new System.Windows.Forms.Label(); lblModified = new System.Windows.Forms.Label(); + dlgSavePNG = new System.Windows.Forms.SaveFileDialog(); + toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -527,9 +533,9 @@ // // fileToolStripMenuItem // - fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, importTextToolStripMenuItem1, importImageToolStripMenuItem, exportToolStripMenuItem, exitToolStripMenuItem }); + fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, toolStripSeparator1, importTextToolStripMenuItem1, importImageToolStripMenuItem, exportToolStripMenuItem, exportFontLayoutPNGToolStripMenuItem, toolStripSeparator2, exitToolStripMenuItem }); fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + fileToolStripMenuItem.Size = new System.Drawing.Size(122, 20); fileToolStripMenuItem.Text = "File"; // // newToolStripMenuItem @@ -582,6 +588,7 @@ importTextToolStripMenuItem1.Name = "importTextToolStripMenuItem1"; importTextToolStripMenuItem1.Size = new System.Drawing.Size(224, 22); importTextToolStripMenuItem1.Text = "Import text file (very limited)"; + importTextToolStripMenuItem1.ToolTipText = "Import a font from a C array in a file"; importTextToolStripMenuItem1.Click += importTextToolStripMenuItem1_Click; // // importImageToolStripMenuItem @@ -604,6 +611,15 @@ exportToolStripMenuItem.ToolTipText = "Configure and export data"; exportToolStripMenuItem.Click += button1_Click; // + // exportFontLayoutPNGToolStripMenuItem + // + exportFontLayoutPNGToolStripMenuItem.Image = Properties.Resources.picture_go; + exportFontLayoutPNGToolStripMenuItem.Name = "exportFontLayoutPNGToolStripMenuItem"; + exportFontLayoutPNGToolStripMenuItem.Size = new System.Drawing.Size(224, 22); + exportFontLayoutPNGToolStripMenuItem.Text = "Export font layout PNG"; + exportFontLayoutPNGToolStripMenuItem.ToolTipText = "Create an image with all a table showing all 256 symbols"; + exportFontLayoutPNGToolStripMenuItem.Click += ExportPNG; + // // exitToolStripMenuItem // exitToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Door_out_16; @@ -628,7 +644,7 @@ undoToolStripMenuItem.Image = Properties.Resources.arrow_undo; undoToolStripMenuItem.Name = "undoToolStripMenuItem"; undoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z; - undoToolStripMenuItem.Size = new System.Drawing.Size(164, 22); + undoToolStripMenuItem.Size = new System.Drawing.Size(180, 22); undoToolStripMenuItem.Text = "Undo"; undoToolStripMenuItem.ToolTipText = "Undo last canvas change"; undoToolStripMenuItem.Click += undoToolStripMenuItem_Click; @@ -638,7 +654,7 @@ redoToolStripMenuItem.Image = Properties.Resources.arrow_redo; redoToolStripMenuItem.Name = "redoToolStripMenuItem"; redoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y; - redoToolStripMenuItem.Size = new System.Drawing.Size(164, 22); + redoToolStripMenuItem.Size = new System.Drawing.Size(180, 22); redoToolStripMenuItem.Text = "Redo"; redoToolStripMenuItem.ToolTipText = "Redo canvas change"; redoToolStripMenuItem.Click += redoToolStripMenuItem_Click; @@ -649,7 +665,7 @@ copyToolStripMenuItem.Name = "copyToolStripMenuItem"; copyToolStripMenuItem.ShortcutKeyDisplayString = ""; copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C; - copyToolStripMenuItem.Size = new System.Drawing.Size(164, 22); + copyToolStripMenuItem.Size = new System.Drawing.Size(180, 22); copyToolStripMenuItem.Text = "Copy"; copyToolStripMenuItem.ToolTipText = "Copy current symbol to clipboard"; copyToolStripMenuItem.Click += copyToolStripMenuItem_Click; @@ -661,7 +677,7 @@ pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; pasteToolStripMenuItem.ShortcutKeyDisplayString = ""; pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V; - pasteToolStripMenuItem.Size = new System.Drawing.Size(164, 22); + pasteToolStripMenuItem.Size = new System.Drawing.Size(180, 22); pasteToolStripMenuItem.Text = "Paste"; pasteToolStripMenuItem.ToolTipText = "Paste from clipboard to current symbol"; pasteToolStripMenuItem.Click += pasteToolStripMenuItem_Click; @@ -671,8 +687,9 @@ selectToolStripMenuItem.Image = Properties.Resources.fam_rectt; selectToolStripMenuItem.Name = "selectToolStripMenuItem"; selectToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R; - selectToolStripMenuItem.Size = new System.Drawing.Size(164, 22); + selectToolStripMenuItem.Size = new System.Drawing.Size(180, 22); selectToolStripMenuItem.Text = "Select"; + selectToolStripMenuItem.ToolTipText = "Toggle Rectangle selection tool"; selectToolStripMenuItem.Click += selectToolStripMenuItem_Click; // // selectAllToolStripMenuItem @@ -681,13 +698,14 @@ selectAllToolStripMenuItem.Image = Properties.Resources.arrow_out; selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem"; selectAllToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A; - selectAllToolStripMenuItem.Size = new System.Drawing.Size(164, 22); + selectAllToolStripMenuItem.Size = new System.Drawing.Size(180, 22); selectAllToolStripMenuItem.Text = "Select All"; + selectAllToolStripMenuItem.ToolTipText = "Select entire canvas"; selectAllToolStripMenuItem.Click += selectAllToolStripMenuItem_Click; // // fontToolStripMenuItem // - fontToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { makeVarWidthToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, CodeShiftToolStripMenuItem }); + fontToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { makeVarWidthToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, CodeShiftToolStripMenuItem, toolStripSeparator3, testFontToolStripMenuItem }); fontToolStripMenuItem.Name = "fontToolStripMenuItem"; fontToolStripMenuItem.Size = new System.Drawing.Size(43, 20); fontToolStripMenuItem.Text = "Font"; @@ -767,6 +785,15 @@ CodeShiftToolStripMenuItem.ToolTipText = "Shift the font on the code line"; CodeShiftToolStripMenuItem.Click += CodeShiftToolStripMenuItem_Click; // + // testFontToolStripMenuItem + // + testFontToolStripMenuItem.Image = Properties.Resources.font; + testFontToolStripMenuItem.Name = "testFontToolStripMenuItem"; + testFontToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + testFontToolStripMenuItem.Text = "Test font"; + testFontToolStripMenuItem.ToolTipText = "Open dialog where you can test the font with any text you type"; + testFontToolStripMenuItem.Click += TestFont_Click; + // // canvasToolStripMenuItem // canvasToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { ClearToolStripMenuItem, FillToolStripMenuItem, shiftUpToolStripMenuItem, shiftDownToolStripMenuItem, shiftLeftToolStripMenuItem, shiftRightToolStripMenuItem, invertToolStripMenuItem, mirrorXToolStripMenuItem, mirrorYToolStripMenuItem, applyToolStripMenuItem }); @@ -1023,6 +1050,26 @@ lblModified.Text = "Frame modified"; lblModified.Visible = false; // + // dlgSavePNG + // + dlgSavePNG.DefaultExt = "png"; + dlgSavePNG.Filter = "PNG Image|*.png;*.PNG"; + // + // toolStripSeparator1 + // + toolStripSeparator1.Name = "toolStripSeparator1"; + toolStripSeparator1.Size = new System.Drawing.Size(221, 6); + // + // toolStripSeparator2 + // + toolStripSeparator2.Name = "toolStripSeparator2"; + toolStripSeparator2.Size = new System.Drawing.Size(221, 6); + // + // toolStripSeparator3 + // + toolStripSeparator3.Name = "toolStripSeparator3"; + toolStripSeparator3.Size = new System.Drawing.Size(212, 6); + // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); @@ -1157,6 +1204,12 @@ private System.Windows.Forms.Label lblSelection; private System.Windows.Forms.ToolStripMenuItem selectAllToolStripMenuItem; private System.Windows.Forms.Label lblModified; + private System.Windows.Forms.ToolStripMenuItem testFontToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem exportFontLayoutPNGToolStripMenuItem; + private System.Windows.Forms.SaveFileDialog dlgSavePNG; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index e3cb3ed..3977053 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; +using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Runtime.InteropServices; @@ -57,10 +58,10 @@ namespace McBitFont { public bool monospaced = false; private bool modified = false; private bool prjModified = false; - public const string version = "2.2"; + public const string version = "2.3"; public string prjName = "Untitled"; public string prjFileName = ""; - private int codepage = 1251; + public int codepage = 1251; private FrameMiniature fbuf; private bool fbuffer = false; private int baseline = 0; @@ -136,7 +137,7 @@ namespace McBitFont { tsmiCodeShift.Visible = frames.Count > 1; CodeShiftToolStripMenuItem.Visible = frames.Count > 1; - + CheckForAdd(); } [DllImport("user32.dll")] @@ -863,17 +864,17 @@ namespace McBitFont { tsmiRemoveSymbol.Enabled = false; } //copyToolStripMenuItem.Enabled = true; - if (ff.Equals(frames.First())) { + if (frames.Count > 1 && ff.Equals(frames.First())) { removeBeforeToolStripMenuItem.Enabled = false; removeAfterToolStripMenuItem.Enabled = true; tsmiRemoveBefore.Enabled = false; tsmiRemoveAfter.Enabled = true; - } else if (ff.Equals(frames.Last())) { + } else if (frames.Count > 1 && ff.Equals(frames.Last())) { removeBeforeToolStripMenuItem.Enabled = true; removeAfterToolStripMenuItem.Enabled = false; tsmiRemoveBefore.Enabled = true; tsmiRemoveAfter.Enabled = false; - } else { + } else if (frames.Count > 1) { removeBeforeToolStripMenuItem.Enabled = true; removeAfterToolStripMenuItem.Enabled = true; tsmiRemoveBefore.Enabled = true; @@ -932,6 +933,8 @@ namespace McBitFont { prjFileName = filename; prjName = Path.GetFileNameWithoutExtension(filename); + dlgSavePNG.FileName = prjName + ".png"; + dlgSave.FileName = prjName + ".mbfont"; SetWindowCap(); miniList.Items[0].Selected = true; @@ -961,7 +964,7 @@ namespace McBitFont { MessagePackSerializer.Serialize(ms, sav); ms.Close(); } - + prjName = Path.GetFileNameWithoutExtension(filename); prjFileName = filename; SetModified(false, true); @@ -1031,9 +1034,9 @@ namespace McBitFont { } } else { prependSymbolToolStripMenuItem.Enabled = false; - appendSymbolToolStripMenuItem.Enabled = false; + appendSymbolToolStripMenuItem.Enabled = true; tsmiPrepensSymbol.Enabled = false; - tsmiAppendSymbol.Enabled = false; + tsmiAppendSymbol.Enabled = true; } } @@ -1424,5 +1427,105 @@ namespace McBitFont { selection2.Y = dotHeight - 1; dotPanel.Refresh(); } + + private void TestFont_Click(object sender, EventArgs e) { + var tester = new FontTester(codepage, dotHeight, baseline, frames); + tester.ShowDialog(); + } + + private void ExportPNG(object sender, EventArgs e) { + CheckModifiedFrame(); + CheckModifiedProject(); + + if (dlgSavePNG.ShowDialog() == DialogResult.OK) { + int pixelSize = 3; + int symbolMargin = 2 * pixelSize; + int headerHeight = 100; + int maxWidth = 0; + int i, j, v, h, x, y; + string s; + + foreach (FrameMiniature f in frames) { + if (f.width > maxWidth) maxWidth = f.width; + } + + int cellWidth = (pixelSize * maxWidth + 2 * symbolMargin); + int cellHeight = (pixelSize * dotHeight + 2 * symbolMargin); + if (cellWidth < 10) cellWidth = 10; + if (cellHeight < 10) cellHeight = 10; + + int width = cellWidth * 16 + 17 + 50; + int height = cellHeight * 16 + 17 + 25 + headerHeight; + + Bitmap bmp = new(width > 450 ? width : 450, height); + Graphics g = Graphics.FromImage(bmp); + g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit; + Font font = new("Consolas", 14, FontStyle.Bold); + Brush tb = Brushes.Black; + + + // Draw basic information + g.DrawString("Font project name: " + prjName, font, tb, 10, 10); + + g.DrawString("Font height: " + dotHeight, font, tb, 10, 38); + g.DrawString("Font max width: " + maxWidth, font, tb, 10, 62); + g.DrawString("Symbols count: " + frames.Count, font, tb, 10, 86); + + g.DrawString("First code: " + frames.First().code.ToString(), font, tb, 250, 38); + g.DrawString("Last code: " + frames.Last().code.ToString(), font, tb, 250, 62); + g.DrawString("Codepage: " + codepage.ToString(), font, tb, 250, 86); + + + // Draw grid + Pen p = new(Color.FromArgb(64, 0, 0, 0), 1); + SolidBrush b = new SolidBrush(Color.FromArgb(160, Color.Black)); + //Brush b = Brushes.Black; + + int xCapOffset = cellWidth / 2 - 8; + int yCapOffset = cellHeight / 2 - 10; + for (i = 0; i < 17; i++) { + x = 50 + 17 + i * cellWidth - 1; + y = headerHeight + 17 + 25 + i * cellHeight - 1; + g.DrawLine(p, 1, y, width - 1, y); + g.DrawLine(p, x, headerHeight + 20, x, headerHeight + height - 20); + + if (i != 16) { + s = Convert.ToString(i, 16).ToUpper(); + g.DrawString(s, font, b, x + xCapOffset, headerHeight + 20); + s = "0x" + Convert.ToString(i * 16, 16).PadLeft(2, '0').ToUpper(); + g.DrawString(s, font, b, 10, y + yCapOffset); + } + } + + // Draw symbols + int code; + List ff; + Rectangle rect; + // Cycle through grid cells + for (v = 0; v < 16; v++) { + for (h = 0; h < 16; h++) { + // Check if the font has a symbol with the code + code = 16 * v + h; + ff = frames.FindAll(x => x.code == code); + if (ff.Count == 1) { + x = 50 + 17 + h * cellWidth + symbolMargin; + y = headerHeight + 17 + 25 + v * cellHeight + symbolMargin; + // Cycly through symbol's pixels and draw the black ones + for (i = 0; i < ff[0].width; i++) { + for (j = 0; j < ff[0].height; j++) { + if (ff[0].data[i, j]) { + rect = new Rectangle(x + i * pixelSize, y + j * pixelSize, pixelSize, pixelSize); + g.FillRectangle(tb, rect); + } + } + } + } + } + } + + bmp.Save(dlgSavePNG.FileName, ImageFormat.Png); + } + + } } } diff --git a/McBitFont/Form1.resx b/McBitFont/Form1.resx index fb11a13..5800d67 100644 --- a/McBitFont/Form1.resx +++ b/McBitFont/Form1.resx @@ -135,6 +135,9 @@ 336, 17 + + 644, 17 + diff --git a/McBitFont/ImageImporter.Designer.cs b/McBitFont/ImageImporter.Designer.cs index ff4c113..a2d4948 100644 --- a/McBitFont/ImageImporter.Designer.cs +++ b/McBitFont/ImageImporter.Designer.cs @@ -377,7 +377,7 @@ Name = "ImageImporter"; ShowIcon = false; ShowInTaskbar = false; - StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; Text = "Import Image"; Paint += ImageImporter_Paint; ((System.ComponentModel.ISupportInitialize)pbOriginal).EndInit(); diff --git a/McBitFont/ImageImporter.resx b/McBitFont/ImageImporter.resx index d3fcd46..75130fa 100644 --- a/McBitFont/ImageImporter.resx +++ b/McBitFont/ImageImporter.resx @@ -123,7 +123,4 @@ 17, 17 - - 147, 17 - \ No newline at end of file diff --git a/McBitFont/McBitFont.csproj b/McBitFont/McBitFont.csproj index 591cff5..5f7f705 100644 --- a/McBitFont/McBitFont.csproj +++ b/McBitFont/McBitFont.csproj @@ -20,9 +20,9 @@ true true icon_64.ico - 2.2.0.0 - 2.2.0.0 - $(VersionPrefix)2.2.0 + 2.3.0.0 + 2.3.0.0 + $(VersionPrefix)2.3.0 Anton Mukhin diff --git a/McBitFont/New.Designer.cs b/McBitFont/New.Designer.cs index 9587429..f514a1d 100644 --- a/McBitFont/New.Designer.cs +++ b/McBitFont/New.Designer.cs @@ -23,469 +23,421 @@ /// the contents of this method with the code editor. /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - this.nudNewX = new System.Windows.Forms.NumericUpDown(); - this.nudNewY = new System.Windows.Forms.NumericUpDown(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.rbMono = new System.Windows.Forms.RadioButton(); - this.rbVar = new System.Windows.Forms.RadioButton(); - this.cbNotPrintable = new System.Windows.Forms.CheckBox(); - this.cbLatin = new System.Windows.Forms.CheckBox(); - this.cbExtended = new System.Windows.Forms.CheckBox(); - this.btnOK = new System.Windows.Forms.Button(); - this.btnCancel = new System.Windows.Forms.Button(); - this.cbSingle = new System.Windows.Forms.CheckBox(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.cbEncoding = new System.Windows.Forms.ComboBox(); - this.panel1 = new System.Windows.Forms.Panel(); - this.pbChar2 = new System.Windows.Forms.PictureBox(); - this.pbChar1 = new System.Windows.Forms.PictureBox(); - this.btnFont = new System.Windows.Forms.Button(); - this.dlgFont = new System.Windows.Forms.FontDialog(); - this.cbFontBased = new System.Windows.Forms.CheckBox(); - this.lblFont = new System.Windows.Forms.Label(); - this.nudShiftX = new System.Windows.Forms.NumericUpDown(); - this.nudShiftY = new System.Windows.Forms.NumericUpDown(); - this.lblShiftX = new System.Windows.Forms.Label(); - this.lblShiftY = new System.Windows.Forms.Label(); - this.pnlFont = new System.Windows.Forms.Panel(); - this.label4 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.nudChar2 = new System.Windows.Forms.NumericUpDown(); - this.nudChar1 = new System.Windows.Forms.NumericUpDown(); - this.cbDigits = new System.Windows.Forms.CheckBox(); - ((System.ComponentModel.ISupportInitialize)(this.nudNewX)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudNewY)).BeginInit(); - this.panel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pbChar2)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pbChar1)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudShiftX)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudShiftY)).BeginInit(); - this.pnlFont.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudChar2)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudChar1)).BeginInit(); - this.SuspendLayout(); + components = new System.ComponentModel.Container(); + nudNewX = new System.Windows.Forms.NumericUpDown(); + nudNewY = new System.Windows.Forms.NumericUpDown(); + label1 = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + rbMono = new System.Windows.Forms.RadioButton(); + rbVar = new System.Windows.Forms.RadioButton(); + cbNotPrintable = new System.Windows.Forms.CheckBox(); + cbLatin = new System.Windows.Forms.CheckBox(); + cbExtended = new System.Windows.Forms.CheckBox(); + btnOK = new System.Windows.Forms.Button(); + btnCancel = new System.Windows.Forms.Button(); + cbSingle = new System.Windows.Forms.CheckBox(); + toolTip1 = new System.Windows.Forms.ToolTip(components); + cbEncoding = new System.Windows.Forms.ComboBox(); + panel1 = new System.Windows.Forms.Panel(); + pbChar2 = new System.Windows.Forms.PictureBox(); + pbChar1 = new System.Windows.Forms.PictureBox(); + btnFont = new System.Windows.Forms.Button(); + dlgFont = new System.Windows.Forms.FontDialog(); + cbFontBased = new System.Windows.Forms.CheckBox(); + lblFont = new System.Windows.Forms.Label(); + nudShiftX = new System.Windows.Forms.NumericUpDown(); + nudShiftY = new System.Windows.Forms.NumericUpDown(); + lblShiftX = new System.Windows.Forms.Label(); + lblShiftY = new System.Windows.Forms.Label(); + pnlFont = new System.Windows.Forms.Panel(); + label4 = new System.Windows.Forms.Label(); + label3 = new System.Windows.Forms.Label(); + nudChar2 = new System.Windows.Forms.NumericUpDown(); + nudChar1 = new System.Windows.Forms.NumericUpDown(); + cbDigits = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)nudNewX).BeginInit(); + ((System.ComponentModel.ISupportInitialize)nudNewY).BeginInit(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)pbChar2).BeginInit(); + ((System.ComponentModel.ISupportInitialize)pbChar1).BeginInit(); + ((System.ComponentModel.ISupportInitialize)nudShiftX).BeginInit(); + ((System.ComponentModel.ISupportInitialize)nudShiftY).BeginInit(); + pnlFont.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)nudChar2).BeginInit(); + ((System.ComponentModel.ISupportInitialize)nudChar1).BeginInit(); + SuspendLayout(); // // nudNewX // - this.nudNewX.Location = new System.Drawing.Point(68, 32); - this.nudNewX.Maximum = new decimal(new int[] { - 255, - 0, - 0, - 0}); - this.nudNewX.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.nudNewX.Name = "nudNewX"; - this.nudNewX.Size = new System.Drawing.Size(57, 20); - this.nudNewX.TabIndex = 0; - this.nudNewX.Value = new decimal(new int[] { - 32, - 0, - 0, - 0}); - this.nudNewX.ValueChanged += new System.EventHandler(this.nudNewX_ValueChanged); - this.nudNewX.Enter += new System.EventHandler(this.nudFocus); + nudNewX.Location = new System.Drawing.Point(68, 32); + nudNewX.Maximum = new decimal(new int[] { 255, 0, 0, 0 }); + nudNewX.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + nudNewX.Name = "nudNewX"; + nudNewX.Size = new System.Drawing.Size(57, 23); + nudNewX.TabIndex = 0; + nudNewX.Value = new decimal(new int[] { 32, 0, 0, 0 }); + nudNewX.ValueChanged += nudNewX_ValueChanged; + nudNewX.Enter += nudFocus; // // nudNewY // - this.nudNewY.Location = new System.Drawing.Point(68, 58); - this.nudNewY.Maximum = new decimal(new int[] { - 255, - 0, - 0, - 0}); - this.nudNewY.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.nudNewY.Name = "nudNewY"; - this.nudNewY.Size = new System.Drawing.Size(57, 20); - this.nudNewY.TabIndex = 1; - this.nudNewY.Value = new decimal(new int[] { - 32, - 0, - 0, - 0}); - this.nudNewY.ValueChanged += new System.EventHandler(this.nudNewX_ValueChanged); - this.nudNewY.Enter += new System.EventHandler(this.nudFocus); + nudNewY.Location = new System.Drawing.Point(68, 58); + nudNewY.Maximum = new decimal(new int[] { 255, 0, 0, 0 }); + nudNewY.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + nudNewY.Name = "nudNewY"; + nudNewY.Size = new System.Drawing.Size(57, 23); + nudNewY.TabIndex = 1; + nudNewY.Value = new decimal(new int[] { 32, 0, 0, 0 }); + nudNewY.ValueChanged += nudNewX_ValueChanged; + nudNewY.Enter += nudFocus; // // label1 // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(24, 34); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(38, 13); - this.label1.TabIndex = 2; - this.label1.Text = "Width:"; - this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(24, 34); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(42, 15); + label1.TabIndex = 2; + label1.Text = "Width:"; + label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // label2 // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(21, 60); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(41, 13); - this.label2.TabIndex = 3; - this.label2.Text = "Height:"; - this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(21, 60); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(46, 15); + label2.TabIndex = 3; + label2.Text = "Height:"; + label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // rbMono // - this.rbMono.AutoSize = true; - this.rbMono.Checked = true; - this.rbMono.Location = new System.Drawing.Point(24, 84); - this.rbMono.Name = "rbMono"; - this.rbMono.Size = new System.Drawing.Size(87, 17); - this.rbMono.TabIndex = 4; - this.rbMono.TabStop = true; - this.rbMono.Text = "Monospaced"; - this.rbMono.UseVisualStyleBackColor = true; + rbMono.AutoSize = true; + rbMono.Checked = true; + rbMono.Location = new System.Drawing.Point(24, 84); + rbMono.Name = "rbMono"; + rbMono.Size = new System.Drawing.Size(94, 19); + rbMono.TabIndex = 4; + rbMono.TabStop = true; + rbMono.Text = "Monospaced"; + rbMono.UseVisualStyleBackColor = true; // // rbVar // - this.rbVar.AutoSize = true; - this.rbVar.Location = new System.Drawing.Point(24, 107); - this.rbVar.Name = "rbVar"; - this.rbVar.Size = new System.Drawing.Size(91, 17); - this.rbVar.TabIndex = 5; - this.rbVar.Text = "Variable width"; - this.rbVar.UseVisualStyleBackColor = true; + rbVar.AutoSize = true; + rbVar.Location = new System.Drawing.Point(24, 107); + rbVar.Name = "rbVar"; + rbVar.Size = new System.Drawing.Size(99, 19); + rbVar.TabIndex = 5; + rbVar.Text = "Variable width"; + rbVar.UseVisualStyleBackColor = true; // // cbNotPrintable // - this.cbNotPrintable.AutoSize = true; - this.cbNotPrintable.Location = new System.Drawing.Point(140, 77); - this.cbNotPrintable.Name = "cbNotPrintable"; - this.cbNotPrintable.Size = new System.Drawing.Size(116, 17); - this.cbNotPrintable.TabIndex = 7; - this.cbNotPrintable.Text = "0-31 (Not printable)"; - this.cbNotPrintable.UseVisualStyleBackColor = true; - this.cbNotPrintable.CheckedChanged += new System.EventHandler(this.checkboxChanged); + cbNotPrintable.AutoSize = true; + cbNotPrintable.Location = new System.Drawing.Point(140, 77); + cbNotPrintable.Name = "cbNotPrintable"; + cbNotPrintable.Size = new System.Drawing.Size(130, 19); + cbNotPrintable.TabIndex = 7; + cbNotPrintable.Text = "0-31 (Not printable)"; + cbNotPrintable.UseVisualStyleBackColor = true; + cbNotPrintable.CheckedChanged += checkboxChanged; // // cbLatin // - this.cbLatin.AutoSize = true; - this.cbLatin.Checked = true; - this.cbLatin.CheckState = System.Windows.Forms.CheckState.Checked; - this.cbLatin.Location = new System.Drawing.Point(140, 100); - this.cbLatin.Name = "cbLatin"; - this.cbLatin.Size = new System.Drawing.Size(91, 17); - this.cbLatin.TabIndex = 8; - this.cbLatin.Text = "32-127 (Latin)"; - this.cbLatin.UseVisualStyleBackColor = true; - this.cbLatin.CheckedChanged += new System.EventHandler(this.checkboxChanged); + cbLatin.AutoSize = true; + cbLatin.Checked = true; + cbLatin.CheckState = System.Windows.Forms.CheckState.Checked; + cbLatin.Location = new System.Drawing.Point(140, 100); + cbLatin.Name = "cbLatin"; + cbLatin.Size = new System.Drawing.Size(98, 19); + cbLatin.TabIndex = 8; + cbLatin.Text = "32-127 (Latin)"; + cbLatin.UseVisualStyleBackColor = true; + cbLatin.CheckedChanged += checkboxChanged; // // cbExtended // - this.cbExtended.AutoSize = true; - this.cbExtended.Location = new System.Drawing.Point(140, 123); - this.cbExtended.Name = "cbExtended"; - this.cbExtended.Size = new System.Drawing.Size(119, 17); - this.cbExtended.TabIndex = 9; - this.cbExtended.Text = "128-255 (Extended)"; - this.cbExtended.UseVisualStyleBackColor = true; - this.cbExtended.CheckedChanged += new System.EventHandler(this.checkboxChanged); + cbExtended.AutoSize = true; + cbExtended.Location = new System.Drawing.Point(140, 123); + cbExtended.Name = "cbExtended"; + cbExtended.Size = new System.Drawing.Size(126, 19); + cbExtended.TabIndex = 9; + cbExtended.Text = "128-255 (Extended)"; + cbExtended.UseVisualStyleBackColor = true; + cbExtended.CheckedChanged += checkboxChanged; // // btnOK // - this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnOK.Location = new System.Drawing.Point(47, 178); - this.btnOK.Name = "btnOK"; - this.btnOK.Size = new System.Drawing.Size(75, 23); - this.btnOK.TabIndex = 10; - this.btnOK.Text = "OK"; - this.btnOK.UseVisualStyleBackColor = true; - this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + btnOK.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + btnOK.Location = new System.Drawing.Point(47, 178); + btnOK.Name = "btnOK"; + btnOK.Size = new System.Drawing.Size(75, 23); + btnOK.TabIndex = 10; + btnOK.Text = "OK"; + btnOK.UseVisualStyleBackColor = true; + btnOK.Click += btnOK_Click; // // btnCancel // - this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnCancel.Location = new System.Drawing.Point(140, 178); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 23); - this.btnCancel.TabIndex = 11; - this.btnCancel.Text = "Cancel"; - this.btnCancel.UseVisualStyleBackColor = true; - this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + btnCancel.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + btnCancel.Location = new System.Drawing.Point(140, 178); + btnCancel.Name = "btnCancel"; + btnCancel.Size = new System.Drawing.Size(75, 23); + btnCancel.TabIndex = 11; + btnCancel.Text = "Cancel"; + btnCancel.UseVisualStyleBackColor = true; + btnCancel.Click += btnCancel_Click; // // cbSingle // - this.cbSingle.AutoSize = true; - this.cbSingle.Location = new System.Drawing.Point(140, 31); - this.cbSingle.Name = "cbSingle"; - this.cbSingle.Size = new System.Drawing.Size(84, 17); - this.cbSingle.TabIndex = 12; - this.cbSingle.Text = "Single frame"; - this.cbSingle.UseVisualStyleBackColor = true; - this.cbSingle.CheckedChanged += new System.EventHandler(this.checkboxChanged); + cbSingle.AutoSize = true; + cbSingle.Location = new System.Drawing.Point(140, 31); + cbSingle.Name = "cbSingle"; + cbSingle.Size = new System.Drawing.Size(92, 19); + cbSingle.TabIndex = 12; + cbSingle.Text = "Single frame"; + cbSingle.UseVisualStyleBackColor = true; + cbSingle.CheckedChanged += checkboxChanged; // // toolTip1 // - this.toolTip1.AutoPopDelay = 10000; - this.toolTip1.InitialDelay = 500; - this.toolTip1.ReshowDelay = 100; - this.toolTip1.ToolTipTitle = "Info"; + toolTip1.AutoPopDelay = 10000; + toolTip1.InitialDelay = 500; + toolTip1.ReshowDelay = 100; + toolTip1.ToolTipTitle = "Info"; // // cbEncoding // - this.cbEncoding.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbEncoding.Enabled = false; - this.cbEncoding.FormattingEnabled = true; - this.cbEncoding.Location = new System.Drawing.Point(140, 146); - this.cbEncoding.Name = "cbEncoding"; - this.cbEncoding.Size = new System.Drawing.Size(121, 21); - this.cbEncoding.TabIndex = 13; + cbEncoding.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbEncoding.Enabled = false; + cbEncoding.FormattingEnabled = true; + cbEncoding.Location = new System.Drawing.Point(140, 146); + cbEncoding.Name = "cbEncoding"; + cbEncoding.Size = new System.Drawing.Size(121, 23); + cbEncoding.TabIndex = 13; // // panel1 // - this.panel1.Controls.Add(this.pbChar2); - this.panel1.Controls.Add(this.pbChar1); - this.panel1.Location = new System.Drawing.Point(6, 24); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(200, 124); - this.panel1.TabIndex = 14; + panel1.Controls.Add(pbChar2); + panel1.Controls.Add(pbChar1); + panel1.Location = new System.Drawing.Point(6, 24); + panel1.Name = "panel1"; + panel1.Size = new System.Drawing.Size(200, 124); + panel1.TabIndex = 14; // // pbChar2 // - this.pbChar2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pbChar2.Location = new System.Drawing.Point(100, 0); - this.pbChar2.Name = "pbChar2"; - this.pbChar2.Size = new System.Drawing.Size(100, 124); - this.pbChar2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.pbChar2.TabIndex = 1; - this.pbChar2.TabStop = false; + pbChar2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + pbChar2.Location = new System.Drawing.Point(100, 0); + pbChar2.Name = "pbChar2"; + pbChar2.Size = new System.Drawing.Size(100, 124); + pbChar2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + pbChar2.TabIndex = 1; + pbChar2.TabStop = false; // // pbChar1 // - this.pbChar1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pbChar1.Location = new System.Drawing.Point(0, 0); - this.pbChar1.Name = "pbChar1"; - this.pbChar1.Size = new System.Drawing.Size(100, 124); - this.pbChar1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.pbChar1.TabIndex = 0; - this.pbChar1.TabStop = false; + pbChar1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + pbChar1.Location = new System.Drawing.Point(0, 0); + pbChar1.Name = "pbChar1"; + pbChar1.Size = new System.Drawing.Size(100, 124); + pbChar1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + pbChar1.TabIndex = 0; + pbChar1.TabStop = false; // // btnFont // - this.btnFont.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnFont.Location = new System.Drawing.Point(6, 178); - this.btnFont.Name = "btnFont"; - this.btnFont.Size = new System.Drawing.Size(71, 23); - this.btnFont.TabIndex = 15; - this.btnFont.Text = "Font ..."; - this.btnFont.UseVisualStyleBackColor = true; - this.btnFont.Click += new System.EventHandler(this.btnFont_Click); + btnFont.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + btnFont.Location = new System.Drawing.Point(6, 178); + btnFont.Name = "btnFont"; + btnFont.Size = new System.Drawing.Size(71, 23); + btnFont.TabIndex = 15; + btnFont.Text = "Font ..."; + btnFont.UseVisualStyleBackColor = true; + btnFont.Click += btnFont_Click; // // dlgFont // - this.dlgFont.Font = new System.Drawing.Font("Courier New", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.dlgFont.ShowEffects = false; + dlgFont.Font = new System.Drawing.Font("Courier New", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + dlgFont.ShowEffects = false; // // cbFontBased // - this.cbFontBased.AutoSize = true; - this.cbFontBased.Location = new System.Drawing.Point(24, 130); - this.cbFontBased.Name = "cbFontBased"; - this.cbFontBased.Size = new System.Drawing.Size(101, 17); - this.cbFontBased.TabIndex = 16; - this.cbFontBased.Text = "Based on a font"; - this.cbFontBased.UseVisualStyleBackColor = true; - this.cbFontBased.CheckedChanged += new System.EventHandler(this.checkboxChanged); + cbFontBased.AutoSize = true; + cbFontBased.Location = new System.Drawing.Point(24, 130); + cbFontBased.Name = "cbFontBased"; + cbFontBased.Size = new System.Drawing.Size(108, 19); + cbFontBased.TabIndex = 16; + cbFontBased.Text = "Based on a font"; + cbFontBased.UseVisualStyleBackColor = true; + cbFontBased.CheckedChanged += checkboxChanged; // // lblFont // - this.lblFont.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.lblFont.Location = new System.Drawing.Point(83, 183); - this.lblFont.Name = "lblFont"; - this.lblFont.Size = new System.Drawing.Size(123, 18); - this.lblFont.TabIndex = 17; - this.lblFont.Text = "font"; + lblFont.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left; + lblFont.Location = new System.Drawing.Point(83, 183); + lblFont.Name = "lblFont"; + lblFont.Size = new System.Drawing.Size(123, 18); + lblFont.TabIndex = 17; + lblFont.Text = "font"; // // nudShiftX // - this.nudShiftX.Location = new System.Drawing.Point(61, 2); - this.nudShiftX.Minimum = new decimal(new int[] { - 100, - 0, - 0, - -2147483648}); - this.nudShiftX.Name = "nudShiftX"; - this.nudShiftX.Size = new System.Drawing.Size(45, 20); - this.nudShiftX.TabIndex = 18; - this.nudShiftX.ValueChanged += new System.EventHandler(this.nudNewX_ValueChanged); + nudShiftX.Location = new System.Drawing.Point(61, 2); + nudShiftX.Minimum = new decimal(new int[] { 100, 0, 0, int.MinValue }); + nudShiftX.Name = "nudShiftX"; + nudShiftX.Size = new System.Drawing.Size(45, 23); + nudShiftX.TabIndex = 18; + nudShiftX.ValueChanged += nudNewX_ValueChanged; // // nudShiftY // - this.nudShiftY.Location = new System.Drawing.Point(161, 2); - this.nudShiftY.Minimum = new decimal(new int[] { - 100, - 0, - 0, - -2147483648}); - this.nudShiftY.Name = "nudShiftY"; - this.nudShiftY.Size = new System.Drawing.Size(45, 20); - this.nudShiftY.TabIndex = 19; - this.nudShiftY.ValueChanged += new System.EventHandler(this.nudNewX_ValueChanged); + nudShiftY.Location = new System.Drawing.Point(161, 2); + nudShiftY.Minimum = new decimal(new int[] { 100, 0, 0, int.MinValue }); + nudShiftY.Name = "nudShiftY"; + nudShiftY.Size = new System.Drawing.Size(45, 23); + nudShiftY.TabIndex = 19; + nudShiftY.ValueChanged += nudNewX_ValueChanged; // // lblShiftX // - this.lblShiftX.AutoSize = true; - this.lblShiftX.Location = new System.Drawing.Point(14, 4); - this.lblShiftX.Name = "lblShiftX"; - this.lblShiftX.Size = new System.Drawing.Size(41, 13); - this.lblShiftX.TabIndex = 20; - this.lblShiftX.Text = "Shift X:"; - this.lblShiftX.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + lblShiftX.AutoSize = true; + lblShiftX.Location = new System.Drawing.Point(14, 4); + lblShiftX.Name = "lblShiftX"; + lblShiftX.Size = new System.Drawing.Size(44, 15); + lblShiftX.TabIndex = 20; + lblShiftX.Text = "Shift X:"; + lblShiftX.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // lblShiftY // - this.lblShiftY.AutoSize = true; - this.lblShiftY.Location = new System.Drawing.Point(114, 4); - this.lblShiftY.Name = "lblShiftY"; - this.lblShiftY.Size = new System.Drawing.Size(41, 13); - this.lblShiftY.TabIndex = 21; - this.lblShiftY.Text = "Shift Y:"; - this.lblShiftY.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + lblShiftY.AutoSize = true; + lblShiftY.Location = new System.Drawing.Point(114, 4); + lblShiftY.Name = "lblShiftY"; + lblShiftY.Size = new System.Drawing.Size(44, 15); + lblShiftY.TabIndex = 21; + lblShiftY.Text = "Shift Y:"; + lblShiftY.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // pnlFont // - this.pnlFont.Controls.Add(this.label4); - this.pnlFont.Controls.Add(this.label3); - this.pnlFont.Controls.Add(this.nudChar2); - this.pnlFont.Controls.Add(this.nudChar1); - this.pnlFont.Controls.Add(this.lblShiftX); - this.pnlFont.Controls.Add(this.lblShiftY); - this.pnlFont.Controls.Add(this.panel1); - this.pnlFont.Controls.Add(this.btnFont); - this.pnlFont.Controls.Add(this.nudShiftY); - this.pnlFont.Controls.Add(this.lblFont); - this.pnlFont.Controls.Add(this.nudShiftX); - this.pnlFont.Dock = System.Windows.Forms.DockStyle.Right; - this.pnlFont.Location = new System.Drawing.Point(270, 0); - this.pnlFont.Name = "pnlFont"; - this.pnlFont.Size = new System.Drawing.Size(214, 211); - this.pnlFont.TabIndex = 22; - this.pnlFont.Visible = false; + pnlFont.Controls.Add(label4); + pnlFont.Controls.Add(label3); + pnlFont.Controls.Add(nudChar2); + pnlFont.Controls.Add(nudChar1); + pnlFont.Controls.Add(lblShiftX); + pnlFont.Controls.Add(lblShiftY); + pnlFont.Controls.Add(panel1); + pnlFont.Controls.Add(btnFont); + pnlFont.Controls.Add(nudShiftY); + pnlFont.Controls.Add(lblFont); + pnlFont.Controls.Add(nudShiftX); + pnlFont.Dock = System.Windows.Forms.DockStyle.Right; + pnlFont.Location = new System.Drawing.Point(270, 0); + pnlFont.Name = "pnlFont"; + pnlFont.Size = new System.Drawing.Size(214, 211); + pnlFont.TabIndex = 22; + pnlFont.Visible = false; // // label4 // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(112, 152); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(45, 13); - this.label4.TabIndex = 25; - this.label4.Text = "Sample:"; - this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + label4.AutoSize = true; + label4.Location = new System.Drawing.Point(112, 152); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(49, 15); + label4.TabIndex = 25; + label4.Text = "Sample:"; + label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // label3 // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(14, 152); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(45, 13); - this.label3.TabIndex = 24; - this.label3.Text = "Sample:"; - this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + label3.AutoSize = true; + label3.Location = new System.Drawing.Point(14, 152); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(49, 15); + label3.TabIndex = 24; + label3.Text = "Sample:"; + label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // nudChar2 // - this.nudChar2.Location = new System.Drawing.Point(161, 149); - this.nudChar2.Maximum = new decimal(new int[] { - 255, - 0, - 0, - 0}); - this.nudChar2.Name = "nudChar2"; - this.nudChar2.Size = new System.Drawing.Size(45, 20); - this.nudChar2.TabIndex = 23; - this.nudChar2.Value = new decimal(new int[] { - 97, - 0, - 0, - 0}); - this.nudChar2.ValueChanged += new System.EventHandler(this.nudNewX_ValueChanged); + nudChar2.Location = new System.Drawing.Point(161, 149); + nudChar2.Maximum = new decimal(new int[] { 255, 0, 0, 0 }); + nudChar2.Name = "nudChar2"; + nudChar2.Size = new System.Drawing.Size(45, 23); + nudChar2.TabIndex = 23; + nudChar2.Value = new decimal(new int[] { 97, 0, 0, 0 }); + nudChar2.ValueChanged += nudNewX_ValueChanged; // // nudChar1 // - this.nudChar1.Location = new System.Drawing.Point(61, 149); - this.nudChar1.Maximum = new decimal(new int[] { - 255, - 0, - 0, - 0}); - this.nudChar1.Name = "nudChar1"; - this.nudChar1.Size = new System.Drawing.Size(45, 20); - this.nudChar1.TabIndex = 22; - this.nudChar1.Value = new decimal(new int[] { - 65, - 0, - 0, - 0}); - this.nudChar1.ValueChanged += new System.EventHandler(this.nudNewX_ValueChanged); + nudChar1.Location = new System.Drawing.Point(61, 149); + nudChar1.Maximum = new decimal(new int[] { 255, 0, 0, 0 }); + nudChar1.Name = "nudChar1"; + nudChar1.Size = new System.Drawing.Size(45, 23); + nudChar1.TabIndex = 22; + nudChar1.Value = new decimal(new int[] { 65, 0, 0, 0 }); + nudChar1.ValueChanged += nudNewX_ValueChanged; // // cbDigits // - this.cbDigits.AutoSize = true; - this.cbDigits.Location = new System.Drawing.Point(140, 54); - this.cbDigits.Name = "cbDigits"; - this.cbDigits.Size = new System.Drawing.Size(74, 17); - this.cbDigits.TabIndex = 23; - this.cbDigits.Text = "Digits only"; - this.cbDigits.UseVisualStyleBackColor = true; - this.cbDigits.CheckedChanged += new System.EventHandler(this.checkboxChanged); + cbDigits.AutoSize = true; + cbDigits.Location = new System.Drawing.Point(140, 54); + cbDigits.Name = "cbDigits"; + cbDigits.Size = new System.Drawing.Size(82, 19); + cbDigits.TabIndex = 23; + cbDigits.Text = "Digits only"; + cbDigits.UseVisualStyleBackColor = true; + cbDigits.CheckedChanged += checkboxChanged; // // New // - this.AcceptButton = this.btnOK; - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; - this.CancelButton = this.btnCancel; - this.ClientSize = new System.Drawing.Size(484, 211); - this.Controls.Add(this.cbDigits); - this.Controls.Add(this.pnlFont); - this.Controls.Add(this.cbFontBased); - this.Controls.Add(this.cbEncoding); - this.Controls.Add(this.cbSingle); - this.Controls.Add(this.btnCancel); - this.Controls.Add(this.btnOK); - this.Controls.Add(this.cbExtended); - this.Controls.Add(this.cbLatin); - this.Controls.Add(this.cbNotPrintable); - this.Controls.Add(this.rbVar); - this.Controls.Add(this.rbMono); - this.Controls.Add(this.label2); - this.Controls.Add(this.label1); - this.Controls.Add(this.nudNewY); - this.Controls.Add(this.nudNewX); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.MinimumSize = new System.Drawing.Size(300, 220); - this.Name = "New"; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "New"; - this.Load += new System.EventHandler(this.New_Load); - ((System.ComponentModel.ISupportInitialize)(this.nudNewX)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudNewY)).EndInit(); - this.panel1.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.pbChar2)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pbChar1)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudShiftX)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudShiftY)).EndInit(); - this.pnlFont.ResumeLayout(false); - this.pnlFont.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudChar2)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudChar1)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); + AcceptButton = btnOK; + AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + CancelButton = btnCancel; + ClientSize = new System.Drawing.Size(484, 211); + Controls.Add(cbDigits); + Controls.Add(pnlFont); + Controls.Add(cbFontBased); + Controls.Add(cbEncoding); + Controls.Add(cbSingle); + Controls.Add(btnCancel); + Controls.Add(btnOK); + Controls.Add(cbExtended); + Controls.Add(cbLatin); + Controls.Add(cbNotPrintable); + Controls.Add(rbVar); + Controls.Add(rbMono); + Controls.Add(label2); + Controls.Add(label1); + Controls.Add(nudNewY); + Controls.Add(nudNewX); + FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + MaximizeBox = false; + MinimizeBox = false; + MinimumSize = new System.Drawing.Size(300, 220); + Name = "New"; + ShowIcon = false; + ShowInTaskbar = false; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + Text = "New"; + Load += New_Load; + ((System.ComponentModel.ISupportInitialize)nudNewX).EndInit(); + ((System.ComponentModel.ISupportInitialize)nudNewY).EndInit(); + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)pbChar2).EndInit(); + ((System.ComponentModel.ISupportInitialize)pbChar1).EndInit(); + ((System.ComponentModel.ISupportInitialize)nudShiftX).EndInit(); + ((System.ComponentModel.ISupportInitialize)nudShiftY).EndInit(); + pnlFont.ResumeLayout(false); + pnlFont.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)nudChar2).EndInit(); + ((System.ComponentModel.ISupportInitialize)nudChar1).EndInit(); + ResumeLayout(false); + PerformLayout(); } diff --git a/McBitFont/New.resx b/McBitFont/New.resx index 5f989c5..4baa590 100644 --- a/McBitFont/New.resx +++ b/McBitFont/New.resx @@ -1,17 +1,17 @@  - diff --git a/McBitFont/Properties/Resources.Designer.cs b/McBitFont/Properties/Resources.Designer.cs index 4f5dce3..99698dd 100644 --- a/McBitFont/Properties/Resources.Designer.cs +++ b/McBitFont/Properties/Resources.Designer.cs @@ -270,6 +270,16 @@ namespace McBitFont.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap font { + get { + object obj = ResourceManager.GetObject("font", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -300,6 +310,16 @@ namespace McBitFont.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap picture_go { + get { + object obj = ResourceManager.GetObject("picture_go", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/McBitFont/Properties/Resources.resx b/McBitFont/Properties/Resources.resx index caf2781..a99b88d 100644 --- a/McBitFont/Properties/Resources.resx +++ b/McBitFont/Properties/Resources.resx @@ -136,6 +136,9 @@ ..\Resources\Famfamfam-Silk-Page-copy.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\font.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\arrow_inout.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -223,10 +226,13 @@ ..\Resources\undo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\arrow_out.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\picture_go.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/McBitFont/Resources/font.png b/McBitFont/Resources/font.png new file mode 100644 index 0000000..b7960db Binary files /dev/null and b/McBitFont/Resources/font.png differ diff --git a/McBitFont/Resources/picture_go.png b/McBitFont/Resources/picture_go.png new file mode 100644 index 0000000..27c63c5 Binary files /dev/null and b/McBitFont/Resources/picture_go.png differ diff --git a/README.md b/README.md index b2a4122..70829fa 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,10 @@ New project dialog ![New project](/images/Screenshot_New.png) +Font test dialog + +![Font tester](/images/Screenshot_Font-tester.png) + Export dialog ![Export](/images/Screenshot_Export.png) @@ -48,3 +52,7 @@ Import Image dialog Code Shift dialog ![Code Shift](/images/Screenshot_Code-shift.png) + +Font PNG export example + +![PNG export example](/images/Font_Minecraft_Rus_5x7_vw.png) diff --git a/TODO.txt b/TODO.txt index 2ef9d56..4e808ca 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,15 +1,10 @@ Application: -V Move Select and Baseline buttons right -V Display RectSelection width and width -V Indicate modified project by adding "*" to window caption +- Consider migrating to WPF in order to make DPI aware UI Functionality: -V Copy/Paste should be aware of rectangle selection -V Select All function -V Select and Select All shortcuts +V Allow to add frames to Single-frame "fonts" +V Type a string to see the result (test the font) +V Export image with All characers table Bugs: -V EncodingProvider hotfix -V Check if frame changed before exit application -V Hostory does not record pastes from clipboard -V Undo/Redo menu availability recalculation does not happen sometimes +- In some cases after switching to a symbol dotPanel mouse move causes "Out of range" exception (history.Pre after width change?) diff --git a/examples/Font_3x3_mono_Latin.mbfont b/examples/Font_3x3_mono_Latin.mbfont new file mode 100644 index 0000000..98444f3 Binary files /dev/null and b/examples/Font_3x3_mono_Latin.mbfont differ diff --git a/examples/Font_3x5_Latin.mbfont b/examples/Font_3x5_Latin.mbfont new file mode 100644 index 0000000..4fbc854 Binary files /dev/null and b/examples/Font_3x5_Latin.mbfont differ diff --git a/examples/Font_4x6_vw.mbfont b/examples/Font_4x6_vw.mbfont new file mode 100644 index 0000000..6ba6410 Binary files /dev/null and b/examples/Font_4x6_vw.mbfont differ diff --git a/examples/Font_9x17_Alagard_cyr_vw.mbfont b/examples/Font_9x17_Alagard_cyr_vw.mbfont new file mode 100644 index 0000000..a180d29 Binary files /dev/null and b/examples/Font_9x17_Alagard_cyr_vw.mbfont differ diff --git a/examples/Font_Minecraft_Rus_5x7_vw.mbfont b/examples/Font_Minecraft_Rus_5x7_vw.mbfont new file mode 100644 index 0000000..0a05b5e Binary files /dev/null and b/examples/Font_Minecraft_Rus_5x7_vw.mbfont differ diff --git a/icons/famfamfam/font.png b/icons/famfamfam/font.png new file mode 100644 index 0000000..b7960db Binary files /dev/null and b/icons/famfamfam/font.png differ diff --git a/icons/famfamfam/picture_go.png b/icons/famfamfam/picture_go.png new file mode 100644 index 0000000..27c63c5 Binary files /dev/null and b/icons/famfamfam/picture_go.png differ diff --git a/images/Font_Minecraft_Rus_5x7_vw.png b/images/Font_Minecraft_Rus_5x7_vw.png new file mode 100644 index 0000000..e7ef398 Binary files /dev/null and b/images/Font_Minecraft_Rus_5x7_vw.png differ diff --git a/images/Screenshot_Font-tester.png b/images/Screenshot_Font-tester.png new file mode 100644 index 0000000..18822f6 Binary files /dev/null and b/images/Screenshot_Font-tester.png differ