From 024c7b76bd9328fb8244350031edf38e69ab990e Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Mon, 15 May 2023 15:24:10 +0300 Subject: [PATCH 1/2] New fonts could be based on a selected font --- McBitFont/Form1.cs | 55 ++++- McBitFont/New.Designer.cs | 271 ++++++++++++++++++++++-- McBitFont/New.cs | 102 ++++++++- McBitFont/New.resx | 3 + icons_9x9.mbf => examples/icons_9x9.mbf | Bin 5 files changed, 408 insertions(+), 23 deletions(-) rename icons_9x9.mbf => examples/icons_9x9.mbf (100%) diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 9091e68..182c3b9 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -14,6 +14,7 @@ using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.InteropServices.ComTypes; using System.Diagnostics; +using System.Drawing.Drawing2D; namespace McBitFont { public partial class MainForm : Form { @@ -247,6 +248,7 @@ namespace McBitFont { } } } + modified = true; dotPanel.Refresh(); } @@ -262,6 +264,7 @@ namespace McBitFont { } } } + modified = true; dotPanel.Refresh(); } @@ -304,6 +307,7 @@ namespace McBitFont { } } } + modified = true; dotPanel.Refresh(); } @@ -319,6 +323,7 @@ namespace McBitFont { } } } + modified = true; dotPanel.Refresh(); } @@ -328,6 +333,7 @@ namespace McBitFont { f.data[i, j] = !f.data[i, j]; } } + modified = true; dotPanel.Refresh(); } @@ -346,6 +352,7 @@ namespace McBitFont { b--; } } + modified = true; dotPanel.Refresh(); } @@ -364,6 +371,7 @@ namespace McBitFont { b--; } } + modified = true; dotPanel.Refresh(); } @@ -451,6 +459,29 @@ namespace McBitFont { return enc.GetString(new byte[] { (byte)code }); } + private FrameMiniature fillFrame(FrameMiniature ff, Font font, int sx, int sy) { + string s = decodeSymbol(ff.code); + Bitmap bmp = new Bitmap(ff.width, ff.height); + Graphics g = Graphics.FromImage(bmp); + g.Clear(Color.White); + g.SmoothingMode = SmoothingMode.None; + g.InterpolationMode = InterpolationMode.NearestNeighbor; + g.PixelOffsetMode = PixelOffsetMode.Half; + g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit; + g.DrawString(s, font, Brushes.Black, sx, sy); + g.Flush(); + + for (int i = 0; i < ff.width; i++) + for (int j = 0; j < ff.height; j++) { + if (bmp.GetPixel(i, j).Name != "ffffffff") + ff.data[i, j] = true; + } + + bmp.Dispose(); + g.Dispose(); + return ff; + } + private void newToolStripMenuItem_Click(object sender, EventArgs e) { if (prjModified) { if (MessageBox.Show("The project is modified.\nDo you want to save it first?", "Project was modified!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { @@ -458,7 +489,7 @@ namespace McBitFont { return; } } - New form = new New(); + New form = new New(this); if (form.ShowDialog() == DialogResult.OK) { frames.Clear(); miniList.Clear(); @@ -469,6 +500,7 @@ namespace McBitFont { int newh = (int)form.nudNewY.Value; nudX.Value = neww; nudY.Value = newh; + FrameMiniature newf; if (form.cbSingle.Checked) { frames.Add( new FrameMiniature(0, neww, newh)); //f = frames.Find(x => x.code == 0); @@ -477,16 +509,25 @@ namespace McBitFont { } else { int i; if (form.cbNotPrintable.Checked) { - for (i=0; i < 32; i++) - frames.Add(new FrameMiniature(i, neww, newh)); + for (i = 0; i < 32; i++) { + newf = new FrameMiniature(i, neww, newh); + if (form.cbFontBased.Checked) newf = fillFrame(newf, form.dlgFont.Font, (int)form.nudShiftX.Value, (int)form.nudShiftY.Value); + frames.Add(newf); + } } if (form.cbLatin.Checked) { - for (i = 32; i < 128; i++) - frames.Add(new FrameMiniature(i, neww, newh)); + for (i = 32; i < 128; i++) { + newf = new FrameMiniature(i, neww, newh); + if (form.cbFontBased.Checked) newf = fillFrame(newf, form.dlgFont.Font, (int)form.nudShiftX.Value, (int)form.nudShiftY.Value); + frames.Add(newf); + } } if (form.cbExtended.Checked) { - for (i = 128; i < 256; i++) - frames.Add(new FrameMiniature(i, neww, newh)); + for (i = 128; i < 256; i++) { + newf = new FrameMiniature(i, neww, newh); + if (form.cbFontBased.Checked) newf = fillFrame(newf, form.dlgFont.Font, (int)form.nudShiftX.Value, (int)form.nudShiftY.Value); + frames.Add(newf); + } } monospaced = form.rbMono.Checked; } diff --git a/McBitFont/New.Designer.cs b/McBitFont/New.Designer.cs index 60537f8..659a399 100644 --- a/McBitFont/New.Designer.cs +++ b/McBitFont/New.Designer.cs @@ -38,13 +38,37 @@ 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.nudChar2 = new System.Windows.Forms.NumericUpDown(); + this.nudChar1 = new System.Windows.Forms.NumericUpDown(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); ((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(); // // nudNewX // - this.nudNewX.Location = new System.Drawing.Point(74, 19); + this.nudNewX.Location = new System.Drawing.Point(68, 32); this.nudNewX.Maximum = new decimal(new int[] { 255, 0, @@ -63,11 +87,12 @@ 0, 0, 0}); + this.nudNewX.ValueChanged += new System.EventHandler(this.nudNewX_ValueChanged); this.nudNewX.Enter += new System.EventHandler(this.nudFocus); // // nudNewY // - this.nudNewY.Location = new System.Drawing.Point(74, 45); + this.nudNewY.Location = new System.Drawing.Point(68, 58); this.nudNewY.Maximum = new decimal(new int[] { 255, 0, @@ -86,12 +111,13 @@ 0, 0, 0}); + this.nudNewY.ValueChanged += new System.EventHandler(this.nudNewX_ValueChanged); this.nudNewY.Enter += new System.EventHandler(this.nudFocus); // // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(30, 21); + 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; @@ -101,7 +127,7 @@ // label2 // this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(27, 47); + 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; @@ -112,7 +138,7 @@ // this.rbMono.AutoSize = true; this.rbMono.Checked = true; - this.rbMono.Location = new System.Drawing.Point(30, 71); + 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; @@ -123,7 +149,7 @@ // rbVar // this.rbVar.AutoSize = true; - this.rbVar.Location = new System.Drawing.Point(30, 94); + 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; @@ -133,7 +159,7 @@ // cbNotPrintable // this.cbNotPrintable.AutoSize = true; - this.cbNotPrintable.Location = new System.Drawing.Point(146, 35); + this.cbNotPrintable.Location = new System.Drawing.Point(140, 54); this.cbNotPrintable.Name = "cbNotPrintable"; this.cbNotPrintable.Size = new System.Drawing.Size(116, 17); this.cbNotPrintable.TabIndex = 7; @@ -145,7 +171,7 @@ this.cbLatin.AutoSize = true; this.cbLatin.Checked = true; this.cbLatin.CheckState = System.Windows.Forms.CheckState.Checked; - this.cbLatin.Location = new System.Drawing.Point(146, 58); + this.cbLatin.Location = new System.Drawing.Point(140, 77); this.cbLatin.Name = "cbLatin"; this.cbLatin.Size = new System.Drawing.Size(91, 17); this.cbLatin.TabIndex = 8; @@ -155,7 +181,7 @@ // cbExtended // this.cbExtended.AutoSize = true; - this.cbExtended.Location = new System.Drawing.Point(146, 81); + this.cbExtended.Location = new System.Drawing.Point(140, 100); this.cbExtended.Name = "cbExtended"; this.cbExtended.Size = new System.Drawing.Size(119, 17); this.cbExtended.TabIndex = 9; @@ -165,7 +191,8 @@ // // btnOK // - this.btnOK.Location = new System.Drawing.Point(56, 143); + 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; @@ -175,8 +202,9 @@ // // 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(165, 143); + 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; @@ -187,7 +215,7 @@ // cbSingle // this.cbSingle.AutoSize = true; - this.cbSingle.Location = new System.Drawing.Point(146, 12); + 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; @@ -207,17 +235,206 @@ this.cbEncoding.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cbEncoding.Enabled = false; this.cbEncoding.FormattingEnabled = true; - this.cbEncoding.Location = new System.Drawing.Point(146, 104); + this.cbEncoding.Location = new System.Drawing.Point(140, 123); this.cbEncoding.Name = "cbEncoding"; this.cbEncoding.Size = new System.Drawing.Size(121, 21); this.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; + // + // 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; + // + // 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; + // + // 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); + // + // 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; + // + // 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.cbFontBased_CheckedChanged); + // + // 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"; + // + // 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); + // + // 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); + // + // 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; + // + // 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; + // + // 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; + // + // 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); + // + // 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); + // + // 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; + // + // 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; + // // New // this.AcceptButton = this.btnOK; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.CancelButton = this.btnCancel; - this.ClientSize = new System.Drawing.Size(284, 181); + this.ClientSize = new System.Drawing.Size(484, 211); + 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); @@ -233,7 +450,6 @@ this.Controls.Add(this.nudNewX); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; - this.MaximumSize = new System.Drawing.Size(300, 220); this.MinimizeBox = false; this.MinimumSize = new System.Drawing.Size(300, 220); this.Name = "New"; @@ -244,6 +460,15 @@ 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(); @@ -265,5 +490,21 @@ public System.Windows.Forms.CheckBox cbSingle; private System.Windows.Forms.ToolTip toolTip1; public System.Windows.Forms.ComboBox cbEncoding; + public System.Windows.Forms.Panel panel1; + private System.Windows.Forms.PictureBox pbChar2; + private System.Windows.Forms.PictureBox pbChar1; + private System.Windows.Forms.Button btnFont; + public System.Windows.Forms.FontDialog dlgFont; + public System.Windows.Forms.CheckBox cbFontBased; + private System.Windows.Forms.Label lblFont; + public System.Windows.Forms.NumericUpDown nudShiftX; + public System.Windows.Forms.NumericUpDown nudShiftY; + private System.Windows.Forms.Label lblShiftX; + private System.Windows.Forms.Label lblShiftY; + private System.Windows.Forms.Panel pnlFont; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + public System.Windows.Forms.NumericUpDown nudChar2; + public System.Windows.Forms.NumericUpDown nudChar1; } } \ No newline at end of file diff --git a/McBitFont/New.cs b/McBitFont/New.cs index 674982f..add3740 100644 --- a/McBitFont/New.cs +++ b/McBitFont/New.cs @@ -3,10 +3,12 @@ using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; +using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using static System.Net.Mime.MediaTypeNames; namespace McBitFont { public partial class New : Form { @@ -25,18 +27,26 @@ namespace McBitFont { } } + private MainForm mainForm; - public New() { + + public New(MainForm form) { InitializeComponent(); + mainForm = form; + this.Width = 300; this.Height = 250; } private void cbSingle_CheckedChanged(object sender, EventArgs e) { bool c = !cbSingle.Checked; + bool f = cbFontBased.Checked; cbNotPrintable.Enabled = c; cbLatin.Enabled = c; cbExtended.Enabled = c; + cbFontBased.Enabled = c; rbMono.Enabled = c; rbVar.Enabled = c; + pnlFont.Visible = c && f; + this.Width = c && f ? 500 : 300; } private void New_Load(object sender, EventArgs e) { @@ -59,6 +69,78 @@ namespace McBitFont { cbEncoding.Items.Add(new EncodingItem(1256, "Arabic")); cbEncoding.Items.Add(new EncodingItem(1257, "Baltic")); cbEncoding.SelectedIndex = 1; + + lblFont.Text = dlgFont.Font.Name + " " + dlgFont.Font.Size.ToString(); + updateChars(); + } + + private void updateChars() { + int neww, newh; + const int pbw = 100; + const int pbh = 124; + int w = (int)nudNewX.Value; + int h = (int)nudNewY.Value; + int difw = pbw - w; + int difh = pbh - h; + string[] chars = { "A", "a" }; + PictureBox[] pbs = { pbChar1, pbChar2 }; + + if (difw > 0) { + if (difh > 0) { + //not wider, not taller + if (difw < difh) { + neww = pbw; + newh = h * pbw / w; + } else { + newh = pbh; + neww = w * pbh / h; + } + } else { + // not wider, taller + newh = pbh; + neww = w * pbh / h; + } + } else { + if (difh > 0) { + //wider, not taller + neww = pbw; + newh = h * pbw / w; + } else { + // wider, taller + if (difw > difh) { + neww = pbw; + newh = h * pbw / w; + } else { + newh = pbh; + neww = w * pbh / h; + } + } + } + + + Bitmap bmp, result; + Graphics g; + chars[0] = mainForm.decodeSymbol((int)nudChar1.Value); + chars[1] = mainForm.decodeSymbol((int)nudChar2.Value); + for (int i = 0; i < 2; i++) { + bmp = new Bitmap((int)nudNewX.Value, (int)nudNewY.Value); + g = Graphics.FromImage(bmp); + g.Clear(Color.White); + g.SmoothingMode = SmoothingMode.None; + g.InterpolationMode = InterpolationMode.NearestNeighbor; + g.PixelOffsetMode = PixelOffsetMode.Half; + g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit; + g.DrawString(chars[i], dlgFont.Font, Brushes.Black, (int)nudShiftX.Value, (int)nudShiftY.Value); + g.Flush(); + + result = new Bitmap(neww, newh); + using (Graphics gr = Graphics.FromImage(result)) { + gr.InterpolationMode = InterpolationMode.NearestNeighbor; + gr.PixelOffsetMode = PixelOffsetMode.Half; + gr.DrawImage(bmp, 0, 0, neww, newh); + } + pbs[i].Image = result; + } } private void btnCancel_Click(object sender, EventArgs e) { @@ -78,5 +160,23 @@ namespace McBitFont { private void cbExtended_CheckedChanged(object sender, EventArgs e) { cbEncoding.Enabled = cbExtended.Checked; } + + private void cbFontBased_CheckedChanged(object sender, EventArgs e) { + bool c = !cbSingle.Checked; + bool f = cbFontBased.Checked; + pnlFont.Visible = c && f; + this.Width = c && f ? 500 : 300; + } + + private void btnFont_Click(object sender, EventArgs e) { + if (dlgFont.ShowDialog() == DialogResult.OK) { + lblFont.Text = dlgFont.Font.Name + " " + dlgFont.Font.Size.ToString(); + updateChars(); + } + } + + private void nudNewX_ValueChanged(object sender, EventArgs e) { + updateChars(); + } } } diff --git a/McBitFont/New.resx b/McBitFont/New.resx index df8339b..5f989c5 100644 --- a/McBitFont/New.resx +++ b/McBitFont/New.resx @@ -120,4 +120,7 @@ 17, 17 + + 114, 17 + \ No newline at end of file diff --git a/icons_9x9.mbf b/examples/icons_9x9.mbf similarity index 100% rename from icons_9x9.mbf rename to examples/icons_9x9.mbf From c5f832b44ad4dd9d4aadabcf03caa556aee59ade Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Mon, 15 May 2023 16:26:56 +0300 Subject: [PATCH 2/2] Copy and paste functionality. V1.1 --- McBitFont/Form1.Designer.cs | 183 ++++++++++-------- McBitFont/Form1.cs | 29 ++- McBitFont/McBitFont.csproj | 33 ++++ McBitFont/Properties/Resources.Designer.cs | 110 +++++++++++ McBitFont/Properties/Resources.resx | 67 +++++-- .../Resources/Famfamfam-Silk-Disk.16.png | Bin 0 -> 899 bytes .../Resources/Famfamfam-Silk-Door-out.16.png | Bin 0 -> 932 bytes .../Famfamfam-Silk-Folder-page.16.png | Bin 0 -> 931 bytes .../Resources/Famfamfam-Silk-Folder.16.png | Bin 0 -> 732 bytes .../Resources/Famfamfam-Silk-Page-copy.16.png | Bin 0 -> 966 bytes .../Famfamfam-Silk-Page-paste.16.png | Bin 0 -> 914 bytes .../Famfamfam-Silk-Page-white.16.png | Bin 0 -> 388 bytes ...amfamfam-Silk-Shape-flip-horizontal.16.png | Bin 0 -> 465 bytes .../Famfamfam-Silk-Shape-flip-vertical.16.png | Bin 0 -> 465 bytes .../Ionic-Ionicons-Invert-mode-outline.16.png | Bin 0 -> 239 bytes McBitFont/Resources/action_check.png | Bin 0 -> 371 bytes icons/Avosoft-Warm-Toolbar-Paste.16.png | Bin 0 -> 661 bytes ...Custom-Icon-Design-Flatastic-1-Copy.16.png | Bin 0 -> 585 bytes ...ustom-Icon-Design-Flatastic-8-Paste.16.png | Bin 0 -> 584 bytes ...ystal-Clear-Mimetype-kmultiple-copy.16.png | Bin 0 -> 632 bytes icons/Famfamfam-Silk-Disk.16.png | Bin 0 -> 899 bytes icons/Famfamfam-Silk-Door-out.16.png | Bin 0 -> 932 bytes icons/Famfamfam-Silk-Folder-page.16.png | Bin 0 -> 931 bytes icons/Famfamfam-Silk-Folder.16.png | Bin 0 -> 732 bytes icons/Famfamfam-Silk-Page-copy.16.png | Bin 0 -> 966 bytes icons/Famfamfam-Silk-Page-paste.16.png | Bin 0 -> 914 bytes icons/Famfamfam-Silk-Page-white-copy.16.png | Bin 0 -> 387 bytes icons/Famfamfam-Silk-Page-white.16.png | Bin 0 -> 388 bytes ...amfamfam-Silk-Shape-flip-horizontal.16.png | Bin 0 -> 465 bytes .../Famfamfam-Silk-Shape-flip-vertical.16.png | Bin 0 -> 465 bytes icons/Iconleak-Stainless-Copy.16.png | Bin 0 -> 646 bytes 31 files changed, 326 insertions(+), 96 deletions(-) create mode 100644 McBitFont/Resources/Famfamfam-Silk-Disk.16.png create mode 100644 McBitFont/Resources/Famfamfam-Silk-Door-out.16.png create mode 100644 McBitFont/Resources/Famfamfam-Silk-Folder-page.16.png create mode 100644 McBitFont/Resources/Famfamfam-Silk-Folder.16.png create mode 100644 McBitFont/Resources/Famfamfam-Silk-Page-copy.16.png create mode 100644 McBitFont/Resources/Famfamfam-Silk-Page-paste.16.png create mode 100644 McBitFont/Resources/Famfamfam-Silk-Page-white.16.png create mode 100644 McBitFont/Resources/Famfamfam-Silk-Shape-flip-horizontal.16.png create mode 100644 McBitFont/Resources/Famfamfam-Silk-Shape-flip-vertical.16.png create mode 100644 McBitFont/Resources/Ionic-Ionicons-Invert-mode-outline.16.png create mode 100644 McBitFont/Resources/action_check.png create mode 100644 icons/Avosoft-Warm-Toolbar-Paste.16.png create mode 100644 icons/Custom-Icon-Design-Flatastic-1-Copy.16.png create mode 100644 icons/Custom-Icon-Design-Flatastic-8-Paste.16.png create mode 100644 icons/Everaldo-Crystal-Clear-Mimetype-kmultiple-copy.16.png create mode 100644 icons/Famfamfam-Silk-Disk.16.png create mode 100644 icons/Famfamfam-Silk-Door-out.16.png create mode 100644 icons/Famfamfam-Silk-Folder-page.16.png create mode 100644 icons/Famfamfam-Silk-Folder.16.png create mode 100644 icons/Famfamfam-Silk-Page-copy.16.png create mode 100644 icons/Famfamfam-Silk-Page-paste.16.png create mode 100644 icons/Famfamfam-Silk-Page-white-copy.16.png create mode 100644 icons/Famfamfam-Silk-Page-white.16.png create mode 100644 icons/Famfamfam-Silk-Shape-flip-horizontal.16.png create mode 100644 icons/Famfamfam-Silk-Shape-flip-vertical.16.png create mode 100644 icons/Iconleak-Stainless-Copy.16.png diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 5ed27e2..7eacd0c 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -50,14 +50,22 @@ this.label5 = new System.Windows.Forms.Label(); this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.dlgSave = new System.Windows.Forms.SaveFileDialog(); + this.dlgOpen = new System.Windows.Forms.OpenFileDialog(); this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.prependSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.appendSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.removeSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.applyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.shiftUpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.shiftDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.shiftLeftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -65,12 +73,6 @@ this.invertToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mirrorXToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.mirrorYToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.dlgSave = new System.Windows.Forms.SaveFileDialog(); - this.dlgOpen = new System.Windows.Forms.OpenFileDialog(); - this.prependSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.appendSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)(this.nudX)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudY)).BeginInit(); this.panel1.SuspendLayout(); @@ -405,6 +407,60 @@ this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); this.fileToolStripMenuItem.Text = "File"; // + // editToolStripMenuItem + // + this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.copyToolStripMenuItem, + this.pasteToolStripMenuItem, + this.prependSymbolToolStripMenuItem, + this.appendSymbolToolStripMenuItem, + this.removeSymbolToolStripMenuItem, + this.applyToolStripMenuItem}); + this.editToolStripMenuItem.Name = "editToolStripMenuItem"; + this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); + this.editToolStripMenuItem.Text = "Edit"; + // + // toolsToolStripMenuItem + // + this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.shiftUpToolStripMenuItem, + this.shiftDownToolStripMenuItem, + this.shiftLeftToolStripMenuItem, + this.shiftRightToolStripMenuItem, + this.invertToolStripMenuItem, + this.mirrorXToolStripMenuItem, + this.mirrorYToolStripMenuItem, + this.exportToolStripMenuItem}); + this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem"; + this.toolsToolStripMenuItem.Size = new System.Drawing.Size(46, 20); + this.toolsToolStripMenuItem.Text = "Tools"; + // + // exportToolStripMenuItem + // + this.exportToolStripMenuItem.Name = "exportToolStripMenuItem"; + this.exportToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+E"; + this.exportToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E))); + this.exportToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + this.exportToolStripMenuItem.Text = "Export"; + this.exportToolStripMenuItem.Click += new System.EventHandler(this.button1_Click); + // + // aboutToolStripMenuItem + // + this.aboutToolStripMenuItem.Enabled = false; + this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; + this.aboutToolStripMenuItem.Size = new System.Drawing.Size(52, 20); + this.aboutToolStripMenuItem.Text = "About"; + // + // dlgSave + // + this.dlgSave.DefaultExt = "mbf"; + this.dlgSave.Filter = "McBitFont files|*.mbf|All files|*.*"; + // + // dlgOpen + // + this.dlgOpen.DefaultExt = "mbf"; + this.dlgOpen.Filter = "McBitFont files|*.mbf|All files|*.*"; + // // newToolStripMenuItem // this.newToolStripMenuItem.Image = global::McBitFont.Properties.Resources.file; @@ -427,7 +483,7 @@ // // saveToolStripMenuItem // - this.saveToolStripMenuItem.Image = global::McBitFont.Properties.Resources.save; + this.saveToolStripMenuItem.Image = global::McBitFont.Properties.Resources.Famfamfam_Silk_Disk_16; this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; this.saveToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+S"; this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); @@ -437,21 +493,47 @@ // // exitToolStripMenuItem // + this.exitToolStripMenuItem.Image = global::McBitFont.Properties.Resources.Famfamfam_Silk_Door_out_16; this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; this.exitToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.exitToolStripMenuItem.Text = "Exit"; this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); // - // editToolStripMenuItem + // copyToolStripMenuItem // - this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.prependSymbolToolStripMenuItem, - this.appendSymbolToolStripMenuItem, - this.removeSymbolToolStripMenuItem, - this.applyToolStripMenuItem}); - this.editToolStripMenuItem.Name = "editToolStripMenuItem"; - this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); - this.editToolStripMenuItem.Text = "Edit"; + this.copyToolStripMenuItem.Enabled = false; + this.copyToolStripMenuItem.Image = global::McBitFont.Properties.Resources.Famfamfam_Silk_Page_copy_16; + this.copyToolStripMenuItem.Name = "copyToolStripMenuItem"; + this.copyToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.copyToolStripMenuItem.Text = "Copy"; + this.copyToolStripMenuItem.Click += new System.EventHandler(this.copyToolStripMenuItem_Click); + // + // pasteToolStripMenuItem + // + this.pasteToolStripMenuItem.Enabled = false; + this.pasteToolStripMenuItem.Image = global::McBitFont.Properties.Resources.Famfamfam_Silk_Page_paste_16; + this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; + this.pasteToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.pasteToolStripMenuItem.Text = "Paste"; + this.pasteToolStripMenuItem.Click += new System.EventHandler(this.pasteToolStripMenuItem_Click); + // + // prependSymbolToolStripMenuItem + // + this.prependSymbolToolStripMenuItem.Enabled = false; + this.prependSymbolToolStripMenuItem.Image = global::McBitFont.Properties.Resources.action_add; + this.prependSymbolToolStripMenuItem.Name = "prependSymbolToolStripMenuItem"; + this.prependSymbolToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.prependSymbolToolStripMenuItem.Text = "Prepend symbol"; + this.prependSymbolToolStripMenuItem.Click += new System.EventHandler(this.prependSymbolToolStripMenuItem_Click); + // + // appendSymbolToolStripMenuItem + // + this.appendSymbolToolStripMenuItem.Enabled = false; + this.appendSymbolToolStripMenuItem.Image = global::McBitFont.Properties.Resources.action_add; + this.appendSymbolToolStripMenuItem.Name = "appendSymbolToolStripMenuItem"; + this.appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.appendSymbolToolStripMenuItem.Text = "Append symbol"; + this.appendSymbolToolStripMenuItem.Click += new System.EventHandler(this.prependSymbolToolStripMenuItem_Click); // // removeSymbolToolStripMenuItem // @@ -464,26 +546,12 @@ // // applyToolStripMenuItem // + this.applyToolStripMenuItem.Image = global::McBitFont.Properties.Resources.action_check; this.applyToolStripMenuItem.Name = "applyToolStripMenuItem"; this.applyToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.applyToolStripMenuItem.Text = "Apply"; this.applyToolStripMenuItem.Click += new System.EventHandler(this.button2_Click); // - // toolsToolStripMenuItem - // - this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.shiftUpToolStripMenuItem, - this.shiftDownToolStripMenuItem, - this.shiftLeftToolStripMenuItem, - this.shiftRightToolStripMenuItem, - this.invertToolStripMenuItem, - this.mirrorXToolStripMenuItem, - this.mirrorYToolStripMenuItem, - this.exportToolStripMenuItem}); - this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem"; - this.toolsToolStripMenuItem.Size = new System.Drawing.Size(46, 20); - this.toolsToolStripMenuItem.Text = "Tools"; - // // shiftUpToolStripMenuItem // this.shiftUpToolStripMenuItem.Image = global::McBitFont.Properties.Resources.arrow_top; @@ -526,6 +594,7 @@ // // invertToolStripMenuItem // + this.invertToolStripMenuItem.Image = global::McBitFont.Properties.Resources.Ionic_Ionicons_Invert_mode_outline_16; this.invertToolStripMenuItem.Name = "invertToolStripMenuItem"; this.invertToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+I"; this.invertToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I))); @@ -535,6 +604,7 @@ // // mirrorXToolStripMenuItem // + this.mirrorXToolStripMenuItem.Image = global::McBitFont.Properties.Resources.Famfamfam_Silk_Shape_flip_horizontal_16; this.mirrorXToolStripMenuItem.Name = "mirrorXToolStripMenuItem"; this.mirrorXToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+X"; this.mirrorXToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X))); @@ -544,6 +614,7 @@ // // mirrorYToolStripMenuItem // + this.mirrorYToolStripMenuItem.Image = global::McBitFont.Properties.Resources.Famfamfam_Silk_Shape_flip_vertical_16; this.mirrorYToolStripMenuItem.Name = "mirrorYToolStripMenuItem"; this.mirrorYToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Y"; this.mirrorYToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y))); @@ -551,50 +622,6 @@ this.mirrorYToolStripMenuItem.Text = "Mirror Y"; this.mirrorYToolStripMenuItem.Click += new System.EventHandler(this.btnMirrorY_Click); // - // exportToolStripMenuItem - // - this.exportToolStripMenuItem.Name = "exportToolStripMenuItem"; - this.exportToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+E"; - this.exportToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E))); - this.exportToolStripMenuItem.Size = new System.Drawing.Size(197, 22); - this.exportToolStripMenuItem.Text = "Export"; - this.exportToolStripMenuItem.Click += new System.EventHandler(this.button1_Click); - // - // aboutToolStripMenuItem - // - this.aboutToolStripMenuItem.Enabled = false; - this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; - this.aboutToolStripMenuItem.Size = new System.Drawing.Size(52, 20); - this.aboutToolStripMenuItem.Text = "About"; - // - // dlgSave - // - this.dlgSave.DefaultExt = "mbf"; - this.dlgSave.Filter = "McBitFont files|*.mbf|All files|*.*"; - // - // dlgOpen - // - this.dlgOpen.DefaultExt = "mbf"; - this.dlgOpen.Filter = "McBitFont files|*.mbf|All files|*.*"; - // - // prependSymbolToolStripMenuItem - // - this.prependSymbolToolStripMenuItem.Enabled = false; - this.prependSymbolToolStripMenuItem.Image = global::McBitFont.Properties.Resources.action_add; - this.prependSymbolToolStripMenuItem.Name = "prependSymbolToolStripMenuItem"; - this.prependSymbolToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.prependSymbolToolStripMenuItem.Text = "Prepend symbol"; - this.prependSymbolToolStripMenuItem.Click += new System.EventHandler(this.prependSymbolToolStripMenuItem_Click); - // - // appendSymbolToolStripMenuItem - // - this.appendSymbolToolStripMenuItem.Enabled = false; - this.appendSymbolToolStripMenuItem.Image = global::McBitFont.Properties.Resources.action_add; - this.appendSymbolToolStripMenuItem.Name = "appendSymbolToolStripMenuItem"; - this.appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.appendSymbolToolStripMenuItem.Text = "Append symbol"; - this.appendSymbolToolStripMenuItem.Click += new System.EventHandler(this.prependSymbolToolStripMenuItem_Click); - // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -682,6 +709,8 @@ private System.Windows.Forms.ToolStripMenuItem exportToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem prependSymbolToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem appendSymbolToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem pasteToolStripMenuItem; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 182c3b9..88f005b 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -50,9 +50,11 @@ namespace McBitFont { public bool monospaced = false; bool modified = false; bool prjModified = false; - public const string version = "1.0"; + public const string version = "1.1"; public string prjName = "Untitled"; public int codepage = 1251; + private FrameMiniature fbuf; + private bool fbuffer = false; public MainForm() { InitializeComponent(); @@ -73,7 +75,7 @@ namespace McBitFont { cbZoom.SelectedIndexChanged += cbZoom_SelectedIndexChanged; frames.Add(new FrameMiniature(0, dotWidth, dotHeight)); - miniList.Items.Add("0", "0 Single", "0"); + miniList.Items.Add("000", "000 Single", "000"); miniList.Refresh(); miniList.Items[0].Selected = true; miniList.Select(); @@ -82,6 +84,8 @@ namespace McBitFont { ListViewItem_SetSpacing(miniList, 50 + 2, 50 + 22); this.Text = "McBitFont " + version + " - " + prjName; + + fbuf = new FrameMiniature(0, dotWidth, dotHeight); } [DllImport("user32.dll")] @@ -207,6 +211,8 @@ namespace McBitFont { w = pixelOffset + dotWidth * (cellSize + gap); h = pixelOffset + dotHeight * (cellSize + gap); cbZoom_SelectedIndexChanged(cbZoom, null); + + fbuffer = false; } private void cbZoom_SelectedIndexChanged(object sender, EventArgs e) { @@ -548,6 +554,7 @@ namespace McBitFont { this.Text = "McBitFont " + version + " - " + prjName; modified = false; checkForAdd(); + fbuffer = false; } } @@ -561,6 +568,8 @@ namespace McBitFont { } if (miniList.SelectedItems.Count == 0) { removeSymbolToolStripMenuItem.Enabled = false; + copyToolStripMenuItem.Enabled = false; + pasteToolStripMenuItem.Enabled = false; return; //miniList.Items[0].Selected = true; } @@ -577,6 +586,9 @@ namespace McBitFont { } else { removeSymbolToolStripMenuItem.Enabled = false; } + copyToolStripMenuItem.Enabled = true; + if (fbuffer) pasteToolStripMenuItem.Enabled = true; + else pasteToolStripMenuItem.Enabled = false; } private void saveToolStripMenuItem_Click(object sender, EventArgs e) { @@ -638,6 +650,7 @@ namespace McBitFont { prjName = Path.GetFileNameWithoutExtension(dlgOpen.FileName); this.Text = "McBitFont " + version + " - " + prjName; checkForAdd(); + fbuffer = false; } } @@ -683,6 +696,18 @@ namespace McBitFont { } } + private void copyToolStripMenuItem_Click(object sender, EventArgs e) { + fbuffer = true; + fbuf = copyFrame(f); + pasteToolStripMenuItem.Enabled = true; + } + + private void pasteToolStripMenuItem_Click(object sender, EventArgs e) { + Array.Copy(fbuf.data, f.data, fbuf.data.Length); + dotPanel.Refresh(); + modified = true; + } + private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { if (prjModified) { if (MessageBox.Show("The project is modified.\nAre you sure you want to quit?", "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { diff --git a/McBitFont/McBitFont.csproj b/McBitFont/McBitFont.csproj index b8b4ffb..3f1cc61 100644 --- a/McBitFont/McBitFont.csproj +++ b/McBitFont/McBitFont.csproj @@ -125,5 +125,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/McBitFont/Properties/Resources.Designer.cs b/McBitFont/Properties/Resources.Designer.cs index e1c0540..dc052f5 100644 --- a/McBitFont/Properties/Resources.Designer.cs +++ b/McBitFont/Properties/Resources.Designer.cs @@ -70,6 +70,16 @@ namespace McBitFont.Properties { } } + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap action_check { + get { + object obj = ResourceManager.GetObject("action_check", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Поиск локализованного ресурса типа System.Drawing.Bitmap. /// @@ -120,6 +130,96 @@ namespace McBitFont.Properties { } } + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Famfamfam_Silk_Disk_16 { + get { + object obj = ResourceManager.GetObject("Famfamfam-Silk-Disk.16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Famfamfam_Silk_Door_out_16 { + get { + object obj = ResourceManager.GetObject("Famfamfam-Silk-Door-out.16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Famfamfam_Silk_Folder_16 { + get { + object obj = ResourceManager.GetObject("Famfamfam-Silk-Folder.16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Famfamfam_Silk_Folder_page_16 { + get { + object obj = ResourceManager.GetObject("Famfamfam-Silk-Folder-page.16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Famfamfam_Silk_Page_copy_16 { + get { + object obj = ResourceManager.GetObject("Famfamfam-Silk-Page-copy.16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Famfamfam_Silk_Page_paste_16 { + get { + object obj = ResourceManager.GetObject("Famfamfam-Silk-Page-paste.16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Famfamfam_Silk_Page_white_16 { + get { + object obj = ResourceManager.GetObject("Famfamfam-Silk-Page-white.16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Famfamfam_Silk_Shape_flip_horizontal_16 { + get { + object obj = ResourceManager.GetObject("Famfamfam-Silk-Shape-flip-horizontal.16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Famfamfam_Silk_Shape_flip_vertical_16 { + get { + object obj = ResourceManager.GetObject("Famfamfam-Silk-Shape-flip-vertical.16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Поиск локализованного ресурса типа System.Drawing.Bitmap. /// @@ -140,6 +240,16 @@ namespace McBitFont.Properties { } } + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Ionic_Ionicons_Invert_mode_outline_16 { + get { + object obj = ResourceManager.GetObject("Ionic-Ionicons-Invert-mode-outline.16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Поиск локализованного ресурса типа System.Drawing.Bitmap. /// diff --git a/McBitFont/Properties/Resources.resx b/McBitFont/Properties/Resources.resx index 73dfd4b..5f104de 100644 --- a/McBitFont/Properties/Resources.resx +++ b/McBitFont/Properties/Resources.resx @@ -118,31 +118,64 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\action_add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\arrow_next.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\action_remove.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Famfamfam-Silk-Page-copy.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Famfamfam-Silk-Disk.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Famfamfam-Silk-Folder.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\arrow_back.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\arrow_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\action_check.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\arrow_next.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\arrow_top.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\file.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\folder_open.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Famfamfam-Silk-Page-white.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\save.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Famfamfam-Silk-Door-out.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Famfamfam-Silk-Folder-page.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\action_add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Famfamfam-Silk-Page-paste.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\action_remove.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Famfamfam-Silk-Shape-flip-vertical.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\file.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_top.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Famfamfam-Silk-Shape-flip-horizontal.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\folder_open.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Ionic-Ionicons-Invert-mode-outline.16.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/Famfamfam-Silk-Disk.16.png b/McBitFont/Resources/Famfamfam-Silk-Disk.16.png new file mode 100644 index 0000000000000000000000000000000000000000..95383d3c630e45e3d5dd2d6484b958f6f28e3beb GIT binary patch literal 899 zcmV-}1AP36P)aSyftdPHEO&yYP>dT zx;1IKG-N>G1mQ^!xJm{NwHUIBUFQjLCDI-F2Sc?ehC}pWktt z+j*no>GAqyjLDg`-RklCbDP@O<@Vj^_%md&p1R>WZM|}u*_5!_dZXiVn%e4}`{L~R z>hSt>o!;*A`=h?(+vfLoq2TM7*nFktjjGkf*zz)Btn2anZ3EmN zWQ@vtnaDM1y1UTtd7B3^Fkh#(%*{Qv*}`AI}UR2b7^5ET&I%!FV<6DIfI3V zkC{QBtG}l~ElKH5rp8eSgm-m3l~ z43jI=)RdI8H4Jp)RHMQpmNQIlGd4C<(lcnPQ_auHOigE)JY}j39F*r|GfbPVp)U&s z@-<~83^QiU(N};1`Ig#J2JzYR5h^A&b23QITYxZQ(gZdJ2`TBSB_>N3Enl{9?o3X8 ZRseH_M8~#V%b5TG002ovPDHLkV1iJT{9yn9 literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/Famfamfam-Silk-Door-out.16.png b/McBitFont/Resources/Famfamfam-Silk-Door-out.16.png new file mode 100644 index 0000000000000000000000000000000000000000..466ea2c5903e31c1d807f6d9c94f421b786099ce GIT binary patch literal 932 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 literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/Famfamfam-Silk-Page-white.16.png b/McBitFont/Resources/Famfamfam-Silk-Page-white.16.png new file mode 100644 index 0000000000000000000000000000000000000000..6e013b639be893bd4c9e01e3f210e049a38522d4 GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8(g2?jS0D`pzkmORFo5KrKYxIvdw~y-oHAv~J$v@{?c0DR^RGaIgi3<^g3V0+${I8MWn@s8IPu@auODPS z3!YyElw@f4ba4!kxEy-^I$yH^k3%4{rs>_@$2@7@|JNtY6(F50mF`FG- z97^>xQ@;l?ER>m3eD}wa>wYZT92%WxytDoJ@Pm?(eyd}hb@QKNc5Y8>W2f%=C3OW0Vsz&x6t4PQ6Ur3IXc_uY{QncaGKsh& PU^jWX`njxgN@xNAoT<7s literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/Famfamfam-Silk-Shape-flip-horizontal.16.png b/McBitFont/Resources/Famfamfam-Silk-Shape-flip-horizontal.16.png new file mode 100644 index 0000000000000000000000000000000000000000..d54e45fc9380e5bd846bfcfc52f50df3ce94cd2c GIT binary patch literal 465 zcmV;?0WSWDP)dsi4(3)-t%qx{_j9Cw)YZ{5!!YxyyJXS*Ts~{ z*K3wP0iu!x52}_v1~O(J{GK`e=HlZ&3+CP}U;J?Xksmgs$O_!&*fiTtL_60?_Kj?-I*Uf(?3t${HSN$L!imc8$SbW z$(?n(c?HPE&F6m3+3{r0m7g=VKLgsh^U}}l7k>gBv;XR^ZRdY(KL2y&sUJXREZzSc zXf?zaJB3~|0(~b_666=m!1=9iW1Zqg#c#Jcy%p<#1n0(Yw{O=ee)HbAa;jH0P+hL4 zi(`ny<>Z6|%r_zeb}*gsF*;GBX_#9Y$rA2#>)@?BetgG7g{E)WzIBuF)OOAetKGX! zoH%t-`oX5Y_WKu(Ts(HkBVJhT&{_4QhbhZeFYO9AqMfs5`NBm#Yy2m8`+5oLN!c|)>;kzvhJ&L49G+U5W)X7F_Nb6Mw<&;$V58S|_F literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/Ionic-Ionicons-Invert-mode-outline.16.png b/McBitFont/Resources/Ionic-Ionicons-Invert-mode-outline.16.png new file mode 100644 index 0000000000000000000000000000000000000000..2a17107ebb0acf95458beaab8ba4a1d2ff5d3154 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5M?jcysy3fAP;jBA zi(`nz>8+FZavnAiY1ywdf%Vdf3g&W2b?YP9D~u}4bp?W!l`K^|arUN7iw{o_-@3{> z)-V4alz+g$&!W)fxba>1C*~gv!UgQ>9E@U?So+j4I*a*B?pK}cr_ay&IOM^ipz?~^ z+mG0K4(NQob0oSj;H=qCT}6j@1I}v-s}iN%lgTe~DWM4fd=*zV literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/action_check.png b/McBitFont/Resources/action_check.png new file mode 100644 index 0000000000000000000000000000000000000000..42aea42e0b485fb1e94b6b6f5f502ee874adfb1a GIT binary patch literal 371 zcmV-(0gV2MP)>?2R#kb20&wiYPYrSR)aKJMY#RdQb7y#^4bnA~= R^i2Q&002ovPDHLkV1j%llrR7Q literal 0 HcmV?d00001 diff --git a/icons/Avosoft-Warm-Toolbar-Paste.16.png b/icons/Avosoft-Warm-Toolbar-Paste.16.png new file mode 100644 index 0000000000000000000000000000000000000000..c05dfe2a22461c9f37df26f7d8bc46d83d1532ff GIT binary patch literal 661 zcmV;G0&4wru ztc8Sxh&K|Llah3EbBl?Ibx=JFMe1?d{~`FMaYeOtkXXSH)r?d|Nzl6CX-_44xa$dq=_oPorMXs>ES`}_O%_xA7c z@qK=P(xZyls*k>ZUFz%Xs$n{LdwsZeQ;m+0xo>c_O5qNVWg@UF11r>Lo@ zsj8@~uDz(6<;Ak{_W6;NmhsfX|LE5L^yMm)=ivYV0338uPE!Ez_2~Ed_5S`F_WKka z9r+-Q?c?z5^TonF_whiCbQk~t0MbcBK~xyiHOOZ}L17dC;FHRwt+dZMw~RaN(T;Xf zC|a~>7Y+aai}!kYK0W}#?DW)x3p(a#e&&bA-+9ta16EM;|M&a(8CwcArxoYXXck%1G)C1fhK|GG9c05W7+LKRu^S9-;F7NE+7Tl5 z1Em9jbzJrfrfISQv=<6(;)*IAh&YKv_Hk=bIuvmli{&x1AZ?4diN~)n=aEtlpxZ>^ v35#B7)d7P<^njN>X-xqb8y*=NRl53Gm|G_ailcxQ00000NkvXXu0mjf%6MX> literal 0 HcmV?d00001 diff --git a/icons/Custom-Icon-Design-Flatastic-1-Copy.16.png b/icons/Custom-Icon-Design-Flatastic-1-Copy.16.png new file mode 100644 index 0000000000000000000000000000000000000000..72071d0bea12a5213389916a95df0b5ad322b57b GIT binary patch literal 585 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf&j6ngSN8&+7cX8se*F09)2GbL z%uk*?k(88t{rdHzM~{FcP!K2!1P2Zr*t2KP%a<>Kf^XiudG_p?h=|Df^XH#Ge-2~= z6$3Q_*{@!`l9rYRlDl{B2CBS%{rZ|UYsAFFfC}#1xdRjjnjk1B2xL5b`0&Do3qZ!P zW5E5@_g=nwHFfXB${p84Oq}QJIc+=bV8zzU;^yuz zU%dt@0NM+&6yivr$w1S976A#YJqqdDnEfZo}T;_PysJV1E1|OI-!&T#!htiSK*u^}Cy&i2+54{4+Votu``~35y zgx!_&fXQ!T@_w-`Ju&@?=gWu7H-DdeC8zZv`In BTK50| literal 0 HcmV?d00001 diff --git a/icons/Custom-Icon-Design-Flatastic-8-Paste.16.png b/icons/Custom-Icon-Design-Flatastic-8-Paste.16.png new file mode 100644 index 0000000000000000000000000000000000000000..78da6a45f69a678373650ca96cbf801a436f4063 GIT binary patch literal 584 zcmV-O0=NB%P)u9o&)}m17mBZy4sDE7gn|;+iMsngwwB^z`TF=jG+)_V)Jq`T6_%`_#dt$%Gh-T@;C2 z6OCULh*}blU>1g05RqaRgjWxORSuJ67?oujfK(0WnH`d6B$R0-kY*!}WFm}WAc|oh zm1`%6UmlliD3;LdynPtQgBY1^DV1j)(Y>9aWG$%x00233QchCfxSkaM+xqp8I=KGscO#s1v0001+ zNklMYLxVDcc7cv{N&}Glqv+}z2@$;`~m z=jZ3^>+8I{yeB6o!NI{eI5@}0$3;a&z`($Qf`WsCgK=?jg@uKNhK9(<$T~VYy}iAF zfPlHVxqp9uU0q#!dwYC*e6g{ytE;PietxyJwfy}2{r&y!?(XdD?CI(0`T6+9?D^Yi57gwCu+u-2f z*VotF+}!W)@8#v?*x1;-yu8H3#N*@R$jHdX#>U6T$5EvNqyPW_KXg(~QvmJ7#l^+C z{l&!x#p1EW{l&!%?cpU2BDb{R?d~+UNA4jvH1Iy{4Yv;c0p+^7ow~Z@0k^uhx_r92 zx3{{t-HSs<0002LNklaSyftdPHEO&yYP>dT zx;1IKG-N>G1mQ^!xJm{NwHUIBUFQjLCDI-F2Sc?ehC}pWktt z+j*no>GAqyjLDg`-RklCbDP@O<@Vj^_%md&p1R>WZM|}u*_5!_dZXiVn%e4}`{L~R z>hSt>o!;*A`=h?(+vfLoq2TM7*nFktjjGkf*zz)Btn2anZ3EmN zWQ@vtnaDM1y1UTtd7B3^Fkh#(%*{Qv*}`AI}UR2b7^5ET&I%!FV<6DIfI3V zkC{QBtG}l~ElKH5rp8eSgm-m3l~ z43jI=)RdI8H4Jp)RHMQpmNQIlGd4C<(lcnPQ_auHOigE)JY}j39F*r|GfbPVp)U&s z@-<~83^QiU(N};1`Ig#J2JzYR5h^A&b23QITYxZQ(gZdJ2`TBSB_>N3Enl{9?o3X8 ZRseH_M8~#V%b5TG002ovPDHLkV1iJT{9yn9 literal 0 HcmV?d00001 diff --git a/icons/Famfamfam-Silk-Door-out.16.png b/icons/Famfamfam-Silk-Door-out.16.png new file mode 100644 index 0000000000000000000000000000000000000000..466ea2c5903e31c1d807f6d9c94f421b786099ce GIT binary patch literal 932 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 literal 0 HcmV?d00001 diff --git a/icons/Famfamfam-Silk-Page-white-copy.16.png b/icons/Famfamfam-Silk-Page-white-copy.16.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c390710cee30c7af79583ff8d8183083f82b88 GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8q5z)|S0Fuk^5p5$rvn*q;9lSZX9F3(e*FTHKY#xG^XJd+ z-@kwS`0?%AH=y9BPoIE--@kwV{Q2|y_wQf5dUgEx@vmRMzJC4s=#fLmjvYI40hqA8PkA_Jp>vD{DD&%ga0PXeWS zJY5_^Brf}&yD4-?fv5Fh#zKeKLqWSbpQ_B^Zj{R8#~7BbEYUdA&^`O=|v zTnv1VO_J~I=5>0rz9UXMoBKz>%lqe-UJX)G=DwxY1O048*SBF_9xE8GAgS^mH%RD+RmfKBv%>@ PbQgoCtDnm{r-UW|25PG` literal 0 HcmV?d00001 diff --git a/icons/Famfamfam-Silk-Page-white.16.png b/icons/Famfamfam-Silk-Page-white.16.png new file mode 100644 index 0000000000000000000000000000000000000000..6e013b639be893bd4c9e01e3f210e049a38522d4 GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8(g2?jS0D`pzkmORFo5KrKYxIvdw~y-oHAv~J$v@{?c0DR^RGaIgi3<^g3V0+${I8MWn@s8IPu@auODPS z3!YyElw@f4ba4!kxEy-^I$yH^k3%4{rs>_@$2@7@|JNtY6(F50mF`FG- z97^>xQ@;l?ER>m3eD}wa>wYZT92%WxytDoJ@Pm?(eyd}hb@QKNc5Y8>W2f%=C3OW0Vsz&x6t4PQ6Ur3IXc_uY{QncaGKsh& PU^jWX`njxgN@xNAoT<7s literal 0 HcmV?d00001 diff --git a/icons/Famfamfam-Silk-Shape-flip-horizontal.16.png b/icons/Famfamfam-Silk-Shape-flip-horizontal.16.png new file mode 100644 index 0000000000000000000000000000000000000000..d54e45fc9380e5bd846bfcfc52f50df3ce94cd2c GIT binary patch literal 465 zcmV;?0WSWDP)dsi4(3)-t%qx{_j9Cw)YZ{5!!YxyyJXS*Ts~{ z*K3wP0iu!x52}_v1~O(J{GK`e=HlZ&3+CP}U;J?Xksmgs$O_!&*fiTtL_60?_Kj?-I*Uf(?3t${HSN$L!imc8$SbW z$(?n(c?HPE&F6m3+3{r0m7g=VKLgsh^U}}l7k>gBv;XR^ZRdY(KL2y&sUJXREZzSc zXf?zaJB3~|0(~b_666=m!1=9iW1Zqg#c#Jcy%p<#1n0(Yw{O=ee)HbAa;jH0P+hL4 zi(`ny<>Z6|%r_zeb}*gsF*;GBX_#9Y$rA2#>)@?BetgG7g{E)WzIBuF)OOAetKGX! zoH%t-`oX5Y_WKu(Ts(HkBVJhT&{_4QhbhZeFYO9AqMfs5`NBm#Yy2m8`+5oLN!c|)>;kzvhJ&L49G+U5W)X7F_Nb6Mw<&;$V58S|_F literal 0 HcmV?d00001 diff --git a/icons/Iconleak-Stainless-Copy.16.png b/icons/Iconleak-Stainless-Copy.16.png new file mode 100644 index 0000000000000000000000000000000000000000..56504e073cf58a831b74a53988db802448142fad GIT binary patch literal 646 zcmV;10(t$3P)k#KNuadB~OZf=K%hj@5+%F4>t*4EF@&&I~a)6>(UqM~qc zaIvwm)z#IdrKK(|F4WZ2JUl$4q@+MVKx=DjNJvPtv$H}%LPkbLL_|bIMMXnHLqgdM@L6SMn)qeBkk?&^78WP z>gw?D@bB;M>FMd~>+9_7?BU_z@$vEW^z`oT?(_5W_V)Jm_4WDr`RM5Am=G@%e=jZ3r($eDM;?~yI`uh6d;Nafg-q_gKrKP3i<>jKHqR-FI z(9qD)(b3b>)7jbC{r&y?{QT6^)YaA1mbcMM0000pbW%=J0Q#=}e5pEoe0*ecuCA{B zu1{ul_V+LE9J@U+HQYQmIypNyH8(kZIy^l-K0iS~LP8>gpt9Hi0081iL_t&-(>2fM zQo=wKhT#=~1QAdH#X=KQnu?}p6VeL=NU$I(=>6XXXTz}n&NK6VGm8*Hr@52-aUzvQ z`&Se#dod0Vj&|quMM>hU2@b}G*%;a!W+YCWx^J_>8G$<)j~JN~t@n>*xdL#{U|wKk z$Ubp!1JDsL%L^ltP3Cogt}@qHg^#mo3!ulkhN>xXCN=>Es_W>gMlxAy06glp>F5Sz zFmwy>?Aej&>4pkJLJi=_v^T!#IR?qD0EYf=`2Y7a`(AxjFV6v9)_z1rAbE)Y@=DV* gMN!FQCew#=3rQp@=9^iXoB#j-07*qoM6N<$g6uF+vj6}9 literal 0 HcmV?d00001