From 5adadb0b337ea99371cf759df5f209138a9b34dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hein=20Andre=20Gr=C3=B8nnestad?= Date: Fri, 9 Nov 2018 00:21:13 +0100 Subject: [PATCH] Created UI for CharEditor with grid toggle and zoom control --- .../FormFontEditor.Designer.cs | 203 +++++++++++++++--- .../NextionFontEditor/FormFontEditor.cs | 50 ++++- .../NextionFontEditor/FormFontEditor.resx | 38 +++- .../NextionFontEditor/FormFontSuite.resx | 86 ++++---- .../Icons/icons8-grid-16.png | Bin 0 -> 181 bytes .../NextionFontEditor/Icons/icons8-pen-16.png | Bin 0 -> 486 bytes .../NextionFontEditor/Icons/icons8-pen-30.png | Bin 0 -> 1116 bytes .../NextionFontEditor.csproj | 3 + 8 files changed, 296 insertions(+), 84 deletions(-) create mode 100644 NextionFontEditor/NextionFontEditor/Icons/icons8-grid-16.png create mode 100644 NextionFontEditor/NextionFontEditor/Icons/icons8-pen-16.png create mode 100644 NextionFontEditor/NextionFontEditor/Icons/icons8-pen-30.png diff --git a/NextionFontEditor/NextionFontEditor/FormFontEditor.Designer.cs b/NextionFontEditor/NextionFontEditor/FormFontEditor.Designer.cs index 8b7e6ba..c2a28d9 100644 --- a/NextionFontEditor/NextionFontEditor/FormFontEditor.Designer.cs +++ b/NextionFontEditor/NextionFontEditor/FormFontEditor.Designer.cs @@ -24,65 +24,218 @@ partial class FormFontEditor { /// private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormFontEditor)); - this.charEditor1 = new NextionFontEditor.Controls.CharEditor(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.pPreview = new System.Windows.Forms.PictureBox(); this.numChar = new System.Windows.Forms.NumericUpDown(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.btnOpenFont = new System.Windows.Forms.ToolStripButton(); + this.ofd = new System.Windows.Forms.OpenFileDialog(); + this.panel1 = new System.Windows.Forms.Panel(); + this.charEditor1 = new NextionFontEditor.Controls.CharEditor(); + this.tsCharEditor = new System.Windows.Forms.ToolStrip(); + this.cmbZoom = new System.Windows.Forms.ToolStripComboBox(); + this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel(); + this.btnShowGrid = new System.Windows.Forms.ToolStripButton(); + this.panelWrapper = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.pPreview)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numChar)).BeginInit(); + this.toolStrip1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.tsCharEditor.SuspendLayout(); + this.panelWrapper.SuspendLayout(); this.SuspendLayout(); // + // pPreview + // + this.pPreview.BackColor = System.Drawing.Color.White; + this.pPreview.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pPreview.Location = new System.Drawing.Point(12, 106); + this.pPreview.Name = "pPreview"; + this.pPreview.Size = new System.Drawing.Size(100, 100); + this.pPreview.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.pPreview.TabIndex = 1; + this.pPreview.TabStop = false; + // + // numChar + // + this.numChar.Font = new System.Drawing.Font("Microsoft Sans Serif", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.numChar.Location = new System.Drawing.Point(12, 54); + this.numChar.Name = "numChar"; + this.numChar.Size = new System.Drawing.Size(100, 30); + this.numChar.TabIndex = 2; + this.numChar.ValueChanged += new System.EventHandler(this.numChar_ValueChanged); + // + // toolStrip1 + // + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btnOpenFont}); + this.toolStrip1.Location = new System.Drawing.Point(0, 0); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(553, 25); + this.toolStrip1.TabIndex = 3; + this.toolStrip1.Text = "toolStrip1"; + // + // btnOpenFont + // + this.btnOpenFont.Image = ((System.Drawing.Image)(resources.GetObject("btnOpenFont.Image"))); + this.btnOpenFont.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btnOpenFont.Name = "btnOpenFont"; + this.btnOpenFont.Size = new System.Drawing.Size(83, 22); + this.btnOpenFont.Text = "Open Font"; + this.btnOpenFont.Click += new System.EventHandler(this.btnOpenFont_Click); + // + // ofd + // + this.ofd.Filter = "Nextion Font Files|*.zi"; + // + // panel1 + // + this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panel1.AutoScroll = true; + this.panel1.AutoScrollMargin = new System.Drawing.Size(20, 20); + this.panel1.BackColor = System.Drawing.SystemColors.ControlDark; + this.panel1.Controls.Add(this.charEditor1); + this.panel1.Location = new System.Drawing.Point(0, 25); + this.panel1.Margin = new System.Windows.Forms.Padding(0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(415, 427); + this.panel1.TabIndex = 4; + this.panel1.Resize += new System.EventHandler(this.panel1_Resize); + // // charEditor1 // this.charEditor1.CharImage = ((System.Drawing.Bitmap)(resources.GetObject("charEditor1.CharImage"))); - this.charEditor1.Location = new System.Drawing.Point(12, 162); + this.charEditor1.Location = new System.Drawing.Point(53, 36); + this.charEditor1.Margin = new System.Windows.Forms.Padding(20); this.charEditor1.Name = "charEditor1"; this.charEditor1.ShowGrid = true; - this.charEditor1.Size = new System.Drawing.Size(240, 480); + this.charEditor1.Size = new System.Drawing.Size(160, 320); this.charEditor1.TabIndex = 0; this.charEditor1.Text = "charEditor1"; - this.charEditor1.Zoom = 30; + this.charEditor1.Zoom = 10; this.charEditor1.Click += new System.EventHandler(this.charEditor1_Click); // - // pictureBox1 + // tsCharEditor // - this.pictureBox1.Location = new System.Drawing.Point(12, 57); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(240, 86); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; - this.pictureBox1.TabIndex = 1; - this.pictureBox1.TabStop = false; + this.tsCharEditor.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btnShowGrid, + this.cmbZoom, + this.toolStripLabel1}); + this.tsCharEditor.Location = new System.Drawing.Point(0, 0); + this.tsCharEditor.Name = "tsCharEditor"; + this.tsCharEditor.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + this.tsCharEditor.Size = new System.Drawing.Size(413, 25); + this.tsCharEditor.TabIndex = 1; + this.tsCharEditor.Text = "toolStrip2"; // - // numChar + // cmbZoom // - this.numChar.Font = new System.Drawing.Font("Microsoft Sans Serif", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.numChar.Location = new System.Drawing.Point(12, 12); - this.numChar.Name = "numChar"; - this.numChar.Size = new System.Drawing.Size(122, 30); - this.numChar.TabIndex = 2; - this.numChar.ValueChanged += new System.EventHandler(this.numChar_ValueChanged); + this.cmbZoom.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.cmbZoom.AutoSize = false; + this.cmbZoom.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbZoom.Name = "cmbZoom"; + this.cmbZoom.Size = new System.Drawing.Size(50, 23); + this.cmbZoom.SelectedIndexChanged += new System.EventHandler(this.cmbZoom_SelectedIndexChanged); + this.cmbZoom.TextChanged += new System.EventHandler(this.cmbZoom_TextChanged); + // + // toolStripLabel1 + // + this.toolStripLabel1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripLabel1.Name = "toolStripLabel1"; + this.toolStripLabel1.Size = new System.Drawing.Size(39, 22); + this.toolStripLabel1.Text = "Zoom"; + // + // btnShowGrid + // + this.btnShowGrid.Checked = true; + this.btnShowGrid.CheckOnClick = true; + this.btnShowGrid.CheckState = System.Windows.Forms.CheckState.Checked; + this.btnShowGrid.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btnShowGrid.Image = ((System.Drawing.Image)(resources.GetObject("btnShowGrid.Image"))); + this.btnShowGrid.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btnShowGrid.Name = "btnShowGrid"; + this.btnShowGrid.Size = new System.Drawing.Size(23, 22); + this.btnShowGrid.Text = "Show Grid"; + this.btnShowGrid.Click += new System.EventHandler(this.btnShowGrid_Click); + // + // panelWrapper + // + this.panelWrapper.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.panelWrapper.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelWrapper.Controls.Add(this.tsCharEditor); + this.panelWrapper.Controls.Add(this.panel1); + this.panelWrapper.Location = new System.Drawing.Point(126, 28); + this.panelWrapper.Name = "panelWrapper"; + this.panelWrapper.Size = new System.Drawing.Size(415, 452); + this.panelWrapper.TabIndex = 5; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(9, 38); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 13); + this.label1.TabIndex = 6; + this.label1.Text = "Character"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(9, 90); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(45, 13); + this.label2.TabIndex = 7; + this.label2.Text = "Preview"; // // FormFontEditor // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1141, 765); + this.ClientSize = new System.Drawing.Size(553, 492); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.panelWrapper); + this.Controls.Add(this.toolStrip1); this.Controls.Add(this.numChar); - this.Controls.Add(this.pictureBox1); - this.Controls.Add(this.charEditor1); + this.Controls.Add(this.pPreview); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "FormFontEditor"; this.Text = "Font Editor"; this.Load += new System.EventHandler(this.FormFontEditor_Load); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.Shown += new System.EventHandler(this.FormFontEditor_Shown); + ((System.ComponentModel.ISupportInitialize)(this.pPreview)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numChar)).EndInit(); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.panel1.ResumeLayout(false); + this.tsCharEditor.ResumeLayout(false); + this.tsCharEditor.PerformLayout(); + this.panelWrapper.ResumeLayout(false); + this.panelWrapper.PerformLayout(); this.ResumeLayout(false); + this.PerformLayout(); } #endregion private Controls.CharEditor charEditor1; - private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.PictureBox pPreview; private System.Windows.Forms.NumericUpDown numChar; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripButton btnOpenFont; + private System.Windows.Forms.OpenFileDialog ofd; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.ToolStrip tsCharEditor; + private System.Windows.Forms.ToolStripComboBox cmbZoom; + private System.Windows.Forms.ToolStripLabel toolStripLabel1; + private System.Windows.Forms.ToolStripButton btnShowGrid; + private System.Windows.Forms.Panel panelWrapper; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; } } \ No newline at end of file diff --git a/NextionFontEditor/NextionFontEditor/FormFontEditor.cs b/NextionFontEditor/NextionFontEditor/FormFontEditor.cs index 746a17f..cd66278 100644 --- a/NextionFontEditor/NextionFontEditor/FormFontEditor.cs +++ b/NextionFontEditor/NextionFontEditor/FormFontEditor.cs @@ -14,21 +14,55 @@ public partial class FormFontEditor : Form { private ZiFont ziFont; private void FormFontEditor_Load(object sender, EventArgs e) { - ziFont = ZiFont.FromFile(@"Test Files\Arial_16_ascii.zi"); - - numChar.Maximum = ziFont.CodePage.CharacterCount - 1; - - charEditor1.CharImage = ziFont.CharBitmaps.Skip(1).First(); - numChar.Value = 1; + cmbZoom.Items.AddRange(Enumerable.Range(1, 30).Select(x => $"{x}x").ToArray()); + cmbZoom.SelectedIndex = 9; } private void charEditor1_Click(object sender, EventArgs e) { - pictureBox1.Image = charEditor1.CharImage; + pPreview.Image = charEditor1.CharImage; } private void numChar_ValueChanged(object sender, EventArgs e) { charEditor1.CharImage = ziFont.CharBitmaps.Skip((int) numChar.Value).First(); - pictureBox1.Image = charEditor1.CharImage; + pPreview.Image = charEditor1.CharImage; + } + + private void openToolStripMenuItem_Click(object sender, EventArgs e) { + + } + + private void btnOpenFont_Click(object sender, EventArgs e) { + var res = ofd.ShowDialog(); + + if (res == DialogResult.OK) { + ziFont = ZiFont.FromFile(ofd.FileName); + + numChar.Maximum = ziFont.CodePage.CharacterCount - 1; + + charEditor1.CharImage = ziFont.CharBitmaps.Skip(1).First(); + numChar.Value = 1; + } + } + + private void panel1_Resize(object sender, EventArgs e) { + charEditor1.Left = (panel1.Width / 2) - (charEditor1.Width / 2); + charEditor1.Top = (panel1.Height / 2) - (charEditor1.Height / 2); + } + + private void FormFontEditor_Shown(object sender, EventArgs e) { + panel1_Resize(sender, e); + } + + private void cmbZoom_TextChanged(object sender, EventArgs e) { + } + + private void cmbZoom_SelectedIndexChanged(object sender, EventArgs e) { + charEditor1.Zoom = int.Parse(cmbZoom.Text.Replace("x", "")); + panel1_Resize(sender, e); + } + + private void btnShowGrid_Click(object sender, EventArgs e) { + charEditor1.ShowGrid = btnShowGrid.Checked; } } } \ No newline at end of file diff --git a/NextionFontEditor/NextionFontEditor/FormFontEditor.resx b/NextionFontEditor/NextionFontEditor/FormFontEditor.resx index c442d77..d07ebb0 100644 --- a/NextionFontEditor/NextionFontEditor/FormFontEditor.resx +++ b/NextionFontEditor/NextionFontEditor/FormFontEditor.resx @@ -117,17 +117,39 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADySURBVDhPY6AYTKty+Y+OZ9S41kKlCQOQhtsbUuH4yqqk + /7Pr3b7NrHWrgyrBD9ANQDYE2VXYME4DiMG0N+DMkrj/q7v9UZyMiW2/gA3Ahhc2e/8/vzbr/+czLf+/ + nmvFwE8PVP2fXeXyGGzAsnY/rIrw4VvbioAB7X4CbMDGSWFYFeHD59dk/59T574UbMC+uQlYFeHDRxYn + /59e7dzAMLPG7f+plRlYFeHD26ZH/Z9a6ZTMMKfB4/+1zQVYFeHDK7uD/k+tcHVjmFPv8f/RvgqsivDh + BU3e/6dXOmkxzKh2xRqNxOCJ9R584MREPmBgAACTGTpnfzHtzAAAAABJRU5ErkJggg== + + + + 192, 17 + - Qk22AQAAAAAAADYAAAAoAAAACAAAABAAAAABABgAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAA//////// - //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////AAAAAAAA//////////////////////////// - ////////////////////////////AAAAAAAA////////////////////////AAAAAAAA//////////// - ////////////AAAAAAAA////////////////////////AAAAAAAA////////////////////////AAAA - AAAA////////////////////////AAAAAAAA////////////////////////AAAAAAAA//////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////// + iVBORw0KGgoAAAANSUhEUgAAABAAAAAgCAYAAAAbifjMAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZSURBVEhLYxgFo2AUjIJRMApGwShAAQwMAAggAAGNR4Es + AAAAAElFTkSuQmCC + + + + 262, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABQSURBVDhPxYzRCcBQDAIz9tuhK3TXPoKX/whCDwQRzopw + nvdzgyp6GLYdVUQO3KCKHoZtRxWRAzeooodh21FF5MANquhh2HZUETlwg/o7VReBbRHtcomjTAAAAABJ + RU5ErkJggg== diff --git a/NextionFontEditor/NextionFontEditor/FormFontSuite.resx b/NextionFontEditor/NextionFontEditor/FormFontSuite.resx index 7d13498..11b1f9e 100644 --- a/NextionFontEditor/NextionFontEditor/FormFontSuite.resx +++ b/NextionFontEditor/NextionFontEditor/FormFontSuite.resx @@ -127,59 +127,59 @@ iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMpSURBVEhL7ZbJTxNxFMfrcjNG/wJPmqiJevPiwYPe9cLN - xETSmS4YI4a2s5SWUkhB2lm6mCJSFBcsLVTQqAdZogZETERJjNHEeNGoF8sqi4y/N7yZTCmlNekNPslL - mt/3O+/NvPm939S0xebGxssTFCMouRHKejyenWgpP5RT3GfjpPneofdKZnhSj8v++JTZFTqNtvJDu0VH - XeTeHyjW9XRcDfjd0t63YuflW2grP1Y+/KGtZ1hJD0woFlZYpllpKUV+330yrtCsnK2oSO5Aa/modAX3 - W93hud6hSSWeHFDsnuiovTY8Fu8eVJ+6uqE1SzHiKbSXD5qXuPpYUm2zN9I1R3FCNcUGa3yR5LzWbhsf - 6UB7+SDv8FN773P16exueZZiWg7SjHTYzodnYe1/2m2cCFxaH2iznZdmM2Q3dz4cVayc9AMlk42Tf91+ - 9Erb3VkzEzyJUkGgIPiLFqY4mffF7qtthpZa3OEESjDXHaFE/wpqf61u+TpKBSm5sLU28llrsyPQlqWd - oTMoQZKzjsCNLGh3Ho+Rboi/yWGyHWUdKGIMrbAx0LoKzYsHyPtV25x69lahGXHh3JWru1A2Xahp2g1r - oEGyS3WxKZoJnUBZRytWKPIKW1jRo+1mGKMqd+Q1SjpWd+SNNlbNbX3LVl6OoaRjfDLtJtauoXUVklRv - sy/aPUezAoOSjtklcPU4Vurm4+WfJpOyDeU8jIVxKZdKh3BIazMYq+piS8Y7NAZo4IG46I1O0WzwOKbJ - A/wbFrZyYW9DrHtBS1hqBFozpN0RAdPkYbxhXMqFHA5fEpkX6ybfKDr7RxRLkXYXxLibIZmzuYOcVrnt - XRvg0YqTs3yGdgaPYbrSoTnJ64+m1DbDFwhGhnIG9qCcx3mPsBc86YF3auFAPL1kYaUmlEuHfAK/Jh68 - VJO0pgYVGBmUCgIe8MI1N/tGFHKqfUOpNNTDvzY6A59ASOKLkq8RKzhRLgj5C+TSxgqC7O7pSkY8inJx - LJzo98fSi3oCd3Ta7AgeQbkg4AGvdl3jtZ5FkqsR5eLQrPgxZ+OwwneUigJe47WQC6UtNj0m0z/mCwQ6 - MnOLbwAAAABJRU5ErkJggg== + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAMySURBVEhL7ZXLTxNRFMbrY2eM/gWuNFETdefGhQvd64ad + iYmkM50OGsXQdh5lWh5ahHam05nGAgKKIkKBUjXqQh5RAyIkoiTGaGLcaNSN5SkPGecMZ+pAKa1Jd/JL + TjK53zfn3DlzH7ZN/m+cvDxOMKJmDbsnmBIEYTtaCg/hlvY4WWmuZ+CtlhicSMfFyuuTdk/oJNoKD+mV + XD6l7RcUa38yagQ8197oXaZ5+RbaCg/FR941dg9qXX3jmoMNLRFMeDGuP7c9HtVbLqeKijq2obVwFHuC + ex3eyGzPwIQW6+jTaEEdpsvlkVhnv/HVpdX1KYKRTqC9cJB8mKuI3jPaLCh3ZwlOLCXYYFlFpGPObLeT + V1rQXjhoLvyhqeeZ8XU0H54hmLr9JBM+SHPyDIz9S7utOwKH1gfaTHPSTEJfza0PhjWKlb6hZHOy8o/b + D18aE7pUFUvZmeBxlLICBcGfszDBybw/2m60GVqq/+tmlGBftwSbksug1TUlf1NeuQGlrORdmCpXPppt + dgUaUqQ7dAolSHLaFWhMgXbn0YhGcdJP/TDZinIaKGINs7A10LoCyUv79P9rtDn+9LVGeqT5M5drd6Bs + O1dWsxPGQINkF3zqJMmEjqGcxiyWLTIKO1hJMFczbKMSr/IKpTQOXhkzt1VNQ3KJ4uUoSmmsX2ZOYu0Y + WlegvH/b7Fc7Z0lWZFBKY/eIXCVuK1h8Dl7+brNpW1DOwFoYh1ZT7BIPmG0GI+2PLlpnaA3QwANRIiiT + JBs8imkyAP+GhSku4qtWO+fNhPnG1VhCb7ciYpoMrBPGodXQXORTc+L5usk3itb7QxqZo91Zsa5mSOa6 + 1qKfVqvbuzbAYxZ3Cuo06Q4ewXT5Q3JhX5USN9oMNxBsGcId2IVyBmcFcTd4uvreGIUDsfiigw3XoJw/ + +v/93Nz7wkhSH+/XV6oyhlJWwANeeOdmckjTT7UvKOUHHP7OcnUarkBI4lf124gV3ShnhWBCHnNbQZz3 + qVPFjHQY5dw4OKmqUu1aSCfg1Sm7K3gI5ayAB7zme9XR7gU91xWUc0Oy0nvrorGz4leUcgJe67uQC6VN + /ntstj/eEAPRArbYFwAAAABJRU5ErkJggg== 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 diff --git a/NextionFontEditor/NextionFontEditor/Icons/icons8-grid-16.png b/NextionFontEditor/NextionFontEditor/Icons/icons8-grid-16.png new file mode 100644 index 0000000000000000000000000000000000000000..8f01d7b7a185ed5fd055c047dc2b1b56b1fca988 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4R8_;5jTtFi>lAnODIg^y?ol_RcoL=kFq|G1_MLr-s8{G T6ZfnD>SpkC^>bP0l+XkK(tkBE literal 0 HcmV?d00001 diff --git a/NextionFontEditor/NextionFontEditor/Icons/icons8-pen-16.png b/NextionFontEditor/NextionFontEditor/Icons/icons8-pen-16.png new file mode 100644 index 0000000000000000000000000000000000000000..cf513120adf49c1d18b26859a7635180c833fae7 GIT binary patch literal 486 zcmV@P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0eeYAK~y+TV;~jm zpC8Y0V0w`1|Njh(P$A;Mi3L%{w^pZIda*6%>&3-!JO0<#GeM;Y1CZu>>(g$1JyiA| zgh7TJo)WALmBtUyHG}Z=l}T53cE@l-mEZ>0G~Zd9diU&tC_AVU+yI;A+pCGxJgalH z?b<1eKE2;p0oQzYZR#DOG|%io7* zP$l@m+WAKh-@N$#|JG%v|6e@*9IW}=kw<@KcWexTD!~tc{=c<#*{S~^LqM8Ac+;Ze zm;N*SC!ArrO6E(<>D>5n(~^_7HZMMLVC~$)E0#~))wi&Bvlmnee$ZREl5;}kGI1!E cM8LoR0OtrNr}=d0VE_OC07*qoM6N<$g08CSasU7T literal 0 HcmV?d00001 diff --git a/NextionFontEditor/NextionFontEditor/Icons/icons8-pen-30.png b/NextionFontEditor/NextionFontEditor/Icons/icons8-pen-30.png new file mode 100644 index 0000000000000000000000000000000000000000..27a05a66e48f3d00487d9863ca2762cfe84b417b GIT binary patch literal 1116 zcmV-i1f%KOd@?o0MCazr5(PD8y6JoY%zW4umuQ5go6(GsMaQOV(H6=k zX`%n`?LGJS0J4?wr_d5TZ}fjGn0~FP2Tl?4+6y0#|=^X?1rWGh{UJN+=G@t_jG6E0vwd|J&`t0RJW~1RjG!j#A%k7KkI^XwH=ip@^ z17|$c*Ro%t=(Crtgib^`M03L{1LyvIpVk?thWa9l(X`;<-sZN{P~Nf_1=jhghkKjb z7$d!_q0sf_Cp-JkFV$ns@Rx7Dc_K^FI-cGU&Ndjb)`bE9TMK&Z_0vspZS%XF7D-$O zDb9-|)njoLzmNMOx}IpS>l{40Qm>TZqlZtmQASVJKiiO9`KX~Q=bJ@-W80ZPcHyBc>IHs|MoF^0mDEo5XgAh@Oyt0{n+ z?#T$|&G`}mo3NKb$N_-JkJr~qg zR8U~i&2{9plLd^ic1EQ`I_E`2B}Ld;S;F!Q@dyIyoP?dzDG5$tFcj{;o{C>}= zRvqLE*(&qWZKVcVxeW%RVcCVjnIN1OowJFUw!7u6qeE*!lVB-ZdZuFgHpyONU-kYD z&4$GAxgmcduI}kRc5uxokaTm=YHMEZy+;9fU0!(IUO*%-a$a+38Txr)6Si_203a|OKtfGSAAaxPck4xg`NR&#$2pqDbIlg>LSfcFb8pst z|J9$j#-p0XPo#qa^NG!2W2H$p#0ViW0Qmm$!E@V#>K)a{vE;y3I+s@G9G>wBK~?2+ zMqojRUCy-t0H!=XT)TV?yBc>QH*ZtY#46H`i1RGf*sm?hf;V440A^4{Q+!|EU`l*s&T@$q)w+Gv6 zsxUn@o%rL1D-@au@<=$E1tAp5s2c>=A;{T|PdXAAgSpTl2{tx%{iZXaC_f3ExOA%h i)^p^=$xI;stMLyh(z*|!8QdlS0000 + + +