diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 6ccd571..1b25674 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -119,6 +119,7 @@ dlgSavePNG = new System.Windows.Forms.SaveFileDialog(); pnlRightButtons = new System.Windows.Forms.Panel(); pnlInfo = new System.Windows.Forms.Panel(); + zerofyWidthToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -720,7 +721,7 @@ // // fontToolStripMenuItem // - fontToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { makeVarWidthToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, CodeShiftToolStripMenuItem, toolStripSeparator3, previousSymbolToolStripMenuItem, nextSymbolToolStripMenuItem, toolStripSeparator4, testFontToolStripMenuItem }); + fontToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { makeVarWidthToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, zerofyWidthToolStripMenuItem, CodeShiftToolStripMenuItem, toolStripSeparator3, previousSymbolToolStripMenuItem, nextSymbolToolStripMenuItem, toolStripSeparator4, testFontToolStripMenuItem }); fontToolStripMenuItem.Name = "fontToolStripMenuItem"; fontToolStripMenuItem.Size = new System.Drawing.Size(43, 20); fontToolStripMenuItem.Text = "Font"; @@ -730,7 +731,7 @@ // makeVarWidthToolStripMenuItem.Image = Properties.Resources.z_asterisk; makeVarWidthToolStripMenuItem.Name = "makeVarWidthToolStripMenuItem"; - makeVarWidthToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + makeVarWidthToolStripMenuItem.Size = new System.Drawing.Size(241, 22); makeVarWidthToolStripMenuItem.Text = "Make Variable Width"; makeVarWidthToolStripMenuItem.ToolTipText = "Make Font Variable width one"; makeVarWidthToolStripMenuItem.Visible = false; @@ -743,7 +744,7 @@ prependSymbolToolStripMenuItem.Name = "prependSymbolToolStripMenuItem"; prependSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Ins"; prependSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Insert; - prependSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + prependSymbolToolStripMenuItem.Size = new System.Drawing.Size(241, 22); prependSymbolToolStripMenuItem.Text = "Prepend symbol"; prependSymbolToolStripMenuItem.ToolTipText = "Add a symbol to the beginning of the sequence"; prependSymbolToolStripMenuItem.Click += prependSymbolToolStripMenuItem_Click; @@ -755,7 +756,7 @@ appendSymbolToolStripMenuItem.Name = "appendSymbolToolStripMenuItem"; appendSymbolToolStripMenuItem.ShortcutKeyDisplayString = ""; appendSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.End; - appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(241, 22); appendSymbolToolStripMenuItem.Text = "Append symbol"; appendSymbolToolStripMenuItem.ToolTipText = "Add a symbol to the end of the sequence"; appendSymbolToolStripMenuItem.Click += prependSymbolToolStripMenuItem_Click; @@ -767,7 +768,7 @@ removeSymbolToolStripMenuItem.Name = "removeSymbolToolStripMenuItem"; removeSymbolToolStripMenuItem.ShortcutKeyDisplayString = ""; removeSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Delete; - removeSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + removeSymbolToolStripMenuItem.Size = new System.Drawing.Size(241, 22); removeSymbolToolStripMenuItem.Text = "Remove symbol"; removeSymbolToolStripMenuItem.ToolTipText = "Remove current symbol (works only for first or last symbol in the sequence)"; removeSymbolToolStripMenuItem.Click += removeSymbolToolStripMenuItem_Click; @@ -777,7 +778,7 @@ removeBeforeToolStripMenuItem.Enabled = false; removeBeforeToolStripMenuItem.Image = Properties.Resources.delete; removeBeforeToolStripMenuItem.Name = "removeBeforeToolStripMenuItem"; - removeBeforeToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + removeBeforeToolStripMenuItem.Size = new System.Drawing.Size(241, 22); removeBeforeToolStripMenuItem.Text = "Remove all before selected"; removeBeforeToolStripMenuItem.ToolTipText = "Remove all symbols before current one"; removeBeforeToolStripMenuItem.Click += removeBeforeToolStripMenuItem_Click; @@ -787,7 +788,7 @@ removeAfterToolStripMenuItem.Enabled = false; removeAfterToolStripMenuItem.Image = Properties.Resources.delete; removeAfterToolStripMenuItem.Name = "removeAfterToolStripMenuItem"; - removeAfterToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + removeAfterToolStripMenuItem.Size = new System.Drawing.Size(241, 22); removeAfterToolStripMenuItem.Text = "Remove all after selected"; removeAfterToolStripMenuItem.ToolTipText = "Remove all symbols after current one"; removeAfterToolStripMenuItem.Click += removeAfterToolStripMenuItem_Click; @@ -796,7 +797,7 @@ // CodeShiftToolStripMenuItem.Image = Properties.Resources.z_align_center; CodeShiftToolStripMenuItem.Name = "CodeShiftToolStripMenuItem"; - CodeShiftToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + CodeShiftToolStripMenuItem.Size = new System.Drawing.Size(241, 22); CodeShiftToolStripMenuItem.Text = "Code shift"; CodeShiftToolStripMenuItem.ToolTipText = "Shift the font on the code line"; CodeShiftToolStripMenuItem.Click += CodeShiftToolStripMenuItem_Click; @@ -804,13 +805,13 @@ // toolStripSeparator3 // toolStripSeparator3.Name = "toolStripSeparator3"; - toolStripSeparator3.Size = new System.Drawing.Size(212, 6); + toolStripSeparator3.Size = new System.Drawing.Size(238, 6); // // previousSymbolToolStripMenuItem // previousSymbolToolStripMenuItem.Name = "previousSymbolToolStripMenuItem"; previousSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.Left; - previousSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + previousSymbolToolStripMenuItem.Size = new System.Drawing.Size(241, 22); previousSymbolToolStripMenuItem.Text = "Previous Symbol"; previousSymbolToolStripMenuItem.Click += previousSymbolToolStripMenuItem_Click; // @@ -818,20 +819,20 @@ // nextSymbolToolStripMenuItem.Name = "nextSymbolToolStripMenuItem"; nextSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.Right; - nextSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + nextSymbolToolStripMenuItem.Size = new System.Drawing.Size(241, 22); nextSymbolToolStripMenuItem.Text = "Next symbol"; nextSymbolToolStripMenuItem.Click += nextSymbolToolStripMenuItem_Click; // // toolStripSeparator4 // toolStripSeparator4.Name = "toolStripSeparator4"; - toolStripSeparator4.Size = new System.Drawing.Size(212, 6); + toolStripSeparator4.Size = new System.Drawing.Size(238, 6); // // testFontToolStripMenuItem // testFontToolStripMenuItem.Image = Properties.Resources.font; testFontToolStripMenuItem.Name = "testFontToolStripMenuItem"; - testFontToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + testFontToolStripMenuItem.Size = new System.Drawing.Size(241, 22); testFontToolStripMenuItem.Text = "Test font"; testFontToolStripMenuItem.ToolTipText = "Open dialog where you can test the font with any text you type"; testFontToolStripMenuItem.Click += TestFont_Click; @@ -1140,6 +1141,13 @@ pnlInfo.Size = new System.Drawing.Size(103, 154); pnlInfo.TabIndex = 28; // + // zerofyWidthToolStripMenuItem + // + zerofyWidthToolStripMenuItem.Name = "zerofyWidthToolStripMenuItem"; + zerofyWidthToolStripMenuItem.Size = new System.Drawing.Size(241, 22); + zerofyWidthToolStripMenuItem.Text = "Make all blank symbols 0-width"; + zerofyWidthToolStripMenuItem.Click += ZerofyBlankWidth; + // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); @@ -1273,6 +1281,7 @@ private System.Windows.Forms.Panel pnlInfo; private System.Windows.Forms.ToolStripMenuItem toggleBarToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.ToolStripMenuItem zerofyWidthToolStripMenuItem; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 5952bc3..1685256 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -98,6 +98,17 @@ namespace McBitFont { } } + // Check if a frame is "blank" + private static bool IsFrameBlank(FrameMiniature frame) { + if (frame.code == 32) return false; // Space character is always blank, so skip it + for (int i = 0; i < frame.width; i++) { + for (int j = 0; j < frame.height; j++) { + if (frame.data[i, j]) return false; + } + } + return true; + } + // Remember sidebar panels locations private void SideBarRecalc() { @@ -1633,5 +1644,25 @@ namespace McBitFont { } PrevNextMenuCheck(); } + + private void ZerofyBlankWidth(object sender, EventArgs e) { + if (monospaced) return; // Does not work for monospaced fonts + if (frames.Count < 2) return; // Does not work for single images + + for (int i = 0; i < frames.Count; i++) { + if (IsFrameBlank(frames[i])) { + Bitmap bmp; + + frames[i] = FrameResize(frames[i], 0, dotHeight); + bmp = GetMiniPictue(frames[i]); + string s = frames[i].code.ToString().PadLeft(3, '0'); + ilMiniatures.Images.RemoveByKey(s); + ilMiniatures.Images.Add(s, (Image)bmp); + miniList.Items[s].ImageKey = s; + + SetModified(true, true); + } + } + } } }