From ea3de134d21d173ff786f29b5559a9a4ac5ab164 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Tue, 20 May 2025 09:12:34 +0300 Subject: [PATCH 01/29] Migrated to .NET 9 (with some functionality broken) --- McBitFont/Form1.Designer.cs | 1127 ++++++++++++-------------- McBitFont/Form1.cs | 101 +-- McBitFont/Form1.resx | 57 +- McBitFont/McBitFont.csproj | 226 +----- McBitFont/Properties/AssemblyInfo.cs | 36 - McBitFont/packages.config | 14 - 6 files changed, 580 insertions(+), 981 deletions(-) delete mode 100644 McBitFont/Properties/AssemblyInfo.cs delete mode 100644 McBitFont/packages.config diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 9a10dc0..3fc093c 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -23,766 +23,709 @@ /// содержимое этого метода с помощью редактора кода. /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); - this.dotPanel = new System.Windows.Forms.Panel(); - this.nudX = new System.Windows.Forms.NumericUpDown(); - this.nudY = new System.Windows.Forms.NumericUpDown(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.lblType = new System.Windows.Forms.Label(); - this.cbZoom = new System.Windows.Forms.ComboBox(); - this.label4 = new System.Windows.Forms.Label(); - this.panel1 = new System.Windows.Forms.Panel(); - this.btnClear = new System.Windows.Forms.Button(); - this.btnMirrorY = new System.Windows.Forms.Button(); - this.btnMirrorX = new System.Windows.Forms.Button(); - this.btnInvert = new System.Windows.Forms.Button(); - this.btnShiftDown = new System.Windows.Forms.Button(); - this.btnShiftUp = new System.Windows.Forms.Button(); - this.btnShiftRight = new System.Windows.Forms.Button(); - this.btnShiftLeft = new System.Windows.Forms.Button(); - this.btnExport = new System.Windows.Forms.Button(); - this.miniList = new System.Windows.Forms.ListView(); - this.ilMiniatures = new System.Windows.Forms.ImageList(this.components); - this.btnApply = new System.Windows.Forms.Button(); - this.hScroll = new System.Windows.Forms.HScrollBar(); - this.vScroll = new System.Windows.Forms.VScrollBar(); - this.label5 = new System.Windows.Forms.Label(); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.saveDEVToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.saveAsToolStripMenuItem = 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.ClearToolStripMenuItem = 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(); - this.shiftRightToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - 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.btnBaseline = new System.Windows.Forms.Button(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.chkLeftSide = new System.Windows.Forms.CheckBox(); - this.chkTopSide = new System.Windows.Forms.CheckBox(); - this.openDEVToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - ((System.ComponentModel.ISupportInitialize)(this.nudX)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudY)).BeginInit(); - this.panel1.SuspendLayout(); - this.menuStrip1.SuspendLayout(); - this.SuspendLayout(); + dotPanel = new System.Windows.Forms.Panel(); + nudX = new System.Windows.Forms.NumericUpDown(); + nudY = new System.Windows.Forms.NumericUpDown(); + label1 = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + lblType = new System.Windows.Forms.Label(); + cbZoom = new System.Windows.Forms.ComboBox(); + label4 = new System.Windows.Forms.Label(); + panel1 = new System.Windows.Forms.Panel(); + btnClear = new System.Windows.Forms.Button(); + btnMirrorY = new System.Windows.Forms.Button(); + btnMirrorX = new System.Windows.Forms.Button(); + btnInvert = new System.Windows.Forms.Button(); + btnShiftDown = new System.Windows.Forms.Button(); + btnShiftUp = new System.Windows.Forms.Button(); + btnShiftRight = new System.Windows.Forms.Button(); + btnShiftLeft = new System.Windows.Forms.Button(); + btnExport = new System.Windows.Forms.Button(); + miniList = new System.Windows.Forms.ListView(); + ilMiniatures = new System.Windows.Forms.ImageList(components); + btnApply = new System.Windows.Forms.Button(); + hScroll = new System.Windows.Forms.HScrollBar(); + vScroll = new System.Windows.Forms.VScrollBar(); + label5 = new System.Windows.Forms.Label(); + menuStrip1 = new System.Windows.Forms.MenuStrip(); + fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + prependSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + appendSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + removeSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + applyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + ClearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + shiftUpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + shiftDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + shiftLeftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + shiftRightToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + invertToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + mirrorXToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + mirrorYToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + dlgSave = new System.Windows.Forms.SaveFileDialog(); + dlgOpen = new System.Windows.Forms.OpenFileDialog(); + btnBaseline = new System.Windows.Forms.Button(); + toolTip1 = new System.Windows.Forms.ToolTip(components); + chkLeftSide = new System.Windows.Forms.CheckBox(); + chkTopSide = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); + ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); + panel1.SuspendLayout(); + menuStrip1.SuspendLayout(); + SuspendLayout(); // // dotPanel // - this.dotPanel.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.dotPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.dotPanel.BackColor = System.Drawing.SystemColors.ControlDark; - this.dotPanel.Location = new System.Drawing.Point(12, 27); - this.dotPanel.Name = "dotPanel"; - this.dotPanel.Size = new System.Drawing.Size(389, 498); - this.dotPanel.TabIndex = 0; - this.dotPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.dotPanel_Paint); - this.dotPanel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.dotPanel_MouseMove); - this.dotPanel.MouseMove += new System.Windows.Forms.MouseEventHandler(this.dotPanel_MouseMove); - this.dotPanel.Resize += new System.EventHandler(this.cbZoom_SelectedIndexChanged); + dotPanel.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + dotPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + dotPanel.BackColor = System.Drawing.SystemColors.ControlDark; + dotPanel.Location = new System.Drawing.Point(14, 31); + dotPanel.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + dotPanel.Name = "dotPanel"; + dotPanel.Size = new System.Drawing.Size(454, 575); + dotPanel.TabIndex = 0; + dotPanel.Paint += dotPanel_Paint; + dotPanel.MouseDown += dotPanel_MouseMove; + dotPanel.MouseMove += dotPanel_MouseMove; + dotPanel.Resize += cbZoom_SelectedIndexChanged; // // nudX // - this.nudX.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.nudX.Location = new System.Drawing.Point(666, 27); - this.nudX.Maximum = new decimal(new int[] { - 255, - 0, - 0, - 0}); - this.nudX.Name = "nudX"; - this.nudX.Size = new System.Drawing.Size(40, 20); - this.nudX.TabIndex = 1; - this.toolTip1.SetToolTip(this.nudX, "Symbol width"); - this.nudX.Value = new decimal(new int[] { - 32, - 0, - 0, - 0}); - this.nudX.ValueChanged += new System.EventHandler(this.nudX_ValueChanged); + nudX.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + nudX.Location = new System.Drawing.Point(777, 31); + nudX.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + nudX.Maximum = new decimal(new int[] { 255, 0, 0, 0 }); + nudX.Name = "nudX"; + nudX.Size = new System.Drawing.Size(47, 23); + nudX.TabIndex = 1; + toolTip1.SetToolTip(nudX, "Symbol width"); + nudX.Value = new decimal(new int[] { 32, 0, 0, 0 }); + nudX.ValueChanged += nudX_ValueChanged; // // nudY // - this.nudY.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.nudY.Location = new System.Drawing.Point(666, 49); - this.nudY.Maximum = new decimal(new int[] { - 255, - 0, - 0, - 0}); - this.nudY.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.nudY.Name = "nudY"; - this.nudY.Size = new System.Drawing.Size(40, 20); - this.nudY.TabIndex = 2; - this.toolTip1.SetToolTip(this.nudY, "Symbol height"); - this.nudY.Value = new decimal(new int[] { - 32, - 0, - 0, - 0}); - this.nudY.ValueChanged += new System.EventHandler(this.nudY_ValueChanged); + nudY.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + nudY.Location = new System.Drawing.Point(777, 57); + nudY.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + nudY.Maximum = new decimal(new int[] { 255, 0, 0, 0 }); + nudY.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + nudY.Name = "nudY"; + nudY.Size = new System.Drawing.Size(47, 23); + nudY.TabIndex = 2; + toolTip1.SetToolTip(nudY, "Symbol height"); + nudY.Value = new decimal(new int[] { 32, 0, 0, 0 }); + nudY.ValueChanged += nudY_ValueChanged; // // label1 // - this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(622, 29); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(38, 13); - this.label1.TabIndex = 3; - this.label1.Text = "Width:"; + label1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(726, 33); + label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(42, 15); + label1.TabIndex = 3; + label1.Text = "Width:"; // // label2 // - this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(619, 51); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(41, 13); - this.label2.TabIndex = 4; - this.label2.Text = "Height:"; + label2.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(722, 59); + label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(46, 15); + label2.TabIndex = 4; + label2.Text = "Height:"; // // lblType // - this.lblType.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.lblType.Location = new System.Drawing.Point(554, 138); - this.lblType.Name = "lblType"; - this.lblType.Size = new System.Drawing.Size(217, 13); - this.lblType.TabIndex = 0; - this.lblType.Text = "Monospaced"; - this.lblType.TextAlign = System.Drawing.ContentAlignment.TopRight; + lblType.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + lblType.Location = new System.Drawing.Point(646, 159); + lblType.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + lblType.Name = "lblType"; + lblType.Size = new System.Drawing.Size(253, 15); + lblType.TabIndex = 0; + lblType.Text = "Monospaced"; + lblType.TextAlign = System.Drawing.ContentAlignment.TopRight; // // cbZoom // - this.cbZoom.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cbZoom.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbZoom.FormattingEnabled = true; - this.cbZoom.Items.AddRange(new object[] { - "2", - "3", - "5", - "10", - "15", - "20", - "25", - "30", - "35", - "40", - "45", - "50"}); - this.cbZoom.Location = new System.Drawing.Point(554, 45); - this.cbZoom.Name = "cbZoom"; - this.cbZoom.Size = new System.Drawing.Size(59, 21); - this.cbZoom.TabIndex = 6; - this.cbZoom.TabStop = false; - this.toolTip1.SetToolTip(this.cbZoom, "Canvas zoom level"); - this.cbZoom.SelectedIndexChanged += new System.EventHandler(this.cbZoom_SelectedIndexChanged); + cbZoom.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + cbZoom.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbZoom.FormattingEnabled = true; + cbZoom.Items.AddRange(new object[] { "2", "3", "5", "10", "15", "20", "25", "30", "35", "40", "45", "50" }); + cbZoom.Location = new System.Drawing.Point(646, 52); + cbZoom.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbZoom.Name = "cbZoom"; + cbZoom.Size = new System.Drawing.Size(68, 23); + cbZoom.TabIndex = 6; + cbZoom.TabStop = false; + toolTip1.SetToolTip(cbZoom, "Canvas zoom level"); // // label4 // - this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(553, 29); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(62, 13); - this.label4.TabIndex = 7; - this.label4.Text = "Zoom level:"; + label4.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + label4.AutoSize = true; + label4.Location = new System.Drawing.Point(645, 33); + label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(69, 15); + label4.TabIndex = 7; + label4.Text = "Zoom level:"; // // panel1 // - this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panel1.Controls.Add(this.btnClear); - this.panel1.Controls.Add(this.btnMirrorY); - this.panel1.Controls.Add(this.btnMirrorX); - this.panel1.Controls.Add(this.btnInvert); - this.panel1.Controls.Add(this.btnShiftDown); - this.panel1.Controls.Add(this.btnShiftUp); - this.panel1.Controls.Add(this.btnShiftRight); - this.panel1.Controls.Add(this.btnShiftLeft); - this.panel1.Location = new System.Drawing.Point(428, 27); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(120, 121); - this.panel1.TabIndex = 9; + panel1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + panel1.Controls.Add(btnClear); + panel1.Controls.Add(btnMirrorY); + panel1.Controls.Add(btnMirrorX); + panel1.Controls.Add(btnInvert); + panel1.Controls.Add(btnShiftDown); + panel1.Controls.Add(btnShiftUp); + panel1.Controls.Add(btnShiftRight); + panel1.Controls.Add(btnShiftLeft); + panel1.Location = new System.Drawing.Point(499, 31); + panel1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + panel1.Name = "panel1"; + panel1.Size = new System.Drawing.Size(140, 139); + panel1.TabIndex = 9; // // btnClear // - this.btnClear.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.btnClear.Location = new System.Drawing.Point(7, 8); - this.btnClear.Name = "btnClear"; - this.btnClear.Size = new System.Drawing.Size(30, 30); - this.btnClear.TabIndex = 7; - this.btnClear.Text = "○"; - this.toolTip1.SetToolTip(this.btnClear, "Clear canvas"); - this.btnClear.UseVisualStyleBackColor = true; - this.btnClear.Click += new System.EventHandler(this.btnClear_Click); + btnClear.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnClear.Location = new System.Drawing.Point(8, 9); + btnClear.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnClear.Name = "btnClear"; + btnClear.Size = new System.Drawing.Size(35, 35); + btnClear.TabIndex = 7; + btnClear.Text = "○"; + toolTip1.SetToolTip(btnClear, "Clear canvas"); + btnClear.UseVisualStyleBackColor = true; + btnClear.Click += btnClear_Click; // // btnMirrorY // - this.btnMirrorY.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.btnMirrorY.Location = new System.Drawing.Point(79, 80); - this.btnMirrorY.Name = "btnMirrorY"; - this.btnMirrorY.Size = new System.Drawing.Size(30, 30); - this.btnMirrorY.TabIndex = 6; - this.btnMirrorY.Text = "⩥"; - this.toolTip1.SetToolTip(this.btnMirrorY, "Mirror by Y axis (vertical)"); - this.btnMirrorY.UseVisualStyleBackColor = true; - this.btnMirrorY.Click += new System.EventHandler(this.btnMirrorY_Click); + btnMirrorY.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnMirrorY.Location = new System.Drawing.Point(92, 92); + btnMirrorY.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnMirrorY.Name = "btnMirrorY"; + btnMirrorY.Size = new System.Drawing.Size(35, 35); + btnMirrorY.TabIndex = 6; + btnMirrorY.Text = "⩥"; + toolTip1.SetToolTip(btnMirrorY, "Mirror by Y axis (vertical)"); + btnMirrorY.UseVisualStyleBackColor = true; + btnMirrorY.Click += btnMirrorY_Click; // // btnMirrorX // - this.btnMirrorX.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.btnMirrorX.Location = new System.Drawing.Point(43, 80); - this.btnMirrorX.Name = "btnMirrorX"; - this.btnMirrorX.Size = new System.Drawing.Size(30, 30); - this.btnMirrorX.TabIndex = 5; - this.btnMirrorX.Text = "◮"; - this.toolTip1.SetToolTip(this.btnMirrorX, "Mirror by X axis (horizontal)"); - this.btnMirrorX.UseVisualStyleBackColor = true; - this.btnMirrorX.Click += new System.EventHandler(this.btnMirrorX_Click); + btnMirrorX.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnMirrorX.Location = new System.Drawing.Point(50, 92); + btnMirrorX.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnMirrorX.Name = "btnMirrorX"; + btnMirrorX.Size = new System.Drawing.Size(35, 35); + btnMirrorX.TabIndex = 5; + btnMirrorX.Text = "◮"; + toolTip1.SetToolTip(btnMirrorX, "Mirror by X axis (horizontal)"); + btnMirrorX.UseVisualStyleBackColor = true; + btnMirrorX.Click += btnMirrorX_Click; // // btnInvert // - this.btnInvert.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.btnInvert.Location = new System.Drawing.Point(7, 80); - this.btnInvert.Name = "btnInvert"; - this.btnInvert.Size = new System.Drawing.Size(30, 30); - this.btnInvert.TabIndex = 4; - this.btnInvert.Text = "◪"; - this.toolTip1.SetToolTip(this.btnInvert, "Invert pixel colors"); - this.btnInvert.UseVisualStyleBackColor = true; - this.btnInvert.Click += new System.EventHandler(this.btnInvert_Click); + btnInvert.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnInvert.Location = new System.Drawing.Point(8, 92); + btnInvert.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnInvert.Name = "btnInvert"; + btnInvert.Size = new System.Drawing.Size(35, 35); + btnInvert.TabIndex = 4; + btnInvert.Text = "◪"; + toolTip1.SetToolTip(btnInvert, "Invert pixel colors"); + btnInvert.UseVisualStyleBackColor = true; + btnInvert.Click += btnInvert_Click; // // btnShiftDown // - this.btnShiftDown.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.btnShiftDown.Location = new System.Drawing.Point(43, 44); - this.btnShiftDown.Name = "btnShiftDown"; - this.btnShiftDown.Size = new System.Drawing.Size(30, 30); - this.btnShiftDown.TabIndex = 3; - this.btnShiftDown.Text = "▼"; - this.toolTip1.SetToolTip(this.btnShiftDown, "Shift pixels down"); - this.btnShiftDown.UseVisualStyleBackColor = true; - this.btnShiftDown.Click += new System.EventHandler(this.btnShiftDown_Click); + btnShiftDown.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnShiftDown.Location = new System.Drawing.Point(50, 51); + btnShiftDown.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnShiftDown.Name = "btnShiftDown"; + btnShiftDown.Size = new System.Drawing.Size(35, 35); + btnShiftDown.TabIndex = 3; + btnShiftDown.Text = "▼"; + toolTip1.SetToolTip(btnShiftDown, "Shift pixels down"); + btnShiftDown.UseVisualStyleBackColor = true; + btnShiftDown.Click += btnShiftDown_Click; // // btnShiftUp // - this.btnShiftUp.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.btnShiftUp.Location = new System.Drawing.Point(43, 8); - this.btnShiftUp.Name = "btnShiftUp"; - this.btnShiftUp.Size = new System.Drawing.Size(30, 30); - this.btnShiftUp.TabIndex = 2; - this.btnShiftUp.Text = "▲"; - this.toolTip1.SetToolTip(this.btnShiftUp, "Shift pixels up"); - this.btnShiftUp.UseVisualStyleBackColor = true; - this.btnShiftUp.Click += new System.EventHandler(this.btnShiftUp_Click); + btnShiftUp.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnShiftUp.Location = new System.Drawing.Point(50, 9); + btnShiftUp.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnShiftUp.Name = "btnShiftUp"; + btnShiftUp.Size = new System.Drawing.Size(35, 35); + btnShiftUp.TabIndex = 2; + btnShiftUp.Text = "▲"; + toolTip1.SetToolTip(btnShiftUp, "Shift pixels up"); + btnShiftUp.UseVisualStyleBackColor = true; + btnShiftUp.Click += btnShiftUp_Click; // // btnShiftRight // - this.btnShiftRight.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.btnShiftRight.Location = new System.Drawing.Point(79, 44); - this.btnShiftRight.Name = "btnShiftRight"; - this.btnShiftRight.Size = new System.Drawing.Size(30, 30); - this.btnShiftRight.TabIndex = 1; - this.btnShiftRight.Text = "▶"; - this.toolTip1.SetToolTip(this.btnShiftRight, "Shift pixels right"); - this.btnShiftRight.UseVisualStyleBackColor = true; - this.btnShiftRight.Click += new System.EventHandler(this.btnShiftRight_Click); + btnShiftRight.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnShiftRight.Location = new System.Drawing.Point(92, 51); + btnShiftRight.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnShiftRight.Name = "btnShiftRight"; + btnShiftRight.Size = new System.Drawing.Size(35, 35); + btnShiftRight.TabIndex = 1; + btnShiftRight.Text = "▶"; + toolTip1.SetToolTip(btnShiftRight, "Shift pixels right"); + btnShiftRight.UseVisualStyleBackColor = true; + btnShiftRight.Click += btnShiftRight_Click; // // btnShiftLeft // - this.btnShiftLeft.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.btnShiftLeft.Location = new System.Drawing.Point(7, 44); - this.btnShiftLeft.Name = "btnShiftLeft"; - this.btnShiftLeft.Size = new System.Drawing.Size(30, 30); - this.btnShiftLeft.TabIndex = 0; - this.btnShiftLeft.Text = "◀"; - this.toolTip1.SetToolTip(this.btnShiftLeft, "Shift pixels left"); - this.btnShiftLeft.UseVisualStyleBackColor = true; - this.btnShiftLeft.Click += new System.EventHandler(this.btnShiftLeft_Click); + btnShiftLeft.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnShiftLeft.Location = new System.Drawing.Point(8, 51); + btnShiftLeft.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnShiftLeft.Name = "btnShiftLeft"; + btnShiftLeft.Size = new System.Drawing.Size(35, 35); + btnShiftLeft.TabIndex = 0; + btnShiftLeft.Text = "◀"; + toolTip1.SetToolTip(btnShiftLeft, "Shift pixels left"); + btnShiftLeft.UseVisualStyleBackColor = true; + btnShiftLeft.Click += btnShiftLeft_Click; // // btnExport // - this.btnExport.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnExport.Location = new System.Drawing.Point(696, 109); - this.btnExport.Name = "btnExport"; - this.btnExport.Size = new System.Drawing.Size(75, 23); - this.btnExport.TabIndex = 10; - this.btnExport.Text = "Export"; - this.toolTip1.SetToolTip(this.btnExport, "Configure and export data"); - this.btnExport.UseVisualStyleBackColor = true; - this.btnExport.Click += new System.EventHandler(this.button1_Click); + btnExport.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + btnExport.Location = new System.Drawing.Point(812, 126); + btnExport.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnExport.Name = "btnExport"; + btnExport.Size = new System.Drawing.Size(88, 27); + btnExport.TabIndex = 10; + btnExport.Text = "Export"; + toolTip1.SetToolTip(btnExport, "Configure and export data"); + btnExport.UseVisualStyleBackColor = true; + btnExport.Click += button1_Click; // // miniList // - this.miniList.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Right))); - this.miniList.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.miniList.GridLines = true; - this.miniList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.miniList.HideSelection = false; - this.miniList.LargeImageList = this.ilMiniatures; - this.miniList.Location = new System.Drawing.Point(428, 154); - this.miniList.MultiSelect = false; - this.miniList.Name = "miniList"; - this.miniList.ShowGroups = false; - this.miniList.Size = new System.Drawing.Size(343, 395); - this.miniList.SmallImageList = this.ilMiniatures; - this.miniList.Sorting = System.Windows.Forms.SortOrder.Ascending; - this.miniList.TabIndex = 12; - this.miniList.TabStop = false; - this.miniList.TileSize = new System.Drawing.Size(50, 50); - this.miniList.UseCompatibleStateImageBehavior = false; - this.miniList.SelectedIndexChanged += new System.EventHandler(this.miniList_SelectedIndexChanged); + miniList.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + miniList.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + miniList.GridLines = true; + miniList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + miniList.LargeImageList = ilMiniatures; + miniList.Location = new System.Drawing.Point(499, 178); + miniList.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + miniList.MultiSelect = false; + miniList.Name = "miniList"; + miniList.ShowGroups = false; + miniList.Size = new System.Drawing.Size(400, 455); + miniList.SmallImageList = ilMiniatures; + miniList.Sorting = System.Windows.Forms.SortOrder.Ascending; + miniList.TabIndex = 12; + miniList.TabStop = false; + miniList.TileSize = new System.Drawing.Size(50, 50); + miniList.UseCompatibleStateImageBehavior = false; + miniList.SelectedIndexChanged += miniList_SelectedIndexChanged; // // ilMiniatures // - this.ilMiniatures.ColorDepth = System.Windows.Forms.ColorDepth.Depth4Bit; - this.ilMiniatures.ImageSize = new System.Drawing.Size(50, 50); - this.ilMiniatures.TransparentColor = System.Drawing.Color.Transparent; + ilMiniatures.ColorDepth = System.Windows.Forms.ColorDepth.Depth4Bit; + ilMiniatures.ImageSize = new System.Drawing.Size(50, 50); + ilMiniatures.TransparentColor = System.Drawing.Color.Transparent; // // btnApply // - this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnApply.Location = new System.Drawing.Point(615, 109); - this.btnApply.Name = "btnApply"; - this.btnApply.Size = new System.Drawing.Size(75, 23); - this.btnApply.TabIndex = 13; - this.btnApply.Text = "Apply"; - this.toolTip1.SetToolTip(this.btnApply, "Apply changes made to the symbol"); - this.btnApply.UseVisualStyleBackColor = true; - this.btnApply.Click += new System.EventHandler(this.button2_Click); + btnApply.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + btnApply.Location = new System.Drawing.Point(718, 126); + btnApply.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnApply.Name = "btnApply"; + btnApply.Size = new System.Drawing.Size(88, 27); + btnApply.TabIndex = 13; + btnApply.Text = "Apply"; + toolTip1.SetToolTip(btnApply, "Apply changes made to the symbol"); + btnApply.UseVisualStyleBackColor = true; + btnApply.Click += button2_Click; // // hScroll // - this.hScroll.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.hScroll.Location = new System.Drawing.Point(12, 528); - this.hScroll.Name = "hScroll"; - this.hScroll.Size = new System.Drawing.Size(389, 21); - this.hScroll.TabIndex = 14; - this.hScroll.ValueChanged += new System.EventHandler(this.scroll_ValueChanged); + hScroll.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + hScroll.Location = new System.Drawing.Point(14, 609); + hScroll.Name = "hScroll"; + hScroll.Size = new System.Drawing.Size(454, 21); + hScroll.TabIndex = 14; + hScroll.ValueChanged += scroll_ValueChanged; // // vScroll // - this.vScroll.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Right))); - this.vScroll.LargeChange = 25; - this.vScroll.Location = new System.Drawing.Point(404, 27); - this.vScroll.Name = "vScroll"; - this.vScroll.Size = new System.Drawing.Size(21, 498); - this.vScroll.TabIndex = 15; - this.vScroll.ValueChanged += new System.EventHandler(this.scroll_ValueChanged); + vScroll.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + vScroll.LargeChange = 25; + vScroll.Location = new System.Drawing.Point(471, 31); + vScroll.Name = "vScroll"; + vScroll.Size = new System.Drawing.Size(21, 575); + vScroll.TabIndex = 15; + vScroll.ValueChanged += scroll_ValueChanged; // // label5 // - this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(554, 114); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(24, 13); - this.label5.TabIndex = 16; - this.label5.Text = "X,Y"; - this.label5.TextAlign = System.Drawing.ContentAlignment.TopRight; + label5.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + label5.AutoSize = true; + label5.Location = new System.Drawing.Point(646, 132); + label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + label5.Name = "label5"; + label5.Size = new System.Drawing.Size(24, 15); + label5.TabIndex = 16; + label5.Text = "X,Y"; + label5.TextAlign = System.Drawing.ContentAlignment.TopRight; // // menuStrip1 // - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileToolStripMenuItem, - this.editToolStripMenuItem, - this.toolsToolStripMenuItem, - this.aboutToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(784, 24); - this.menuStrip1.TabIndex = 17; - this.menuStrip1.Text = "menuStrip1"; + menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { fileToolStripMenuItem, editToolStripMenuItem, toolsToolStripMenuItem, aboutToolStripMenuItem }); + menuStrip1.Location = new System.Drawing.Point(0, 0); + menuStrip1.Name = "menuStrip1"; + menuStrip1.Padding = new System.Windows.Forms.Padding(7, 2, 0, 2); + menuStrip1.Size = new System.Drawing.Size(915, 24); + menuStrip1.TabIndex = 17; + menuStrip1.Text = "menuStrip1"; // // fileToolStripMenuItem // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.newToolStripMenuItem, - this.openToolStripMenuItem, - this.openDEVToolStripMenuItem, - this.saveDEVToolStripMenuItem, - this.saveToolStripMenuItem, - this.saveAsToolStripMenuItem, - this.exitToolStripMenuItem}); - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); - this.fileToolStripMenuItem.Text = "File"; + fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, exitToolStripMenuItem }); + fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + fileToolStripMenuItem.Text = "File"; // // newToolStripMenuItem // - this.newToolStripMenuItem.Image = global::McBitFont.Properties.Resources.file; - this.newToolStripMenuItem.Name = "newToolStripMenuItem"; - this.newToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+N"; - this.newToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N))); - this.newToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.newToolStripMenuItem.Text = "New"; - this.newToolStripMenuItem.Click += new System.EventHandler(this.newToolStripMenuItem_Click); + newToolStripMenuItem.Image = Properties.Resources.file; + newToolStripMenuItem.Name = "newToolStripMenuItem"; + newToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+N"; + newToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N; + newToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + newToolStripMenuItem.Text = "New"; + newToolStripMenuItem.Click += newToolStripMenuItem_Click; // // openToolStripMenuItem // - this.openToolStripMenuItem.Image = global::McBitFont.Properties.Resources.folder_open; - this.openToolStripMenuItem.Name = "openToolStripMenuItem"; - this.openToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+O"; - this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); - this.openToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.openToolStripMenuItem.Text = "Open"; - this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); - // - // saveDEVToolStripMenuItem - // - this.saveDEVToolStripMenuItem.Name = "saveDEVToolStripMenuItem"; - this.saveDEVToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.saveDEVToolStripMenuItem.Text = "Save as (new format)"; - this.saveDEVToolStripMenuItem.Click += new System.EventHandler(this.saveJSONToolStripMenuItem_Click); + openToolStripMenuItem.Image = Properties.Resources.folder_open; + openToolStripMenuItem.Name = "openToolStripMenuItem"; + openToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+O"; + openToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O; + openToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + openToolStripMenuItem.Text = "Open"; + openToolStripMenuItem.Click += openToolStripMenuItem_Click; // // saveToolStripMenuItem // - 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))); - this.saveToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.saveToolStripMenuItem.Text = "Save"; - this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click_1); + saveToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Disk_16; + saveToolStripMenuItem.Name = "saveToolStripMenuItem"; + saveToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+S"; + saveToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S; + saveToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + saveToolStripMenuItem.Text = "Save"; + saveToolStripMenuItem.Click += saveToolStripMenuItem_Click_1; // // saveAsToolStripMenuItem // - this.saveAsToolStripMenuItem.Image = global::McBitFont.Properties.Resources.Famfamfam_Silk_Disk_16; - this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem"; - this.saveAsToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Shift+S"; - this.saveAsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) - | System.Windows.Forms.Keys.S))); - this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.saveAsToolStripMenuItem.Text = "Save as"; - this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); + saveAsToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Disk_16; + saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem"; + saveAsToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Shift+S"; + saveAsToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift | System.Windows.Forms.Keys.S; + saveAsToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + saveAsToolStripMenuItem.Text = "Save as"; + saveAsToolStripMenuItem.Click += saveToolStripMenuItem_Click; // // exitToolStripMenuItem // - this.exitToolStripMenuItem.Image = global::McBitFont.Properties.Resources.Famfamfam_Silk_Door_out_16; - this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; - this.exitToolStripMenuItem.ShortcutKeyDisplayString = "Alt+X"; - this.exitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.X))); - this.exitToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.exitToolStripMenuItem.Text = "Exit"; - this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); + exitToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Door_out_16; + exitToolStripMenuItem.Name = "exitToolStripMenuItem"; + exitToolStripMenuItem.ShortcutKeyDisplayString = "Alt+X"; + exitToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.X; + exitToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + exitToolStripMenuItem.Text = "Exit"; + exitToolStripMenuItem.Click += exitToolStripMenuItem_Click; // // 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"; + editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { copyToolStripMenuItem, pasteToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, applyToolStripMenuItem }); + editToolStripMenuItem.Name = "editToolStripMenuItem"; + editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); + editToolStripMenuItem.Text = "Edit"; // // copyToolStripMenuItem // - this.copyToolStripMenuItem.Enabled = false; - this.copyToolStripMenuItem.Image = global::McBitFont.Properties.Resources.Famfamfam_Silk_Page_copy_16; - this.copyToolStripMenuItem.Name = "copyToolStripMenuItem"; - this.copyToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+C"; - this.copyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); - this.copyToolStripMenuItem.Size = new System.Drawing.Size(212, 22); - this.copyToolStripMenuItem.Text = "Copy"; - this.copyToolStripMenuItem.Click += new System.EventHandler(this.copyToolStripMenuItem_Click); + copyToolStripMenuItem.Enabled = false; + copyToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Page_copy_16; + copyToolStripMenuItem.Name = "copyToolStripMenuItem"; + copyToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+C"; + copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C; + copyToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + copyToolStripMenuItem.Text = "Copy"; + copyToolStripMenuItem.Click += 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.ShortcutKeyDisplayString = "Ctrl+V"; - this.pasteToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V))); - this.pasteToolStripMenuItem.Size = new System.Drawing.Size(212, 22); - this.pasteToolStripMenuItem.Text = "Paste"; - this.pasteToolStripMenuItem.Click += new System.EventHandler(this.pasteToolStripMenuItem_Click); + pasteToolStripMenuItem.Enabled = false; + pasteToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Page_paste_16; + pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; + pasteToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+V"; + pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V; + pasteToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + pasteToolStripMenuItem.Text = "Paste"; + pasteToolStripMenuItem.Click += pasteToolStripMenuItem_Click; // // prependSymbolToolStripMenuItem // - this.prependSymbolToolStripMenuItem.Enabled = false; - this.prependSymbolToolStripMenuItem.Image = global::McBitFont.Properties.Resources.action_add; - this.prependSymbolToolStripMenuItem.Name = "prependSymbolToolStripMenuItem"; - this.prependSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Ins"; - this.prependSymbolToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Insert))); - this.prependSymbolToolStripMenuItem.Size = new System.Drawing.Size(212, 22); - this.prependSymbolToolStripMenuItem.Text = "Prepend symbol"; - this.prependSymbolToolStripMenuItem.Click += new System.EventHandler(this.prependSymbolToolStripMenuItem_Click); + prependSymbolToolStripMenuItem.Enabled = false; + prependSymbolToolStripMenuItem.Image = Properties.Resources.action_add; + 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(212, 22); + prependSymbolToolStripMenuItem.Text = "Prepend symbol"; + prependSymbolToolStripMenuItem.Click += prependSymbolToolStripMenuItem_Click; // // appendSymbolToolStripMenuItem // - this.appendSymbolToolStripMenuItem.Enabled = false; - this.appendSymbolToolStripMenuItem.Image = global::McBitFont.Properties.Resources.action_add; - this.appendSymbolToolStripMenuItem.Name = "appendSymbolToolStripMenuItem"; - this.appendSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+End"; - this.appendSymbolToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.End))); - this.appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(212, 22); - this.appendSymbolToolStripMenuItem.Text = "Append symbol"; - this.appendSymbolToolStripMenuItem.Click += new System.EventHandler(this.prependSymbolToolStripMenuItem_Click); + appendSymbolToolStripMenuItem.Enabled = false; + appendSymbolToolStripMenuItem.Image = Properties.Resources.action_add; + appendSymbolToolStripMenuItem.Name = "appendSymbolToolStripMenuItem"; + appendSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+End"; + appendSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.End; + appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + appendSymbolToolStripMenuItem.Text = "Append symbol"; + appendSymbolToolStripMenuItem.Click += prependSymbolToolStripMenuItem_Click; // // removeSymbolToolStripMenuItem // - this.removeSymbolToolStripMenuItem.Enabled = false; - this.removeSymbolToolStripMenuItem.Image = global::McBitFont.Properties.Resources.action_remove; - this.removeSymbolToolStripMenuItem.Name = "removeSymbolToolStripMenuItem"; - this.removeSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Del"; - this.removeSymbolToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Delete))); - this.removeSymbolToolStripMenuItem.Size = new System.Drawing.Size(212, 22); - this.removeSymbolToolStripMenuItem.Text = "Remove symbol"; - this.removeSymbolToolStripMenuItem.Click += new System.EventHandler(this.removeSymbolToolStripMenuItem_Click); + removeSymbolToolStripMenuItem.Enabled = false; + removeSymbolToolStripMenuItem.Image = Properties.Resources.action_remove; + removeSymbolToolStripMenuItem.Name = "removeSymbolToolStripMenuItem"; + removeSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Del"; + removeSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Delete; + removeSymbolToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + removeSymbolToolStripMenuItem.Text = "Remove symbol"; + removeSymbolToolStripMenuItem.Click += removeSymbolToolStripMenuItem_Click; // // applyToolStripMenuItem // - this.applyToolStripMenuItem.Image = global::McBitFont.Properties.Resources.action_check; - this.applyToolStripMenuItem.Name = "applyToolStripMenuItem"; - this.applyToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Space"; - this.applyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Space))); - this.applyToolStripMenuItem.Size = new System.Drawing.Size(212, 22); - this.applyToolStripMenuItem.Text = "Apply"; - this.applyToolStripMenuItem.Click += new System.EventHandler(this.button2_Click); + applyToolStripMenuItem.Image = Properties.Resources.action_check; + applyToolStripMenuItem.Name = "applyToolStripMenuItem"; + applyToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Space"; + applyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Space; + applyToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + applyToolStripMenuItem.Text = "Apply"; + applyToolStripMenuItem.Click += button2_Click; // // toolsToolStripMenuItem // - this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.ClearToolStripMenuItem, - 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(47, 20); - this.toolsToolStripMenuItem.Text = "Tools"; + toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { ClearToolStripMenuItem, shiftUpToolStripMenuItem, shiftDownToolStripMenuItem, shiftLeftToolStripMenuItem, shiftRightToolStripMenuItem, invertToolStripMenuItem, mirrorXToolStripMenuItem, mirrorYToolStripMenuItem, exportToolStripMenuItem }); + toolsToolStripMenuItem.Name = "toolsToolStripMenuItem"; + toolsToolStripMenuItem.Size = new System.Drawing.Size(47, 20); + toolsToolStripMenuItem.Text = "Tools"; // // ClearToolStripMenuItem // - this.ClearToolStripMenuItem.Name = "ClearToolStripMenuItem"; - this.ClearToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+W"; - this.ClearToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W))); - this.ClearToolStripMenuItem.Size = new System.Drawing.Size(197, 22); - this.ClearToolStripMenuItem.Text = "Clear canvas"; - this.ClearToolStripMenuItem.Click += new System.EventHandler(this.btnClear_Click); + ClearToolStripMenuItem.Name = "ClearToolStripMenuItem"; + ClearToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+W"; + ClearToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W; + ClearToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + ClearToolStripMenuItem.Text = "Clear canvas"; + ClearToolStripMenuItem.Click += btnClear_Click; // // shiftUpToolStripMenuItem // - this.shiftUpToolStripMenuItem.Image = global::McBitFont.Properties.Resources.arrow_top; - this.shiftUpToolStripMenuItem.Name = "shiftUpToolStripMenuItem"; - this.shiftUpToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Up"; - this.shiftUpToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Up))); - this.shiftUpToolStripMenuItem.Size = new System.Drawing.Size(197, 22); - this.shiftUpToolStripMenuItem.Text = "Shift Up"; - this.shiftUpToolStripMenuItem.Click += new System.EventHandler(this.btnShiftUp_Click); + shiftUpToolStripMenuItem.Image = Properties.Resources.arrow_top; + shiftUpToolStripMenuItem.Name = "shiftUpToolStripMenuItem"; + shiftUpToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Up"; + shiftUpToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Up; + shiftUpToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + shiftUpToolStripMenuItem.Text = "Shift Up"; + shiftUpToolStripMenuItem.Click += btnShiftUp_Click; // // shiftDownToolStripMenuItem // - this.shiftDownToolStripMenuItem.Image = global::McBitFont.Properties.Resources.arrow_down; - this.shiftDownToolStripMenuItem.Name = "shiftDownToolStripMenuItem"; - this.shiftDownToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Down"; - this.shiftDownToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Down))); - this.shiftDownToolStripMenuItem.Size = new System.Drawing.Size(197, 22); - this.shiftDownToolStripMenuItem.Text = "Shift Down"; - this.shiftDownToolStripMenuItem.Click += new System.EventHandler(this.btnShiftDown_Click); + shiftDownToolStripMenuItem.Image = Properties.Resources.arrow_down; + shiftDownToolStripMenuItem.Name = "shiftDownToolStripMenuItem"; + shiftDownToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Down"; + shiftDownToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Down; + shiftDownToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + shiftDownToolStripMenuItem.Text = "Shift Down"; + shiftDownToolStripMenuItem.Click += btnShiftDown_Click; // // shiftLeftToolStripMenuItem // - this.shiftLeftToolStripMenuItem.Image = global::McBitFont.Properties.Resources.arrow_back; - this.shiftLeftToolStripMenuItem.Name = "shiftLeftToolStripMenuItem"; - this.shiftLeftToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Left"; - this.shiftLeftToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Left))); - this.shiftLeftToolStripMenuItem.Size = new System.Drawing.Size(197, 22); - this.shiftLeftToolStripMenuItem.Text = "Shift left"; - this.shiftLeftToolStripMenuItem.Click += new System.EventHandler(this.btnShiftLeft_Click); + shiftLeftToolStripMenuItem.Image = Properties.Resources.arrow_back; + shiftLeftToolStripMenuItem.Name = "shiftLeftToolStripMenuItem"; + shiftLeftToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Left"; + shiftLeftToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Left; + shiftLeftToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + shiftLeftToolStripMenuItem.Text = "Shift left"; + shiftLeftToolStripMenuItem.Click += btnShiftLeft_Click; // // shiftRightToolStripMenuItem // - this.shiftRightToolStripMenuItem.Image = global::McBitFont.Properties.Resources.arrow_next; - this.shiftRightToolStripMenuItem.Name = "shiftRightToolStripMenuItem"; - this.shiftRightToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Right"; - this.shiftRightToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Right))); - this.shiftRightToolStripMenuItem.Size = new System.Drawing.Size(197, 22); - this.shiftRightToolStripMenuItem.Text = "Shift Right"; - this.shiftRightToolStripMenuItem.Click += new System.EventHandler(this.btnShiftRight_Click); + shiftRightToolStripMenuItem.Image = Properties.Resources.arrow_next; + shiftRightToolStripMenuItem.Name = "shiftRightToolStripMenuItem"; + shiftRightToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Right"; + shiftRightToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Right; + shiftRightToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + shiftRightToolStripMenuItem.Text = "Shift Right"; + shiftRightToolStripMenuItem.Click += btnShiftRight_Click; // // 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))); - this.invertToolStripMenuItem.Size = new System.Drawing.Size(197, 22); - this.invertToolStripMenuItem.Text = "Invert"; - this.invertToolStripMenuItem.Click += new System.EventHandler(this.btnInvert_Click); + invertToolStripMenuItem.Image = Properties.Resources.Ionic_Ionicons_Invert_mode_outline_16; + invertToolStripMenuItem.Name = "invertToolStripMenuItem"; + invertToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+I"; + invertToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I; + invertToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + invertToolStripMenuItem.Text = "Invert"; + invertToolStripMenuItem.Click += btnInvert_Click; // // 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))); - this.mirrorXToolStripMenuItem.Size = new System.Drawing.Size(197, 22); - this.mirrorXToolStripMenuItem.Text = "Mirror X"; - this.mirrorXToolStripMenuItem.Click += new System.EventHandler(this.btnMirrorX_Click); + mirrorXToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Shape_flip_horizontal_16; + mirrorXToolStripMenuItem.Name = "mirrorXToolStripMenuItem"; + mirrorXToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+X"; + mirrorXToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X; + mirrorXToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + mirrorXToolStripMenuItem.Text = "Mirror X"; + mirrorXToolStripMenuItem.Click += btnMirrorX_Click; // // 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))); - this.mirrorYToolStripMenuItem.Size = new System.Drawing.Size(197, 22); - this.mirrorYToolStripMenuItem.Text = "Mirror Y"; - this.mirrorYToolStripMenuItem.Click += new System.EventHandler(this.btnMirrorY_Click); + mirrorYToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Shape_flip_vertical_16; + mirrorYToolStripMenuItem.Name = "mirrorYToolStripMenuItem"; + mirrorYToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Y"; + mirrorYToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y; + mirrorYToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + mirrorYToolStripMenuItem.Text = "Mirror Y"; + mirrorYToolStripMenuItem.Click += 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); + exportToolStripMenuItem.Name = "exportToolStripMenuItem"; + exportToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+E"; + exportToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E; + exportToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + exportToolStripMenuItem.Text = "Export"; + exportToolStripMenuItem.Click += button1_Click; // // aboutToolStripMenuItem // - this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; - this.aboutToolStripMenuItem.Size = new System.Drawing.Size(52, 20); - this.aboutToolStripMenuItem.Text = "About"; - this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click); + aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; + aboutToolStripMenuItem.Size = new System.Drawing.Size(52, 20); + aboutToolStripMenuItem.Text = "About"; + aboutToolStripMenuItem.Click += aboutToolStripMenuItem_Click; // // dlgSave // - this.dlgSave.DefaultExt = "mbf"; - this.dlgSave.Filter = "McBitFont files|*.mbf|McBitFont new format|*.mbfont|All files|*.*"; + dlgSave.DefaultExt = "mbf"; + dlgSave.Filter = "McBitFont files|*.mbfont|All files|*.*"; // // dlgOpen // - this.dlgOpen.DefaultExt = "mbf"; - this.dlgOpen.Filter = "McBitFont files|*.mbf|All files|*.*"; + dlgOpen.DefaultExt = "mbf"; + dlgOpen.Filter = "McBitFont files|*.mbfont|All files|*.*"; // // btnBaseline // - this.btnBaseline.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBaseline.Location = new System.Drawing.Point(615, 80); - this.btnBaseline.Name = "btnBaseline"; - this.btnBaseline.Size = new System.Drawing.Size(75, 23); - this.btnBaseline.TabIndex = 18; - this.btnBaseline.Text = "Baseline"; - this.toolTip1.SetToolTip(this.btnBaseline, "Set irtual base line for the font"); - this.btnBaseline.UseVisualStyleBackColor = true; - this.btnBaseline.Click += new System.EventHandler(this.btnBaseline_Click); + btnBaseline.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + btnBaseline.Location = new System.Drawing.Point(718, 92); + btnBaseline.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnBaseline.Name = "btnBaseline"; + btnBaseline.Size = new System.Drawing.Size(88, 27); + btnBaseline.TabIndex = 18; + btnBaseline.Text = "Baseline"; + toolTip1.SetToolTip(btnBaseline, "Set irtual base line for the font"); + btnBaseline.UseVisualStyleBackColor = true; + btnBaseline.Click += btnBaseline_Click; // // toolTip1 // - this.toolTip1.AutoPopDelay = 10000; - this.toolTip1.InitialDelay = 500; - this.toolTip1.ReshowDelay = 100; + toolTip1.AutoPopDelay = 10000; + toolTip1.InitialDelay = 500; + toolTip1.ReshowDelay = 100; // // chkLeftSide // - this.chkLeftSide.AutoSize = true; - this.chkLeftSide.Location = new System.Drawing.Point(712, 29); - this.chkLeftSide.Name = "chkLeftSide"; - this.chkLeftSide.Size = new System.Drawing.Size(66, 17); - this.chkLeftSide.TabIndex = 19; - this.chkLeftSide.Text = "Left side"; - this.toolTip1.SetToolTip(this.chkLeftSide, "Width changes will be made on Left/Right side"); - this.chkLeftSide.UseVisualStyleBackColor = true; + chkLeftSide.AutoSize = true; + chkLeftSide.Location = new System.Drawing.Point(831, 33); + chkLeftSide.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + chkLeftSide.Name = "chkLeftSide"; + chkLeftSide.Size = new System.Drawing.Size(70, 19); + chkLeftSide.TabIndex = 19; + chkLeftSide.Text = "Left side"; + toolTip1.SetToolTip(chkLeftSide, "Width changes will be made on Left/Right side"); + chkLeftSide.UseVisualStyleBackColor = true; // // chkTopSide // - this.chkTopSide.AutoSize = true; - this.chkTopSide.Location = new System.Drawing.Point(712, 50); - this.chkTopSide.Name = "chkTopSide"; - this.chkTopSide.Size = new System.Drawing.Size(67, 17); - this.chkTopSide.TabIndex = 20; - this.chkTopSide.Text = "Top side"; - this.toolTip1.SetToolTip(this.chkTopSide, "Height changes will be made on Top/Bottom side"); - this.chkTopSide.UseVisualStyleBackColor = true; - // - // openDEVToolStripMenuItem - // - this.openDEVToolStripMenuItem.Name = "openDEVToolStripMenuItem"; - this.openDEVToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.openDEVToolStripMenuItem.Text = "Open DEV"; - this.openDEVToolStripMenuItem.Visible = false; - this.openDEVToolStripMenuItem.Click += new System.EventHandler(this.openDEVToolStripMenuItem_Click); + chkTopSide.AutoSize = true; + chkTopSide.Location = new System.Drawing.Point(831, 58); + chkTopSide.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + chkTopSide.Name = "chkTopSide"; + chkTopSide.Size = new System.Drawing.Size(70, 19); + chkTopSide.TabIndex = 20; + chkTopSide.Text = "Top side"; + toolTip1.SetToolTip(chkTopSide, "Height changes will be made on Top/Bottom side"); + chkTopSide.UseVisualStyleBackColor = true; // // MainForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(784, 561); - this.Controls.Add(this.chkTopSide); - this.Controls.Add(this.chkLeftSide); - this.Controls.Add(this.btnBaseline); - this.Controls.Add(this.btnApply); - this.Controls.Add(this.btnExport); - this.Controls.Add(this.label5); - this.Controls.Add(this.vScroll); - this.Controls.Add(this.hScroll); - this.Controls.Add(this.miniList); - this.Controls.Add(this.panel1); - this.Controls.Add(this.label4); - this.Controls.Add(this.cbZoom); - this.Controls.Add(this.lblType); - this.Controls.Add(this.label2); - this.Controls.Add(this.label1); - this.Controls.Add(this.nudY); - this.Controls.Add(this.nudX); - this.Controls.Add(this.dotPanel); - this.Controls.Add(this.menuStrip1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MainMenuStrip = this.menuStrip1; - this.MinimumSize = new System.Drawing.Size(800, 600); - this.Name = "MainForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "McBitFont"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); - this.Load += new System.EventHandler(this.Form1_Load); - ((System.ComponentModel.ISupportInitialize)(this.nudX)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudY)).EndInit(); - this.panel1.ResumeLayout(false); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + ClientSize = new System.Drawing.Size(915, 647); + Controls.Add(chkTopSide); + Controls.Add(chkLeftSide); + Controls.Add(btnBaseline); + Controls.Add(btnApply); + Controls.Add(btnExport); + Controls.Add(label5); + Controls.Add(vScroll); + Controls.Add(hScroll); + Controls.Add(miniList); + Controls.Add(panel1); + Controls.Add(label4); + Controls.Add(cbZoom); + Controls.Add(lblType); + Controls.Add(label2); + Controls.Add(label1); + Controls.Add(nudY); + Controls.Add(nudX); + Controls.Add(dotPanel); + Controls.Add(menuStrip1); + Icon = (System.Drawing.Icon)resources.GetObject("$this.Icon"); + MainMenuStrip = menuStrip1; + Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + MinimumSize = new System.Drawing.Size(931, 686); + Name = "MainForm"; + StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + Text = "McBitFont"; + FormClosing += MainForm_FormClosing; + Load += Form1_Load; + ((System.ComponentModel.ISupportInitialize)nudX).EndInit(); + ((System.ComponentModel.ISupportInitialize)nudY).EndInit(); + panel1.ResumeLayout(false); + menuStrip1.ResumeLayout(false); + menuStrip1.PerformLayout(); + ResumeLayout(false); + PerformLayout(); } @@ -843,8 +786,6 @@ private System.Windows.Forms.ToolStripMenuItem ClearToolStripMenuItem; private System.Windows.Forms.CheckBox chkLeftSide; private System.Windows.Forms.CheckBox chkTopSide; - private System.Windows.Forms.ToolStripMenuItem saveDEVToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem openDEVToolStripMenuItem; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 4bc2635..4ce9f1a 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -1,21 +1,13 @@ using MessagePack; using System; using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Diagnostics; using System.Drawing; using System.Drawing.Drawing2D; using System.IO; using System.Linq; -using System.Reflection; using System.Runtime.InteropServices; -using System.Runtime.InteropServices.ComTypes; -using System.Runtime.Serialization.Formatters.Binary; using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; -using System.Windows.Forms.VisualStyles; namespace McBitFont { @@ -108,6 +100,8 @@ namespace McBitFont { if (Environment.GetCommandLineArgs().Length > 1) { loadProject(Environment.GetCommandLineArgs()[1]); } + + Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); } [DllImport("user32.dll")] @@ -635,29 +629,15 @@ namespace McBitFont { private void saveToolStripMenuItem_Click(object sender, EventArgs e) { checkModifiedFrame(); if (dlgSave.ShowDialog() == DialogResult.OK) { - SaveBlock sav; - sav.monospaced = monospaced; - sav.frames = frames; - sav.codepage = codepage; - sav.baseline = baseline; - BinaryFormatter formatter = new BinaryFormatter(); - using (Stream ms = File.OpenWrite(dlgSave.FileName)) { - formatter.Serialize(ms, sav); - ms.Close(); - } - prjModified = false; - prjName = Path.GetFileNameWithoutExtension(dlgSave.FileName); - prjFileName = dlgSave.FileName; - this.Text = "McBitFont " + version + " - " + prjName; + saveProject(dlgSave.FileName); } } private void loadProject(string filename) { SaveBlock sav; - BinaryFormatter formatter = new BinaryFormatter(); using (FileStream fs = File.Open(filename, FileMode.Open)) { - sav = (SaveBlock)formatter.Deserialize(fs); + sav = MessagePackSerializer.Deserialize(fs); fs.Close(); } monospaced = sav.monospaced; @@ -699,9 +679,9 @@ namespace McBitFont { sav.frames = frames; sav.codepage = codepage; sav.baseline = baseline; - BinaryFormatter formatter = new BinaryFormatter(); + using (Stream ms = File.OpenWrite(filename)) { - formatter.Serialize(ms, sav); + MessagePackSerializer.Serialize(ms, sav); ms.Close(); } prjModified = false; @@ -823,75 +803,6 @@ namespace McBitFont { dotPanel.Refresh(); } - private void saveJSONToolStripMenuItem_Click(object sender, EventArgs e) { - checkModifiedFrame(); - if (dlgSave.ShowDialog() == DialogResult.OK) { - SaveBlock sav; - sav.monospaced = monospaced; - sav.frames = frames; - sav.codepage = codepage; - sav.baseline = baseline; - using (Stream ms = File.OpenWrite(dlgSave.FileName)) { - // TODO: Serializer here - MessagePackSerializer.Serialize(ms, sav); - ms.Close(); - } - prjModified = false; - prjName = Path.GetFileNameWithoutExtension(dlgSave.FileName); - prjFileName = dlgSave.FileName; - this.Text = "McBitFont " + version + " - " + prjName; - } - } - - private void openDEVToolStripMenuItem_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) == DialogResult.Yes) { - saveAsToolStripMenuItem.PerformClick(); - return; - } - } - if (dlgOpen.ShowDialog() == DialogResult.OK) { - SaveBlock sav; - - var filename = dlgOpen.FileName; - using (FileStream fs = File.Open(filename, FileMode.Open)) { - sav = MessagePackSerializer.Deserialize(fs); - fs.Close(); - } - monospaced = sav.monospaced; - codepage = sav.codepage; - baseline = sav.baseline; - lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; - frames = sav.frames; - miniList.Items.Clear(); - ilMiniatures.Images.Clear(); - foreach (FrameMiniature ff in frames) { - var s = ff.code.ToString().PadLeft(3, '0'); - var sss = decodeSymbol(ff.code); - ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff)); - miniList.Items.Add(s, s + ' ' + sss, s); - } - nudX.ValueChanged -= nudX_ValueChanged; - nudY.ValueChanged -= nudY_ValueChanged; - nudX.Value = frames.First().width; - nudY.Value = frames.First().height; - dotResize((int)nudX.Value, (int)nudY.Value); - nudX.ValueChanged += nudX_ValueChanged; - nudY.ValueChanged += nudY_ValueChanged; - f = copyFrame(frames.First()); - dotPanel.Refresh(); - miniList.Refresh(); - modified = false; - prjModified = false; - - prjFileName = filename; - prjName = Path.GetFileNameWithoutExtension(filename); - this.Text = "McBitFont " + version + " - " + prjName; - checkForAdd(); - fbuffer = false; - } - } - 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/Form1.resx b/McBitFont/Form1.resx index 398ee74..3b3c54d 100644 --- a/McBitFont/Form1.resx +++ b/McBitFont/Form1.resx @@ -1,17 +1,17 @@  - @@ -132,9 +132,6 @@ 336, 17 - - 436, 17 - diff --git a/McBitFont/McBitFont.csproj b/McBitFont/McBitFont.csproj index 8d5ff44..9ea1967 100644 --- a/McBitFont/McBitFont.csproj +++ b/McBitFont/McBitFont.csproj @@ -1,17 +1,7 @@ - - - + - Debug - AnyCPU - {7C01529E-4414-405F-9B57-19FA4AF8ED60} + net9.0-windows WinExe - McBitFont - McBitFont - v4.7.2 - 512 - true - true publish\ true Disk @@ -27,204 +17,22 @@ false false true - - - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - + true + true icon_64.ico - - - ..\packages\MessagePack.3.1.3\lib\net472\MessagePack.dll - - - ..\packages\MessagePack.Annotations.3.1.3\lib\netstandard2.0\MessagePack.Annotations.dll - - - ..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll - - - ..\packages\Microsoft.NET.StringTools.17.11.4\lib\net472\Microsoft.NET.StringTools.dll - - - - ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll - - - ..\packages\System.Collections.Immutable.8.0.0\lib\net462\System.Collections.Immutable.dll - - - - ..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll - - - - ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll - - - ..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll - - - ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll - - - - - - - - - - - - - - Form - - - About.cs - - - Form - - - Export.cs - - - Form - - - Form1.cs - - - Form - - - New.cs - - - - - About.cs - - - Export.cs - - - Form1.cs - - - New.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + @@ -238,12 +46,4 @@ false - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - \ No newline at end of file diff --git a/McBitFont/Properties/AssemblyInfo.cs b/McBitFont/Properties/AssemblyInfo.cs deleted file mode 100644 index cb38638..0000000 --- a/McBitFont/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// Общие сведения об этой сборке предоставляются следующим набором -// набора атрибутов. Измените значения этих атрибутов для изменения сведений, -// связанных со сборкой. -[assembly: AssemblyTitle("McBitFont")] -[assembly: AssemblyDescription("McFLY's Bit Font and Image Editor")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("McBitFont")] -[assembly: AssemblyCopyright("© Anton Mukhin, 2023")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми -// для компонентов COM. Если необходимо обратиться к типу в этой сборке через -// COM, следует установить атрибут ComVisible в TRUE для этого типа. -[assembly: ComVisible(false)] - -// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM -[assembly: Guid("7c01529e-4414-405f-9b57-19fa4af8ed60")] - -// Сведения о версии сборки состоят из указанных ниже четырех значений: -// -// Основной номер версии -// Дополнительный номер версии -// Номер сборки -// Редакция -// -// Можно задать все значения или принять номера сборки и редакции по умолчанию -// используя "*", как показано ниже: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.7.0.0")] -[assembly: AssemblyFileVersion("1.7.0.0")] diff --git a/McBitFont/packages.config b/McBitFont/packages.config deleted file mode 100644 index bb9683a..0000000 --- a/McBitFont/packages.config +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file From bbfccc2308a79aceee5a54a5af16df26c9e5a9a3 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Tue, 20 May 2025 14:05:18 +0300 Subject: [PATCH 02/29] Example files: saved in new format. Moved old format ones to a sub-folder --- examples/CP437_Cyr_8x16.mbfont | Bin 0 -> 31053 bytes examples/Font_5x7.mbfont | Bin 0 -> 11661 bytes examples/Numbers_11x16.mbfont | Bin 0 -> 1871 bytes examples/Numbers_13x20.mbfont | Bin 0 -> 2711 bytes examples/gyver_icons_7x7.mbfont | Bin 0 -> 9185 bytes examples/gyver_icons_8x8.mbfont | Bin 0 -> 11510 bytes examples/haxrcorp_4089_cyrillic_altgr.mbfont | Bin 0 -> 10421 bytes examples/helvB08_PREFAB.mbfont | Bin 0 -> 37325 bytes examples/helvB08_t_cyrillic.mbfont | Bin 0 -> 18558 bytes examples/icons_9x9.mbfont | Bin 0 -> 6838 bytes examples/{ => old_format}/CP437_Cyr_8x16.mbf | Bin examples/{ => old_format}/Font_5x7.mbf | Bin examples/{ => old_format}/Numbers_11x16.mbf | Bin examples/{ => old_format}/Numbers_13x20.mbf | Bin examples/{ => old_format}/gyver_icons_7x7.mbf | Bin examples/{ => old_format}/gyver_icons_8x8.mbf | Bin .../haxrcorp_4089_cyrillic_altgr.mbf | Bin examples/{ => old_format}/helvB08_PREFAB.mbf | Bin .../{ => old_format}/helvB08_t_cyrillic.mbf | Bin examples/{ => old_format}/icons_9x9.mbf | Bin 20 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/CP437_Cyr_8x16.mbfont create mode 100644 examples/Font_5x7.mbfont create mode 100644 examples/Numbers_11x16.mbfont create mode 100644 examples/Numbers_13x20.mbfont create mode 100644 examples/gyver_icons_7x7.mbfont create mode 100644 examples/gyver_icons_8x8.mbfont create mode 100644 examples/haxrcorp_4089_cyrillic_altgr.mbfont create mode 100644 examples/helvB08_PREFAB.mbfont create mode 100644 examples/helvB08_t_cyrillic.mbfont create mode 100644 examples/icons_9x9.mbfont rename examples/{ => old_format}/CP437_Cyr_8x16.mbf (100%) rename examples/{ => old_format}/Font_5x7.mbf (100%) rename examples/{ => old_format}/Numbers_11x16.mbf (100%) rename examples/{ => old_format}/Numbers_13x20.mbf (100%) rename examples/{ => old_format}/gyver_icons_7x7.mbf (100%) rename examples/{ => old_format}/gyver_icons_8x8.mbf (100%) rename examples/{ => old_format}/haxrcorp_4089_cyrillic_altgr.mbf (100%) rename examples/{ => old_format}/helvB08_PREFAB.mbf (100%) rename examples/{ => old_format}/helvB08_t_cyrillic.mbf (100%) rename examples/{ => old_format}/icons_9x9.mbf (100%) diff --git a/examples/CP437_Cyr_8x16.mbfont b/examples/CP437_Cyr_8x16.mbfont new file mode 100644 index 0000000000000000000000000000000000000000..c63f85c38aacfdb51803600918a5710d3cdc72db GIT binary patch literal 31053 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 literal 0 HcmV?d00001 diff --git a/examples/Font_5x7.mbfont b/examples/Font_5x7.mbfont new file mode 100644 index 0000000000000000000000000000000000000000..e2b67a62a58ec6be91ea8fcd9c9d808eb0af2c93 GIT binary patch literal 11661 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 JD@V}y_yYhWUgrP+ literal 0 HcmV?d00001 diff --git a/examples/Numbers_13x20.mbfont b/examples/Numbers_13x20.mbfont new file mode 100644 index 0000000000000000000000000000000000000000..cdff571e166f80855e2d831f4c03b10a834da80d GIT binary patch literal 2711 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 literal 0 HcmV?d00001 diff --git a/examples/helvB08_PREFAB.mbfont b/examples/helvB08_PREFAB.mbfont new file mode 100644 index 0000000000000000000000000000000000000000..d6fb4ddaafce429f94f275ef20cea6bd21ebc976 GIT binary patch literal 37325 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 G#`PCZaqhAJ literal 0 HcmV?d00001 diff --git a/examples/helvB08_t_cyrillic.mbfont b/examples/helvB08_t_cyrillic.mbfont new file mode 100644 index 0000000000000000000000000000000000000000..2205da11ec889d9dd52be83d1f05fe1cf7d2b093 GIT binary patch literal 18558 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 literal 0 HcmV?d00001 diff --git a/examples/icons_9x9.mbfont b/examples/icons_9x9.mbfont new file mode 100644 index 0000000000000000000000000000000000000000..71b51afd8fe7e74ea281d68c24223bc0eae03980 GIT binary patch literal 6838 zcmb`GN0uW;3`BdOP2WP^d+)s;xsmtYUq@KzIC|t-H<+C+B18lNnMD>koY#|0W}<+= zM`U&P-~Z&={(HlJXIIWH#f|6Zf1RISIlH{=wb9ycH}#`qvrz^+GFXhW5rI}ywsDiu zS>;MSMY#*W07-q6?Z;VzS@|hW+}vp7426W>1}=lS4$thvHbrsEK)2o#O1HRdiipyY zij_dN<5r`6k2UQM&(}+?r>DZE5#bxR8O?X(GHb0?fSeGVbTwUTU)Du9_2f8Z8XS1(ClPd z!vI^pkh@MoizOiXcmV=1lmTe)?cz4>HX0=^Salb~Y8`>=lP3F|El3`5&xB?fD0RUA zlyowJeB8-E(_L%;Dej%nZs%EQ@G*ej{eVPh(8CD|G9ULX(4_#jqy?=fXY=gOP_PQa zRLA{|b_!fB4?qDqd_c^tGp(TlZ7f0*4>X!R*tj$q;eO=I@iQKr(3oi$B0n`^4jA(~ zrK~&2dFJAwMkB`sdM>natAQtH3KI`ETD)PrY{@(x*1vSXA{#QQGai}HIZph+$%J}Q zVR;$oW{auNK@^V~UDq&vOm7l%aNF{77a653~>aInzu#TBY3Q2xt2zJq3g zrg~$*o0lQpKSBIxgQgnr$e zBO^^bbp#Dt_#q1}>v=tc$+Mw&+GthgDt$mrJbj71%&-wgwVD&poQ77vh7}(vgf8u& zpWR1GjK=a&?R*bN`Gp|BTgK5%9mI13O&#AS?9dT=+GPbg2xAB?g6h(|{JVa>(Il%* z5ykFU%b>;qI2e>U-638u8V2(RM{(8yYEqRFZL>II0su+ZFE)A>kvhHyS|Y z;7a2wpcq?aWuH53EX2);H%>sW_bv*`zjx2?Ue-N+5b%G8*^Z`LKHs1ib3*u6U=>Oyxk_34Zv)XNF88 zCmn(+_Mt9w;$5S`#E;L6L|FtDNsCfvYGwko;yt5_LoZcaL63e$uu?%rT-B8SGVh;+ zR#Rh&0>iZs?4m!|LtEW_Ca@g{DxCFmw>gN*1Kk!HI=AgtojGvEhXd_#^EuiSVfPo& zsLx%D8Ll2W^+Gah6UKl-(ndA8B;^=-&zO?>k;^*s!9)E=# z7QakrUq{pV!c*jTna{&t#jHUiECm+DuQQszfch<{8Mi!3D64?U) literal 0 HcmV?d00001 diff --git a/examples/CP437_Cyr_8x16.mbf b/examples/old_format/CP437_Cyr_8x16.mbf similarity index 100% rename from examples/CP437_Cyr_8x16.mbf rename to examples/old_format/CP437_Cyr_8x16.mbf diff --git a/examples/Font_5x7.mbf b/examples/old_format/Font_5x7.mbf similarity index 100% rename from examples/Font_5x7.mbf rename to examples/old_format/Font_5x7.mbf diff --git a/examples/Numbers_11x16.mbf b/examples/old_format/Numbers_11x16.mbf similarity index 100% rename from examples/Numbers_11x16.mbf rename to examples/old_format/Numbers_11x16.mbf diff --git a/examples/Numbers_13x20.mbf b/examples/old_format/Numbers_13x20.mbf similarity index 100% rename from examples/Numbers_13x20.mbf rename to examples/old_format/Numbers_13x20.mbf diff --git a/examples/gyver_icons_7x7.mbf b/examples/old_format/gyver_icons_7x7.mbf similarity index 100% rename from examples/gyver_icons_7x7.mbf rename to examples/old_format/gyver_icons_7x7.mbf diff --git a/examples/gyver_icons_8x8.mbf b/examples/old_format/gyver_icons_8x8.mbf similarity index 100% rename from examples/gyver_icons_8x8.mbf rename to examples/old_format/gyver_icons_8x8.mbf diff --git a/examples/haxrcorp_4089_cyrillic_altgr.mbf b/examples/old_format/haxrcorp_4089_cyrillic_altgr.mbf similarity index 100% rename from examples/haxrcorp_4089_cyrillic_altgr.mbf rename to examples/old_format/haxrcorp_4089_cyrillic_altgr.mbf diff --git a/examples/helvB08_PREFAB.mbf b/examples/old_format/helvB08_PREFAB.mbf similarity index 100% rename from examples/helvB08_PREFAB.mbf rename to examples/old_format/helvB08_PREFAB.mbf diff --git a/examples/helvB08_t_cyrillic.mbf b/examples/old_format/helvB08_t_cyrillic.mbf similarity index 100% rename from examples/helvB08_t_cyrillic.mbf rename to examples/old_format/helvB08_t_cyrillic.mbf diff --git a/examples/icons_9x9.mbf b/examples/old_format/icons_9x9.mbf similarity index 100% rename from examples/icons_9x9.mbf rename to examples/old_format/icons_9x9.mbf From ca42d3819faf4c1f5658fa45c3a9219a002ebe43 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Tue, 20 May 2025 14:05:42 +0300 Subject: [PATCH 03/29] TODO feature: Delete symbols before/after selected --- McBitFont/Form1.Designer.cs | 36 ++++++++++++--- McBitFont/Form1.cs | 89 +++++++++++++++++++++++++++---------- McBitFont/McBitFont.csproj | 2 + TODO.txt | 3 +- 4 files changed, 99 insertions(+), 31 deletions(-) diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 3fc093c..5ff321b 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -62,6 +62,8 @@ prependSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); appendSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); removeSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + removeBeforeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + removeAfterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); applyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ClearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -461,7 +463,7 @@ // // editToolStripMenuItem // - editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { copyToolStripMenuItem, pasteToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, applyToolStripMenuItem }); + editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { copyToolStripMenuItem, pasteToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, applyToolStripMenuItem }); editToolStripMenuItem.Name = "editToolStripMenuItem"; editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); editToolStripMenuItem.Text = "Edit"; @@ -473,7 +475,7 @@ copyToolStripMenuItem.Name = "copyToolStripMenuItem"; copyToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+C"; copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C; - copyToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + copyToolStripMenuItem.Size = new System.Drawing.Size(215, 22); copyToolStripMenuItem.Text = "Copy"; copyToolStripMenuItem.Click += copyToolStripMenuItem_Click; // @@ -484,7 +486,7 @@ pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; pasteToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+V"; pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V; - pasteToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + pasteToolStripMenuItem.Size = new System.Drawing.Size(215, 22); pasteToolStripMenuItem.Text = "Paste"; pasteToolStripMenuItem.Click += pasteToolStripMenuItem_Click; // @@ -495,7 +497,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(212, 22); + prependSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); prependSymbolToolStripMenuItem.Text = "Prepend symbol"; prependSymbolToolStripMenuItem.Click += prependSymbolToolStripMenuItem_Click; // @@ -506,7 +508,7 @@ appendSymbolToolStripMenuItem.Name = "appendSymbolToolStripMenuItem"; appendSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+End"; appendSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.End; - appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); appendSymbolToolStripMenuItem.Text = "Append symbol"; appendSymbolToolStripMenuItem.Click += prependSymbolToolStripMenuItem_Click; // @@ -517,17 +519,35 @@ removeSymbolToolStripMenuItem.Name = "removeSymbolToolStripMenuItem"; removeSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Del"; removeSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Delete; - removeSymbolToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + removeSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); removeSymbolToolStripMenuItem.Text = "Remove symbol"; removeSymbolToolStripMenuItem.Click += removeSymbolToolStripMenuItem_Click; // + // removeBeforeToolStripMenuItem + // + removeBeforeToolStripMenuItem.Enabled = false; + removeBeforeToolStripMenuItem.Image = Properties.Resources.action_remove; + removeBeforeToolStripMenuItem.Name = "removeBeforeToolStripMenuItem"; + removeBeforeToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + removeBeforeToolStripMenuItem.Text = "Remove all before selected"; + removeBeforeToolStripMenuItem.Click += removeBeforeToolStripMenuItem_Click; + // + // removeAfterToolStripMenuItem + // + removeAfterToolStripMenuItem.Enabled = false; + removeAfterToolStripMenuItem.Image = Properties.Resources.action_remove; + removeAfterToolStripMenuItem.Name = "removeAfterToolStripMenuItem"; + removeAfterToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + removeAfterToolStripMenuItem.Text = "Remove all after selected"; + removeAfterToolStripMenuItem.Click += removeAfterToolStripMenuItem_Click; + // // applyToolStripMenuItem // applyToolStripMenuItem.Image = Properties.Resources.action_check; applyToolStripMenuItem.Name = "applyToolStripMenuItem"; applyToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Space"; applyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Space; - applyToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + applyToolStripMenuItem.Size = new System.Drawing.Size(215, 22); applyToolStripMenuItem.Text = "Apply"; applyToolStripMenuItem.Click += button2_Click; // @@ -786,6 +806,8 @@ private System.Windows.Forms.ToolStripMenuItem ClearToolStripMenuItem; private System.Windows.Forms.CheckBox chkLeftSide; private System.Windows.Forms.CheckBox chkTopSide; + private System.Windows.Forms.ToolStripMenuItem removeBeforeToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem removeAfterToolStripMenuItem; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 4ce9f1a..51e5c21 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -56,7 +56,7 @@ namespace McBitFont { public bool monospaced = false; bool modified = false; bool prjModified = false; - public const string version = "1.7"; + public const string version = "2.0"; public string prjName = "Untitled"; public string prjFileName = ""; public int codepage = 1251; @@ -72,7 +72,7 @@ namespace McBitFont { private void Form1_Load(object sender, EventArgs e) { lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; - dotWidth = (int)nudX.Value; + dotWidth = (int)nudX.Value; dotHeight = (int)nudY.Value; gap = (cellSize < 5) ? 0 : 1; @@ -106,12 +106,12 @@ namespace McBitFont { [DllImport("user32.dll")] public static extern int SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); - + public int MakeLong(short lowPart, short highPart) { return (int)(((ushort)lowPart) | (uint)(highPart << 16)); } - FrameMiniature copyFrame(FrameMiniature frame) { + FrameMiniature copyFrame(FrameMiniature frame) { var ff = new FrameMiniature(frame.code, frame.width, frame.height); Array.Copy(frame.data, ff.data, frame.data.Length); return ff; @@ -199,9 +199,9 @@ namespace McBitFont { ff.width = neww; ff.height = newh; t = new bool[neww, newh]; - for (int i=0; i= 0 && j+dj >= 0) t[i, j] = ff.data[i + di, j + dj]; + for (int i = 0; i < imax; i++) { + for (int j = 0; j < jmax; j++) { + if (i + di >= 0 && j + dj >= 0) t[i, j] = ff.data[i + di, j + dj]; } } ff.data = t; @@ -232,7 +232,7 @@ namespace McBitFont { hScroll.Minimum = 0; hScroll.Enabled = true; } - + if (h <= dotPanel.Height) { vScroll.Enabled = false; vScroll.Value = 0; @@ -347,7 +347,7 @@ namespace McBitFont { bool c; for (int i = 0; i < dotWidth; i++) { c = f.data[i, dotHeight - 1]; - for (int j = dotHeight-1; j >= 0; j--) { + for (int j = dotHeight - 1; j >= 0; j--) { if (j == 0) { f.data[i, j] = c; } else { @@ -448,7 +448,7 @@ namespace McBitFont { for (int i = 0; i < m.width; i++) { for (int j = 0; j < m.height; j++) { c = m.data[i, j] ? Color.Black : Color.White; - bmp.SetPixel(i+imin, j+jmin, c); + bmp.SetPixel(i + imin, j + jmin, c); } } var sizedBMP = new Bitmap(bmp, new Size(50, 50)); @@ -464,19 +464,19 @@ namespace McBitFont { Pen p = new Pen(Color.FromArgb(64, Color.Green)); int x, y; - for (int i=0; i 0 && i != 0 && (i % 8) == 0) { g.DrawLine(p, x - 1, pixelOffset - vScroll.Value, x - 1, h); } - for (int j=0; j 0 && i == 0 && j != 0 && (j % 8) == 0) { - g.DrawLine(p, pixelOffset - hScroll.Value, y-1, w, y-1); + g.DrawLine(p, pixelOffset - hScroll.Value, y - 1, w, y - 1); } if (f.data[i, j]) sb = sbb; else sb = sbw; - g.FillRectangle(sb, x, (baseline == j ? y+1 : y), cellSize, (baseline == j ? cellSize-1 : cellSize)); + g.FillRectangle(sb, x, (baseline == j ? y + 1 : y), cellSize, (baseline == j ? cellSize - 1 : cellSize)); } } @@ -545,7 +545,7 @@ namespace McBitFont { nudY.Value = newh; FrameMiniature newf; if (form.cbSingle.Checked) { - frames.Add( new FrameMiniature(0, neww, newh)); + frames.Add(new FrameMiniature(0, neww, newh)); //f = frames.Find(x => x.code == 0); append = "Single"; monospaced = false; @@ -557,20 +557,20 @@ namespace McBitFont { } else { if (form.cbNotPrintable.Checked) imin = 0; else if (form.cbLatin.Checked) imin = 32; - else imin = 128; + else imin = 128; if (form.cbExtended.Checked) imax = 255; else if (form.cbLatin.Checked) imax = 127; else imax = 31; } - + for (i = imin; i <= imax; 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; } lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; @@ -579,7 +579,7 @@ namespace McBitFont { var s = ff.code.ToString().PadLeft(3, '0'); ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff)); var sss = decodeSymbol(ff.code); - miniList.Items.Add(s, s+' '+append+sss, s); + miniList.Items.Add(s, s + ' ' + append + sss, s); } f = copyFrame(frames.First()); dotPanel.Refresh(); @@ -603,6 +603,8 @@ namespace McBitFont { checkModifiedFrame(); if (miniList.SelectedItems.Count == 0) { removeSymbolToolStripMenuItem.Enabled = false; + removeBeforeToolStripMenuItem.Enabled = false; + removeAfterToolStripMenuItem.Enabled = false; copyToolStripMenuItem.Enabled = false; pasteToolStripMenuItem.Enabled = false; return; @@ -622,6 +624,17 @@ namespace McBitFont { removeSymbolToolStripMenuItem.Enabled = false; } copyToolStripMenuItem.Enabled = true; + if (ff.Equals(frames.First())) { + removeBeforeToolStripMenuItem.Enabled = false; + removeAfterToolStripMenuItem.Enabled = true; + } else if (ff.Equals(frames.Last())) { + removeBeforeToolStripMenuItem.Enabled = true; + removeAfterToolStripMenuItem.Enabled = false; + } else { + removeBeforeToolStripMenuItem.Enabled = true; + removeAfterToolStripMenuItem.Enabled = true; + } + if (fbuffer) pasteToolStripMenuItem.Enabled = true; else pasteToolStripMenuItem.Enabled = false; } @@ -724,7 +737,7 @@ namespace McBitFont { ff = new FrameMiniature(frames.Last().code + 1, dotWidth, dotHeight); frames.Add(ff); } - + var s = ff.code.ToString().PadLeft(3, '0'); ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff)); var sss = decodeSymbol(ff.code); @@ -755,11 +768,11 @@ namespace McBitFont { Array.Copy(fbuf.data, f.data, fbuf.data.Length); } else { var wmax = (fbuf.width > f.width) ? f.width : fbuf.width; - var hmax = (fbuf.height > f.height) ? f.height : fbuf.height; + var hmax = (fbuf.height > f.height) ? f.height : fbuf.height; for (int i = 0; i < wmax; i++) { for (int j = 0; j < hmax; j++) { - f.data[i,j] = fbuf.data[i,j]; + f.data[i, j] = fbuf.data[i, j]; } } } @@ -794,7 +807,7 @@ namespace McBitFont { checkModifiedFrame(); saveProject(prjFileName); } - + } private void btnClear_Click(object sender, EventArgs e) { @@ -817,5 +830,35 @@ namespace McBitFont { dotPanel.Refresh(); } + // Remove all before or after specified symbol + private void removeBA(bool before) { + if (miniList.SelectedItems.Count == 0) { + removeBeforeToolStripMenuItem.Enabled = false; + removeAfterToolStripMenuItem.Enabled = false; + return; + } + int step = before ? -1 : 1; + var sel = miniList.SelectedItems[0].ImageKey; + int code = Convert.ToInt32(sel); + int findex; + + while (miniList.Items.ContainsKey((code + step).ToString().PadLeft(3, '0'))) { + code += step; + findex = frames.FindIndex(x => x.code == code); + frames.RemoveAt(findex); + miniList.Items.RemoveByKey(code.ToString().PadLeft(3, '0')); + } + //dotPanel.Refresh(); + miniList.Refresh(); + prjModified = true; + } + + private void removeBeforeToolStripMenuItem_Click(object sender, EventArgs e) { + removeBA(true); + } + + private void removeAfterToolStripMenuItem_Click(object sender, EventArgs e) { + removeBA(false); + } } } diff --git a/McBitFont/McBitFont.csproj b/McBitFont/McBitFont.csproj index 9ea1967..be1b34e 100644 --- a/McBitFont/McBitFont.csproj +++ b/McBitFont/McBitFont.csproj @@ -20,6 +20,8 @@ true true icon_64.ico + 2.0.0.0 + 2.0.0.0 diff --git a/TODO.txt b/TODO.txt index 9044326..b52b3f5 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,8 +1,9 @@ Application: +V Migrate from .Net Framework 4.7 to .NET 9 Functionality: - Context menu in symbol navigator -- Delete symbols before/after selected +V Delete symbols before/after selected - Shift all symbols on code line (change symbol codes) - Specify starting code (extends the shift) - Ability to make monospaced font a variable width one From 5e55c0a5ea2813a4d234945ce655d42b2f69d947 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Tue, 20 May 2025 17:08:42 +0300 Subject: [PATCH 04/29] WIP: Packed fonts... --- McBitFont/Export.Designer.cs | 525 ++++++++++++++++--------------- McBitFont/Export.cs | 57 +++- McBitFont/Export.resx | 57 ++-- examples/tests/single_3x5.mbfont | Bin 0 -> 34 bytes examples/tests/single_5x9.mbfont | Bin 0 -> 66 bytes 5 files changed, 333 insertions(+), 306 deletions(-) create mode 100644 examples/tests/single_3x5.mbfont create mode 100644 examples/tests/single_5x9.mbfont diff --git a/McBitFont/Export.Designer.cs b/McBitFont/Export.Designer.cs index 6853331..d258383 100644 --- a/McBitFont/Export.Designer.cs +++ b/McBitFont/Export.Designer.cs @@ -23,331 +23,337 @@ /// the contents of this method with the code editor. /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - this.txtOutput = new System.Windows.Forms.RichTextBox(); - this.gbScan = new System.Windows.Forms.GroupBox(); - this.cbVDir = new System.Windows.Forms.ComboBox(); - this.cbHDir = new System.Windows.Forms.ComboBox(); - this.cbOrder = new System.Windows.Forms.ComboBox(); - this.gbOptions = new System.Windows.Forms.GroupBox(); - this.cbZeroes = new System.Windows.Forms.CheckBox(); - this.cbHeader = new System.Windows.Forms.CheckBox(); - this.cbComments = new System.Windows.Forms.CheckBox(); - this.gbNumbers = new System.Windows.Forms.GroupBox(); - this.cbBitOrder = new System.Windows.Forms.ComboBox(); - this.cbNumSize = new System.Windows.Forms.ComboBox(); - this.cbNumBase = new System.Windows.Forms.ComboBox(); - this.gbText = new System.Windows.Forms.GroupBox(); - this.lblXLines = new System.Windows.Forms.Label(); - this.nudXLines = new System.Windows.Forms.NumericUpDown(); - this.cbLines = new System.Windows.Forms.ComboBox(); - this.cbFormat = new System.Windows.Forms.ComboBox(); - this.btnGenerate = new System.Windows.Forms.Button(); - this.btnClose = new System.Windows.Forms.Button(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.gbScan.SuspendLayout(); - this.gbOptions.SuspendLayout(); - this.gbNumbers.SuspendLayout(); - this.gbText.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudXLines)).BeginInit(); - this.SuspendLayout(); + components = new System.ComponentModel.Container(); + txtOutput = new System.Windows.Forms.RichTextBox(); + gbScan = new System.Windows.Forms.GroupBox(); + cbVDir = new System.Windows.Forms.ComboBox(); + cbHDir = new System.Windows.Forms.ComboBox(); + cbOrder = new System.Windows.Forms.ComboBox(); + gbOptions = new System.Windows.Forms.GroupBox(); + cbPacked = new System.Windows.Forms.CheckBox(); + cbZeroes = new System.Windows.Forms.CheckBox(); + cbHeader = new System.Windows.Forms.CheckBox(); + cbComments = new System.Windows.Forms.CheckBox(); + gbNumbers = new System.Windows.Forms.GroupBox(); + cbBitOrder = new System.Windows.Forms.ComboBox(); + cbNumSize = new System.Windows.Forms.ComboBox(); + cbNumBase = new System.Windows.Forms.ComboBox(); + gbText = new System.Windows.Forms.GroupBox(); + lblXLines = new System.Windows.Forms.Label(); + nudXLines = new System.Windows.Forms.NumericUpDown(); + cbLines = new System.Windows.Forms.ComboBox(); + cbFormat = new System.Windows.Forms.ComboBox(); + btnGenerate = new System.Windows.Forms.Button(); + btnClose = new System.Windows.Forms.Button(); + toolTip1 = new System.Windows.Forms.ToolTip(components); + gbScan.SuspendLayout(); + gbOptions.SuspendLayout(); + gbNumbers.SuspendLayout(); + gbText.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)nudXLines).BeginInit(); + SuspendLayout(); // // txtOutput // - this.txtOutput.AcceptsTab = true; - this.txtOutput.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.txtOutput.AutoWordSelection = true; - this.txtOutput.DetectUrls = false; - this.txtOutput.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.txtOutput.HideSelection = false; - this.txtOutput.Location = new System.Drawing.Point(151, 12); - this.txtOutput.Name = "txtOutput"; - this.txtOutput.Size = new System.Drawing.Size(529, 507); - this.txtOutput.TabIndex = 0; - this.txtOutput.Text = ""; - this.txtOutput.WordWrap = false; + txtOutput.AcceptsTab = true; + txtOutput.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + txtOutput.AutoWordSelection = true; + txtOutput.DetectUrls = false; + txtOutput.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 204); + txtOutput.HideSelection = false; + txtOutput.Location = new System.Drawing.Point(176, 14); + txtOutput.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + txtOutput.Name = "txtOutput"; + txtOutput.Size = new System.Drawing.Size(616, 584); + txtOutput.TabIndex = 0; + txtOutput.Text = ""; + txtOutput.WordWrap = false; // // gbScan // - this.gbScan.Controls.Add(this.cbVDir); - this.gbScan.Controls.Add(this.cbHDir); - this.gbScan.Controls.Add(this.cbOrder); - this.gbScan.Location = new System.Drawing.Point(5, 12); - this.gbScan.Name = "gbScan"; - this.gbScan.Size = new System.Drawing.Size(140, 105); - this.gbScan.TabIndex = 1; - this.gbScan.TabStop = false; - this.gbScan.Text = "Scan"; + gbScan.Controls.Add(cbVDir); + gbScan.Controls.Add(cbHDir); + gbScan.Controls.Add(cbOrder); + gbScan.Location = new System.Drawing.Point(6, 14); + gbScan.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + gbScan.Name = "gbScan"; + gbScan.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + gbScan.Size = new System.Drawing.Size(163, 121); + gbScan.TabIndex = 1; + gbScan.TabStop = false; + gbScan.Text = "Scan"; // // cbVDir // - this.cbVDir.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbVDir.FormattingEnabled = true; - this.cbVDir.Items.AddRange(new object[] { - "Top to Bottom", - "Bottom to Top"}); - this.cbVDir.Location = new System.Drawing.Point(10, 73); - this.cbVDir.Name = "cbVDir"; - this.cbVDir.Size = new System.Drawing.Size(121, 21); - this.cbVDir.TabIndex = 2; + cbVDir.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbVDir.FormattingEnabled = true; + cbVDir.Items.AddRange(new object[] { "Top to Bottom", "Bottom to Top" }); + cbVDir.Location = new System.Drawing.Point(12, 84); + cbVDir.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbVDir.Name = "cbVDir"; + cbVDir.Size = new System.Drawing.Size(140, 23); + cbVDir.TabIndex = 2; // // cbHDir // - this.cbHDir.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbHDir.FormattingEnabled = true; - this.cbHDir.Items.AddRange(new object[] { - "Left to Right", - "Right to Left"}); - this.cbHDir.Location = new System.Drawing.Point(10, 46); - this.cbHDir.Name = "cbHDir"; - this.cbHDir.Size = new System.Drawing.Size(121, 21); - this.cbHDir.TabIndex = 1; + cbHDir.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbHDir.FormattingEnabled = true; + cbHDir.Items.AddRange(new object[] { "Left to Right", "Right to Left" }); + cbHDir.Location = new System.Drawing.Point(12, 53); + cbHDir.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbHDir.Name = "cbHDir"; + cbHDir.Size = new System.Drawing.Size(140, 23); + cbHDir.TabIndex = 1; // // cbOrder // - this.cbOrder.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbOrder.FormattingEnabled = true; - this.cbOrder.Items.AddRange(new object[] { - "Columns", - "Rows"}); - this.cbOrder.Location = new System.Drawing.Point(10, 19); - this.cbOrder.Name = "cbOrder"; - this.cbOrder.Size = new System.Drawing.Size(121, 21); - this.cbOrder.TabIndex = 0; - this.cbOrder.SelectedIndexChanged += new System.EventHandler(this.cbOrder_SelectedIndexChanged); + cbOrder.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbOrder.FormattingEnabled = true; + cbOrder.Items.AddRange(new object[] { "Columns", "Rows" }); + cbOrder.Location = new System.Drawing.Point(12, 22); + cbOrder.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbOrder.Name = "cbOrder"; + cbOrder.Size = new System.Drawing.Size(140, 23); + cbOrder.TabIndex = 0; + cbOrder.SelectedIndexChanged += cbOrder_SelectedIndexChanged; // // gbOptions // - this.gbOptions.Controls.Add(this.cbZeroes); - this.gbOptions.Controls.Add(this.cbHeader); - this.gbOptions.Controls.Add(this.cbComments); - this.gbOptions.Location = new System.Drawing.Point(5, 345); - this.gbOptions.Name = "gbOptions"; - this.gbOptions.Size = new System.Drawing.Size(140, 88); - this.gbOptions.TabIndex = 3; - this.gbOptions.TabStop = false; - this.gbOptions.Text = "Options"; + gbOptions.Controls.Add(cbPacked); + gbOptions.Controls.Add(cbZeroes); + gbOptions.Controls.Add(cbHeader); + gbOptions.Controls.Add(cbComments); + gbOptions.Location = new System.Drawing.Point(6, 398); + gbOptions.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + gbOptions.Name = "gbOptions"; + gbOptions.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + gbOptions.Size = new System.Drawing.Size(163, 116); + gbOptions.TabIndex = 3; + gbOptions.TabStop = false; + gbOptions.Text = "Options"; + // + // cbPacked + // + cbPacked.AutoSize = true; + cbPacked.Location = new System.Drawing.Point(7, 90); + cbPacked.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbPacked.Name = "cbPacked"; + cbPacked.Size = new System.Drawing.Size(89, 19); + cbPacked.TabIndex = 3; + cbPacked.Text = "Packed font"; + toolTip1.SetToolTip(cbPacked, "Pack symbols utilizing all bits within a symbol"); + cbPacked.UseVisualStyleBackColor = true; + cbPacked.CheckedChanged += cbPacked_CheckedChanged; // // cbZeroes // - this.cbZeroes.AutoSize = true; - this.cbZeroes.Checked = true; - this.cbZeroes.CheckState = System.Windows.Forms.CheckState.Checked; - this.cbZeroes.Location = new System.Drawing.Point(6, 65); - this.cbZeroes.Name = "cbZeroes"; - this.cbZeroes.Size = new System.Drawing.Size(98, 17); - this.cbZeroes.TabIndex = 2; - this.cbZeroes.Text = "Leading zeroes"; - this.toolTip1.SetToolTip(this.cbZeroes, "Add leading zeroes: 0x01 / 0x1"); - this.cbZeroes.UseVisualStyleBackColor = true; + cbZeroes.AutoSize = true; + cbZeroes.Checked = true; + cbZeroes.CheckState = System.Windows.Forms.CheckState.Checked; + cbZeroes.Location = new System.Drawing.Point(7, 66); + cbZeroes.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbZeroes.Name = "cbZeroes"; + cbZeroes.Size = new System.Drawing.Size(104, 19); + cbZeroes.TabIndex = 2; + cbZeroes.Text = "Leading zeroes"; + toolTip1.SetToolTip(cbZeroes, "Add leading zeroes: 0x01 / 0x1"); + cbZeroes.UseVisualStyleBackColor = true; // // cbHeader // - this.cbHeader.AutoSize = true; - this.cbHeader.Checked = true; - this.cbHeader.CheckState = System.Windows.Forms.CheckState.Checked; - this.cbHeader.Location = new System.Drawing.Point(6, 19); - this.cbHeader.Name = "cbHeader"; - this.cbHeader.Size = new System.Drawing.Size(86, 17); - this.cbHeader.TabIndex = 1; - this.cbHeader.Text = "Meta header"; - this.toolTip1.SetToolTip(this.cbHeader, "Add meta header with meta data"); - this.cbHeader.UseVisualStyleBackColor = true; - this.cbHeader.CheckedChanged += new System.EventHandler(this.cbFormat_SelectedIndexChanged); + cbHeader.AutoSize = true; + cbHeader.Checked = true; + cbHeader.CheckState = System.Windows.Forms.CheckState.Checked; + cbHeader.Location = new System.Drawing.Point(7, 18); + cbHeader.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbHeader.Name = "cbHeader"; + cbHeader.Size = new System.Drawing.Size(92, 19); + cbHeader.TabIndex = 1; + cbHeader.Text = "Meta header"; + toolTip1.SetToolTip(cbHeader, "Add meta header with meta data"); + cbHeader.UseVisualStyleBackColor = true; + cbHeader.CheckedChanged += cbFormat_SelectedIndexChanged; // // cbComments // - this.cbComments.AutoSize = true; - this.cbComments.Checked = true; - this.cbComments.CheckState = System.Windows.Forms.CheckState.Checked; - this.cbComments.Location = new System.Drawing.Point(6, 42); - this.cbComments.Name = "cbComments"; - this.cbComments.Size = new System.Drawing.Size(75, 17); - this.cbComments.TabIndex = 0; - this.cbComments.Text = "Comments"; - this.toolTip1.SetToolTip(this.cbComments, "Add descriptive comments"); - this.cbComments.UseVisualStyleBackColor = true; + cbComments.AutoSize = true; + cbComments.Checked = true; + cbComments.CheckState = System.Windows.Forms.CheckState.Checked; + cbComments.Location = new System.Drawing.Point(7, 42); + cbComments.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbComments.Name = "cbComments"; + cbComments.Size = new System.Drawing.Size(85, 19); + cbComments.TabIndex = 0; + cbComments.Text = "Comments"; + toolTip1.SetToolTip(cbComments, "Add descriptive comments"); + cbComments.UseVisualStyleBackColor = true; // // gbNumbers // - this.gbNumbers.Controls.Add(this.cbBitOrder); - this.gbNumbers.Controls.Add(this.cbNumSize); - this.gbNumbers.Controls.Add(this.cbNumBase); - this.gbNumbers.Location = new System.Drawing.Point(5, 123); - this.gbNumbers.Name = "gbNumbers"; - this.gbNumbers.Size = new System.Drawing.Size(140, 105); - this.gbNumbers.TabIndex = 4; - this.gbNumbers.TabStop = false; - this.gbNumbers.Text = "Numbers"; + gbNumbers.Controls.Add(cbBitOrder); + gbNumbers.Controls.Add(cbNumSize); + gbNumbers.Controls.Add(cbNumBase); + gbNumbers.Location = new System.Drawing.Point(6, 142); + gbNumbers.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + gbNumbers.Name = "gbNumbers"; + gbNumbers.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + gbNumbers.Size = new System.Drawing.Size(163, 121); + gbNumbers.TabIndex = 4; + gbNumbers.TabStop = false; + gbNumbers.Text = "Numbers"; // // cbBitOrder // - this.cbBitOrder.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbBitOrder.FormattingEnabled = true; - this.cbBitOrder.Items.AddRange(new object[] { - "LSB Top", - "MSB Top"}); - this.cbBitOrder.Location = new System.Drawing.Point(10, 19); - this.cbBitOrder.Name = "cbBitOrder"; - this.cbBitOrder.Size = new System.Drawing.Size(121, 21); - this.cbBitOrder.TabIndex = 5; + cbBitOrder.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbBitOrder.FormattingEnabled = true; + cbBitOrder.Items.AddRange(new object[] { "LSB Top", "MSB Top" }); + cbBitOrder.Location = new System.Drawing.Point(12, 22); + cbBitOrder.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbBitOrder.Name = "cbBitOrder"; + cbBitOrder.Size = new System.Drawing.Size(140, 23); + cbBitOrder.TabIndex = 5; // // cbNumSize // - this.cbNumSize.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbNumSize.FormattingEnabled = true; - this.cbNumSize.Items.AddRange(new object[] { - "8 bit", - "16 bit", - "32 bit"}); - this.cbNumSize.Location = new System.Drawing.Point(10, 73); - this.cbNumSize.Name = "cbNumSize"; - this.cbNumSize.Size = new System.Drawing.Size(121, 21); - this.cbNumSize.TabIndex = 4; + cbNumSize.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbNumSize.FormattingEnabled = true; + cbNumSize.Items.AddRange(new object[] { "8 bit", "16 bit", "32 bit" }); + cbNumSize.Location = new System.Drawing.Point(12, 84); + cbNumSize.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbNumSize.Name = "cbNumSize"; + cbNumSize.Size = new System.Drawing.Size(140, 23); + cbNumSize.TabIndex = 4; // // cbNumBase // - this.cbNumBase.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbNumBase.FormattingEnabled = true; - this.cbNumBase.Items.AddRange(new object[] { - "Hexadecimal", - "Binary", - "Decimal"}); - this.cbNumBase.Location = new System.Drawing.Point(10, 46); - this.cbNumBase.Name = "cbNumBase"; - this.cbNumBase.Size = new System.Drawing.Size(121, 21); - this.cbNumBase.TabIndex = 3; + cbNumBase.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbNumBase.FormattingEnabled = true; + cbNumBase.Items.AddRange(new object[] { "Hexadecimal", "Binary", "Decimal" }); + cbNumBase.Location = new System.Drawing.Point(12, 53); + cbNumBase.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbNumBase.Name = "cbNumBase"; + cbNumBase.Size = new System.Drawing.Size(140, 23); + cbNumBase.TabIndex = 3; // // gbText // - this.gbText.Controls.Add(this.lblXLines); - this.gbText.Controls.Add(this.nudXLines); - this.gbText.Controls.Add(this.cbLines); - this.gbText.Controls.Add(this.cbFormat); - this.gbText.Location = new System.Drawing.Point(5, 234); - this.gbText.Name = "gbText"; - this.gbText.Size = new System.Drawing.Size(140, 105); - this.gbText.TabIndex = 5; - this.gbText.TabStop = false; - this.gbText.Text = "Text format"; + gbText.Controls.Add(lblXLines); + gbText.Controls.Add(nudXLines); + gbText.Controls.Add(cbLines); + gbText.Controls.Add(cbFormat); + gbText.Location = new System.Drawing.Point(6, 270); + gbText.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + gbText.Name = "gbText"; + gbText.Padding = new System.Windows.Forms.Padding(4, 3, 4, 3); + gbText.Size = new System.Drawing.Size(163, 121); + gbText.TabIndex = 5; + gbText.TabStop = false; + gbText.Text = "Text format"; // // lblXLines // - this.lblXLines.AutoSize = true; - this.lblXLines.Enabled = false; - this.lblXLines.Location = new System.Drawing.Point(10, 76); - this.lblXLines.Name = "lblXLines"; - this.lblXLines.Size = new System.Drawing.Size(60, 13); - this.lblXLines.TabIndex = 9; - this.lblXLines.Text = "X numbers:"; + lblXLines.AutoSize = true; + lblXLines.Enabled = false; + lblXLines.Location = new System.Drawing.Point(12, 88); + lblXLines.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + lblXLines.Name = "lblXLines"; + lblXLines.Size = new System.Drawing.Size(67, 15); + lblXLines.TabIndex = 9; + lblXLines.Text = "X numbers:"; // // nudXLines // - this.nudXLines.Enabled = false; - this.nudXLines.Location = new System.Drawing.Point(76, 73); - this.nudXLines.Maximum = new decimal(new int[] { - 64, - 0, - 0, - 0}); - this.nudXLines.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.nudXLines.Name = "nudXLines"; - this.nudXLines.Size = new System.Drawing.Size(55, 20); - this.nudXLines.TabIndex = 8; - this.nudXLines.Value = new decimal(new int[] { - 8, - 0, - 0, - 0}); + nudXLines.Enabled = false; + nudXLines.Location = new System.Drawing.Point(89, 84); + nudXLines.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + nudXLines.Maximum = new decimal(new int[] { 64, 0, 0, 0 }); + nudXLines.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + nudXLines.Name = "nudXLines"; + nudXLines.Size = new System.Drawing.Size(64, 23); + nudXLines.TabIndex = 8; + nudXLines.Value = new decimal(new int[] { 8, 0, 0, 0 }); // // cbLines // - this.cbLines.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbLines.FormattingEnabled = true; - this.cbLines.Items.AddRange(new object[] { - "1 Column per line", - "1 Symbol per line", - "X Numbers per line"}); - this.cbLines.Location = new System.Drawing.Point(10, 46); - this.cbLines.Name = "cbLines"; - this.cbLines.Size = new System.Drawing.Size(121, 21); - this.cbLines.TabIndex = 7; - this.cbLines.SelectedIndexChanged += new System.EventHandler(this.cbLines_SelectedIndexChanged); + cbLines.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbLines.FormattingEnabled = true; + cbLines.Items.AddRange(new object[] { "1 Column per line", "1 Symbol per line", "X Numbers per line" }); + cbLines.Location = new System.Drawing.Point(12, 53); + cbLines.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbLines.Name = "cbLines"; + cbLines.Size = new System.Drawing.Size(140, 23); + cbLines.TabIndex = 7; + cbLines.SelectedIndexChanged += cbLines_SelectedIndexChanged; // // cbFormat // - this.cbFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cbFormat.FormattingEnabled = true; - this.cbFormat.Items.AddRange(new object[] { - "1D C array", - "2D C array", - "Comma separated"}); - this.cbFormat.Location = new System.Drawing.Point(10, 19); - this.cbFormat.Name = "cbFormat"; - this.cbFormat.Size = new System.Drawing.Size(121, 21); - this.cbFormat.TabIndex = 6; - this.cbFormat.SelectedIndexChanged += new System.EventHandler(this.cbFormat_SelectedIndexChanged); + cbFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + cbFormat.FormattingEnabled = true; + cbFormat.Items.AddRange(new object[] { "1D C array", "2D C array", "Comma separated" }); + cbFormat.Location = new System.Drawing.Point(12, 22); + cbFormat.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + cbFormat.Name = "cbFormat"; + cbFormat.Size = new System.Drawing.Size(140, 23); + cbFormat.TabIndex = 6; + cbFormat.SelectedIndexChanged += cbFormat_SelectedIndexChanged; // // btnGenerate // - this.btnGenerate.Location = new System.Drawing.Point(5, 439); - this.btnGenerate.Name = "btnGenerate"; - this.btnGenerate.Size = new System.Drawing.Size(140, 30); - this.btnGenerate.TabIndex = 6; - this.btnGenerate.Text = "Generate"; - this.btnGenerate.UseVisualStyleBackColor = true; - this.btnGenerate.Click += new System.EventHandler(this.btnGenerate_Click); + btnGenerate.Location = new System.Drawing.Point(6, 520); + btnGenerate.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnGenerate.Name = "btnGenerate"; + btnGenerate.Size = new System.Drawing.Size(163, 35); + btnGenerate.TabIndex = 6; + btnGenerate.Text = "Generate"; + btnGenerate.UseVisualStyleBackColor = true; + btnGenerate.Click += btnGenerate_Click; // // btnClose // - this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnClose.Location = new System.Drawing.Point(5, 487); - this.btnClose.Name = "btnClose"; - this.btnClose.Size = new System.Drawing.Size(140, 30); - this.btnClose.TabIndex = 7; - this.btnClose.Text = "Close"; - this.btnClose.UseVisualStyleBackColor = true; + btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel; + btnClose.Location = new System.Drawing.Point(6, 562); + btnClose.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnClose.Name = "btnClose"; + btnClose.Size = new System.Drawing.Size(163, 35); + btnClose.TabIndex = 7; + btnClose.Text = "Close"; + btnClose.UseVisualStyleBackColor = true; // // toolTip1 // - this.toolTip1.AutoPopDelay = 10000; - this.toolTip1.InitialDelay = 500; - this.toolTip1.ReshowDelay = 100; + toolTip1.AutoPopDelay = 10000; + toolTip1.InitialDelay = 500; + toolTip1.ReshowDelay = 100; // // Export // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnClose; - this.ClientSize = new System.Drawing.Size(692, 531); - this.Controls.Add(this.btnClose); - this.Controls.Add(this.btnGenerate); - this.Controls.Add(this.gbText); - this.Controls.Add(this.gbNumbers); - this.Controls.Add(this.gbOptions); - this.Controls.Add(this.gbScan); - this.Controls.Add(this.txtOutput); - this.MinimumSize = new System.Drawing.Size(700, 570); - this.Name = "Export"; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Export"; - this.Load += new System.EventHandler(this.Export_Load); - this.gbScan.ResumeLayout(false); - this.gbOptions.ResumeLayout(false); - this.gbOptions.PerformLayout(); - this.gbNumbers.ResumeLayout(false); - this.gbText.ResumeLayout(false); - this.gbText.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudXLines)).EndInit(); - this.ResumeLayout(false); + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + CancelButton = btnClose; + ClientSize = new System.Drawing.Size(807, 613); + Controls.Add(btnClose); + Controls.Add(btnGenerate); + Controls.Add(gbText); + Controls.Add(gbNumbers); + Controls.Add(gbOptions); + Controls.Add(gbScan); + Controls.Add(txtOutput); + Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + MinimumSize = new System.Drawing.Size(814, 652); + Name = "Export"; + ShowIcon = false; + ShowInTaskbar = false; + StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + Text = "Export"; + Load += Export_Load; + gbScan.ResumeLayout(false); + gbOptions.ResumeLayout(false); + gbOptions.PerformLayout(); + gbNumbers.ResumeLayout(false); + gbText.ResumeLayout(false); + gbText.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)nudXLines).EndInit(); + ResumeLayout(false); } @@ -374,5 +380,6 @@ private System.Windows.Forms.Button btnClose; private System.Windows.Forms.CheckBox cbZeroes; private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.CheckBox cbPacked; } } \ No newline at end of file diff --git a/McBitFont/Export.cs b/McBitFont/Export.cs index 2cf596f..7c8ce21 100644 --- a/McBitFont/Export.cs +++ b/McBitFont/Export.cs @@ -38,16 +38,16 @@ namespace McBitFont { "//\n" + "//\n" ); - comments.Add("scan_order", "// Scan order: "); - comments.Add("scan_hdir", "// Horizontal direction: "); - comments.Add("scan_vdir", "// Vertical direction: "); + comments.Add("scan_order", "// Scan order: "); + comments.Add("scan_hdir", "// Horizontal direction: "); + comments.Add("scan_vdir", "// Vertical direction: "); comments.Add("num_bit_order", "// Bit order: "); - comments.Add("num_base", "// Numbers base: "); - comments.Add("num_size", "// Numbers size: "); + comments.Add("num_base", "// Numbers base: "); + comments.Add("num_size", "// Numbers size: "); - comments.Add("text_format", "// Text format: "); - comments.Add("text_lines", "// Numbers per line: "); + comments.Add("text_format", "// Text format: "); + comments.Add("text_lines", "// Numbers per line: "); comments.Add("font_header_map", "// Font header map:\n" + @@ -79,6 +79,7 @@ namespace McBitFont { txtOutput.Clear(); bool com = cbComments.Checked; bool hdr = cbHeader.Checked; + bool packed = cbPacked.Checked; int lines = cbLines.SelectedIndex; int format = cbFormat.SelectedIndex; bool mono = mainForm.monospaced; @@ -156,7 +157,7 @@ namespace McBitFont { } } - + // C data type selection ushort bits = 8; string dataType = "uint8_t"; switch (cbNumSize.SelectedIndex) { @@ -197,9 +198,10 @@ namespace McBitFont { } // Array definition - if ( format == 0 || format == 1 ) output += "const " + dataType + " " + mainForm.prjName + "[]" + (format==1?"[]":"") + " = {\n"; + if (format == 0 || format == 1) output += "const " + dataType + " " + mainForm.prjName + "[]" + (format == 1 ? "[]" : "") + " = {\n"; // Should we add the meta header? + // TODO: PACKED FONT FLAG!!!! ================================== if (hdr) { output += " // Meta header\n" + @@ -210,17 +212,17 @@ namespace McBitFont { " " + mainForm.frames.Last().code.ToString() + ", // Last character code\n" ; } - + // Brackets for 2D array definition string obracket = format == 1 ? "{ " : ""; string cbracket = format == 1 ? " }" : ""; // Number output counter int numcount = 0; - + if (com) output += " // Data:\n"; MainForm.FrameMiniature flast = mainForm.frames.Last(); - foreach ( MainForm.FrameMiniature f in mainForm.frames) { + foreach (MainForm.FrameMiniature f in mainForm.frames) { // For each frame uint b = 0; // current number bits int t, x, y; // t - calculated bit number; x - actual x; y - actual y @@ -289,6 +291,7 @@ namespace McBitFont { } } + t = jdir < 0 ? bits+1 : -1; for (int i = imin; i != imax; i += idir) { if (lines == 0) { // "Column/Row per line" - new line offset @@ -296,8 +299,13 @@ namespace McBitFont { numcount = 0; } for (int j = jmin; j != jmax; j += jdir) { - if (jdir < 0) t = jmin - j; - else t = j; + if (packed) { + t += jdir; + if (t < 0 || t % bits == 0) t = jdir < 0 ? bits : 0; + } else { + if (jdir < 0) t = jmin - j; + else t = j; + } if (t % bits == 0) b = 0; if (cbOrder.SelectedIndex == 0) { // Columns @@ -314,9 +322,9 @@ namespace McBitFont { // MSB on top/Left b |= (uint)(1 << (bits - (t % bits) - 1)); } - + } - if (((t + 1) % bits == 0) || j + jdir == jmax) { + if (((t + 1) % bits == 0) || (j + jdir == jmax && !packed)) { // we have filled a number with bits - let's post it // should we post a comma before the number? @@ -337,9 +345,19 @@ namespace McBitFont { } if (lines == 0) { // "Column/Row per line" - closing line - output += cbracket + ((i+idir==imax) && f.Equals(flast) ? "" : ",") + "\n"; + output += cbracket + ((i + idir == imax) && f.Equals(flast) ? "" : ",") + "\n"; } } + if (packed && (f.width * f.height / 8) % bits > 0) { + // post leftovers in last byte + + // should we post a prefix to the number? + pref = (!cbZeroes.Checked && ((b < 10 && nbase == 16) || (b < 2 && nbase == 2))) ? "" : prefix; + output += ", " + pref + Convert.ToString(b, nbase).PadLeft(pad, '0'); + + // count posted numbers + numcount++; + } if (lines == 1) { // "1 symbol per line" - closing line if (!f.Equals(flast) && f.width > 0) output += ","; @@ -390,5 +408,10 @@ namespace McBitFont { lblXLines.Enabled = false; } } + + private void cbPacked_CheckedChanged(object sender, EventArgs e) { + cbLines.Enabled = !cbPacked.Checked; + if (cbPacked.Checked) cbLines.SelectedIndex = 1; + } } } diff --git a/McBitFont/Export.resx b/McBitFont/Export.resx index d54ad1e..dcfd08d 100644 --- a/McBitFont/Export.resx +++ b/McBitFont/Export.resx @@ -1,17 +1,17 @@  - @@ -120,7 +120,4 @@ 17, 17 - - 17, 17 - \ No newline at end of file diff --git a/examples/tests/single_3x5.mbfont b/examples/tests/single_3x5.mbfont new file mode 100644 index 0000000000000000000000000000000000000000..3f7ee5b49ef2e6dd80007ed270848c529fcb665e GIT binary patch literal 34 dcmbPn00<79WqHgnaS8)7>ttru`G*goKmbDA6Wjm* literal 0 HcmV?d00001 diff --git a/examples/tests/single_5x9.mbfont b/examples/tests/single_5x9.mbfont new file mode 100644 index 0000000000000000000000000000000000000000..7e1a46ec54488891fb0348f715823767b5f6ec40 GIT binary patch literal 66 fcmbPn00<79WqHgnaS8(~=VVsSI}Eyq50L-?9``F9 literal 0 HcmV?d00001 From 4d39b3586e3886b822c23e0162b0af6fb0998888 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Wed, 21 May 2025 12:16:44 +0300 Subject: [PATCH 05/29] TODO features: V "Packed" fonts export V "Bytes total comment in export --- McBitFont/Export.cs | 24 +++++++++++++++++++----- TODO.txt | 3 ++- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/McBitFont/Export.cs b/McBitFont/Export.cs index 7c8ce21..f4c593e 100644 --- a/McBitFont/Export.cs +++ b/McBitFont/Export.cs @@ -76,6 +76,7 @@ namespace McBitFont { private void btnGenerate_Click(object sender, EventArgs e) { string output = ""; + int bTotal = 0; txtOutput.Clear(); bool com = cbComments.Checked; bool hdr = cbHeader.Checked; @@ -90,7 +91,7 @@ namespace McBitFont { if (com) { // Header comments - output += comments["header"]; + //output += comments["header"]; output += comments["scan_order"] + cbOrder.Text + "\n"; output += comments["scan_hdir"] + cbHDir.Text + "\n"; output += comments["scan_vdir"] + cbVDir.Text + "\n\n"; @@ -201,16 +202,17 @@ namespace McBitFont { if (format == 0 || format == 1) output += "const " + dataType + " " + mainForm.prjName + "[]" + (format == 1 ? "[]" : "") + " = {\n"; // Should we add the meta header? - // TODO: PACKED FONT FLAG!!!! ================================== if (hdr) { output += " // Meta header\n" + + " " + (packed ? "1" : "0") + ", // Is it a packed font?\n" + " " + (mono ? mainForm.frames.First().width.ToString() : "0") + ", // Font width in pixels; 0 - variable width\n" + " " + mainForm.frames.First().height.ToString() + ", // Font height in pixels\n" + " 0, // Font space (between symbols) in pixels\n" + " " + mainForm.frames.First().code.ToString() + ", // First character code\n" + " " + mainForm.frames.Last().code.ToString() + ", // Last character code\n" ; + bTotal += 6; // Count bytes total } // Brackets for 2D array definition @@ -243,6 +245,7 @@ namespace McBitFont { // Should we post a prefix to the number? pref = (!cbZeroes.Checked && ((f.width < 10 && nbase == 16) || (f.width < 2 && nbase == 2))) ? "" : prefix; output += (lines != 1 ? " " : "") + pref + Convert.ToString(f.width, nbase).PadLeft(pad, '0') + (lines != 0 ? (lines == 1 ? ", " : "") : ",\n"); + bTotal++; // Count bytes total // Count posted numbers numcount++; if (lines != 2) numcount = 0; @@ -333,6 +336,7 @@ namespace McBitFont { // should we post a prefix to the number? pref = (!cbZeroes.Checked && ((b < 10 && nbase == 16) || (b < 2 && nbase == 2))) ? "" : prefix; output += pref + Convert.ToString(b, nbase).PadLeft(pad, '0'); + bTotal++; // Count bytes total // count posted numbers numcount++; @@ -353,7 +357,8 @@ namespace McBitFont { // should we post a prefix to the number? pref = (!cbZeroes.Checked && ((b < 10 && nbase == 16) || (b < 2 && nbase == 2))) ? "" : prefix; - output += ", " + pref + Convert.ToString(b, nbase).PadLeft(pad, '0'); + output += (numcount > 0? ", " : "") + pref + Convert.ToString(b, nbase).PadLeft(pad, '0'); + bTotal++; // Count bytes total // count posted numbers numcount++; @@ -377,6 +382,12 @@ namespace McBitFont { // Close array definition output += "};\n"; + // Add header and bytes total counter + if (com) { + output = "// Bytes total: " + bTotal.ToString() + "\n" + output; + output = comments["header"] + output; + } + txtOutput.Text = output; txtOutput.SelectionStart = 0; txtOutput.ScrollToCaret(); @@ -400,6 +411,10 @@ namespace McBitFont { } private void cbLines_SelectedIndexChanged(object sender, EventArgs e) { + if (cbLines.SelectedIndex == 0 && cbPacked.Checked) { + MessageBox.Show("Cannot make one line per column/row in packed font as there are bytes used in several columns/rows!\n(Setting text format to 1 Symbol per line)", "No 1 Symbol per line for packed fonts!", MessageBoxButtons.OK, MessageBoxIcon.Information); + cbLines.SelectedIndex = 1; + } if (cbLines.SelectedIndex == 2) { nudXLines.Enabled = true; lblXLines.Enabled = true; @@ -410,8 +425,7 @@ namespace McBitFont { } private void cbPacked_CheckedChanged(object sender, EventArgs e) { - cbLines.Enabled = !cbPacked.Checked; - if (cbPacked.Checked) cbLines.SelectedIndex = 1; + if (cbPacked.Checked && cbLines.SelectedIndex == 0) cbLines.SelectedIndex = 1; } } } diff --git a/TODO.txt b/TODO.txt index b52b3f5..ccf8c6a 100644 --- a/TODO.txt +++ b/TODO.txt @@ -11,6 +11,7 @@ V Delete symbols before/after selected - Image import from a file - Import from a text array - Rectangle selection to mass-paint, shift and mirror pixels -- "Packed" fonts export +V "Packed" fonts export +V "Bytes total comment in export Bugs: From f33b107fdb2b77ca116adca84368e31d831f8867 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Wed, 21 May 2025 12:17:16 +0300 Subject: [PATCH 06/29] haxrcorp font updated in examples --- examples/haxrcorp_4089_cyrillic_altgr.mbfont | Bin 10421 -> 10421 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/haxrcorp_4089_cyrillic_altgr.mbfont b/examples/haxrcorp_4089_cyrillic_altgr.mbfont index d6cff86f531a5869f63db0410c72760c548062d5..5ffadf55f4ea2b2b21d0821610af500df83f35b4 100644 GIT binary patch delta 698 zcmZ9|xlY4C5XNy^3Lv>jffQnihyo<1g#rpH=qXYm8rSd?=DrCDW3F(9BY?Of83Pih z?ADLKBk&A}#m*ljrda*-t#)^I{DNPokF`3QA(~Ngqj4|+CczY#1~Xt5%z=5Z02aX# zSOzPa(|Eo}vnTH0#)p;g$`_vIVw5 z1?+%bum|?R0XPIza0HIQNrG-SIwh*2c0GCbv<+nbLN&BxbP8f;&Az~mJPzLhAKZfn@R&f_vvx1p6L7-cjPHqTd+WjFQGk*JYq{UyVt^YH$Sz=j%v`ktdt&-MA;^Yy(X4yJvgS1K7B5m6go?n}yZ8h2sZNdjwK=TY-;ErRj!7q^Q_>mf+)=&%U;hQmE?p(A`f3`G9ycxhsZ7kLxnkQj z>4sD$-I6L6$!97Xvxllx6sD-n9mylzlO9Nq7PUq5KP8nU!)OL&sH00pT3V&l9T(5D i)f=_GkX}h|q<7LsLP;XrM#lGpAdqr%Up1R9w0{GeLANvj From 19c12754ef84c993359b496132214696e42b7c50 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Wed, 21 May 2025 12:38:27 +0300 Subject: [PATCH 07/29] TODO feature: Better quality pictures in symbol list --- McBitFont/Form1.cs | 9 +++++++-- TODO.txt | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 51e5c21..db4f551 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -451,9 +451,14 @@ namespace McBitFont { bmp.SetPixel(i + imin, j + jmin, c); } } - var sizedBMP = new Bitmap(bmp, new Size(50, 50)); + Bitmap sbmp = new Bitmap(50, 50); + using (Graphics g = Graphics.FromImage(sbmp)) { + g.InterpolationMode = InterpolationMode.NearestNeighbor; + g.PixelOffsetMode = PixelOffsetMode.Half; + g.DrawImage(bmp, 0, 0, 50, 50); + } bmp.Dispose(); - return sizedBMP; + return sbmp; } private void dotPanel_Paint(object sender, PaintEventArgs e) { diff --git a/TODO.txt b/TODO.txt index ccf8c6a..ef1641b 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,5 +1,6 @@ Application: V Migrate from .Net Framework 4.7 to .NET 9 +V Better quality pictures in symbol list Functionality: - Context menu in symbol navigator From e76778d8fbbf1ec77f0e1b2cf76011f4294c24f0 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Wed, 21 May 2025 14:05:34 +0300 Subject: [PATCH 08/29] TODO feature: Ability to make monospaced font a variable width one --- McBitFont/Form1.Designer.cs | 35 ++++++++++++++++++++++++++++++++++- McBitFont/Form1.cs | 9 +++++++++ TODO.txt | 2 +- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 5ff321b..b25df56 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -66,6 +66,7 @@ removeAfterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); applyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + makeVarWidthToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ClearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); shiftUpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); shiftDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -419,6 +420,7 @@ newToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N; newToolStripMenuItem.Size = new System.Drawing.Size(184, 22); newToolStripMenuItem.Text = "New"; + newToolStripMenuItem.ToolTipText = "Create new file"; newToolStripMenuItem.Click += newToolStripMenuItem_Click; // // openToolStripMenuItem @@ -429,6 +431,7 @@ openToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O; openToolStripMenuItem.Size = new System.Drawing.Size(184, 22); openToolStripMenuItem.Text = "Open"; + openToolStripMenuItem.ToolTipText = "Open from file"; openToolStripMenuItem.Click += openToolStripMenuItem_Click; // // saveToolStripMenuItem @@ -439,6 +442,7 @@ saveToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S; saveToolStripMenuItem.Size = new System.Drawing.Size(184, 22); saveToolStripMenuItem.Text = "Save"; + saveToolStripMenuItem.ToolTipText = "Save changes"; saveToolStripMenuItem.Click += saveToolStripMenuItem_Click_1; // // saveAsToolStripMenuItem @@ -449,6 +453,7 @@ saveAsToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift | System.Windows.Forms.Keys.S; saveAsToolStripMenuItem.Size = new System.Drawing.Size(184, 22); saveAsToolStripMenuItem.Text = "Save as"; + saveAsToolStripMenuItem.ToolTipText = "Save changes to another file"; saveAsToolStripMenuItem.Click += saveToolStripMenuItem_Click; // // exitToolStripMenuItem @@ -459,6 +464,7 @@ exitToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.X; exitToolStripMenuItem.Size = new System.Drawing.Size(184, 22); exitToolStripMenuItem.Text = "Exit"; + exitToolStripMenuItem.ToolTipText = "Quit application"; exitToolStripMenuItem.Click += exitToolStripMenuItem_Click; // // editToolStripMenuItem @@ -477,6 +483,7 @@ copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C; copyToolStripMenuItem.Size = new System.Drawing.Size(215, 22); copyToolStripMenuItem.Text = "Copy"; + copyToolStripMenuItem.ToolTipText = "Copy current symbol to clipboard"; copyToolStripMenuItem.Click += copyToolStripMenuItem_Click; // // pasteToolStripMenuItem @@ -488,6 +495,7 @@ pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V; pasteToolStripMenuItem.Size = new System.Drawing.Size(215, 22); pasteToolStripMenuItem.Text = "Paste"; + pasteToolStripMenuItem.ToolTipText = "Paste from clipboard to current symbol"; pasteToolStripMenuItem.Click += pasteToolStripMenuItem_Click; // // prependSymbolToolStripMenuItem @@ -499,6 +507,7 @@ prependSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Insert; prependSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); prependSymbolToolStripMenuItem.Text = "Prepend symbol"; + prependSymbolToolStripMenuItem.ToolTipText = "Add a symbol to the beginning of the sequence"; prependSymbolToolStripMenuItem.Click += prependSymbolToolStripMenuItem_Click; // // appendSymbolToolStripMenuItem @@ -510,6 +519,7 @@ appendSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.End; appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); appendSymbolToolStripMenuItem.Text = "Append symbol"; + appendSymbolToolStripMenuItem.ToolTipText = "Add a symbol to the end of the sequence"; appendSymbolToolStripMenuItem.Click += prependSymbolToolStripMenuItem_Click; // // removeSymbolToolStripMenuItem @@ -521,6 +531,7 @@ removeSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Delete; removeSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); removeSymbolToolStripMenuItem.Text = "Remove symbol"; + removeSymbolToolStripMenuItem.ToolTipText = "Remove current symbol (works only for first or last symbol in the sequence)"; removeSymbolToolStripMenuItem.Click += removeSymbolToolStripMenuItem_Click; // // removeBeforeToolStripMenuItem @@ -530,6 +541,7 @@ removeBeforeToolStripMenuItem.Name = "removeBeforeToolStripMenuItem"; removeBeforeToolStripMenuItem.Size = new System.Drawing.Size(215, 22); removeBeforeToolStripMenuItem.Text = "Remove all before selected"; + removeBeforeToolStripMenuItem.ToolTipText = "Remove all symbols before current one"; removeBeforeToolStripMenuItem.Click += removeBeforeToolStripMenuItem_Click; // // removeAfterToolStripMenuItem @@ -539,6 +551,7 @@ removeAfterToolStripMenuItem.Name = "removeAfterToolStripMenuItem"; removeAfterToolStripMenuItem.Size = new System.Drawing.Size(215, 22); removeAfterToolStripMenuItem.Text = "Remove all after selected"; + removeAfterToolStripMenuItem.ToolTipText = "Remove all symbols after current one"; removeAfterToolStripMenuItem.Click += removeAfterToolStripMenuItem_Click; // // applyToolStripMenuItem @@ -549,15 +562,25 @@ applyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Space; applyToolStripMenuItem.Size = new System.Drawing.Size(215, 22); applyToolStripMenuItem.Text = "Apply"; + applyToolStripMenuItem.ToolTipText = "Apply canvas changes"; applyToolStripMenuItem.Click += button2_Click; // // toolsToolStripMenuItem // - toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { ClearToolStripMenuItem, shiftUpToolStripMenuItem, shiftDownToolStripMenuItem, shiftLeftToolStripMenuItem, shiftRightToolStripMenuItem, invertToolStripMenuItem, mirrorXToolStripMenuItem, mirrorYToolStripMenuItem, exportToolStripMenuItem }); + toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { makeVarWidthToolStripMenuItem, ClearToolStripMenuItem, shiftUpToolStripMenuItem, shiftDownToolStripMenuItem, shiftLeftToolStripMenuItem, shiftRightToolStripMenuItem, invertToolStripMenuItem, mirrorXToolStripMenuItem, mirrorYToolStripMenuItem, exportToolStripMenuItem }); toolsToolStripMenuItem.Name = "toolsToolStripMenuItem"; toolsToolStripMenuItem.Size = new System.Drawing.Size(47, 20); toolsToolStripMenuItem.Text = "Tools"; // + // makeVarWidthToolStripMenuItem + // + makeVarWidthToolStripMenuItem.Name = "makeVarWidthToolStripMenuItem"; + makeVarWidthToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + makeVarWidthToolStripMenuItem.Text = "Make Variable Width"; + makeVarWidthToolStripMenuItem.ToolTipText = "Make Font Variable width one"; + makeVarWidthToolStripMenuItem.Visible = false; + makeVarWidthToolStripMenuItem.Click += makeVarWidthToolStripMenuItem_Click; + // // ClearToolStripMenuItem // ClearToolStripMenuItem.Name = "ClearToolStripMenuItem"; @@ -565,6 +588,7 @@ ClearToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W; ClearToolStripMenuItem.Size = new System.Drawing.Size(197, 22); ClearToolStripMenuItem.Text = "Clear canvas"; + ClearToolStripMenuItem.ToolTipText = "Clear canvas"; ClearToolStripMenuItem.Click += btnClear_Click; // // shiftUpToolStripMenuItem @@ -575,6 +599,7 @@ shiftUpToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Up; shiftUpToolStripMenuItem.Size = new System.Drawing.Size(197, 22); shiftUpToolStripMenuItem.Text = "Shift Up"; + shiftUpToolStripMenuItem.ToolTipText = "Shift pixels Up"; shiftUpToolStripMenuItem.Click += btnShiftUp_Click; // // shiftDownToolStripMenuItem @@ -585,6 +610,7 @@ shiftDownToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Down; shiftDownToolStripMenuItem.Size = new System.Drawing.Size(197, 22); shiftDownToolStripMenuItem.Text = "Shift Down"; + shiftDownToolStripMenuItem.ToolTipText = "Shift pixels Down"; shiftDownToolStripMenuItem.Click += btnShiftDown_Click; // // shiftLeftToolStripMenuItem @@ -595,6 +621,7 @@ shiftLeftToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Left; shiftLeftToolStripMenuItem.Size = new System.Drawing.Size(197, 22); shiftLeftToolStripMenuItem.Text = "Shift left"; + shiftLeftToolStripMenuItem.ToolTipText = "Shift pixels Left"; shiftLeftToolStripMenuItem.Click += btnShiftLeft_Click; // // shiftRightToolStripMenuItem @@ -605,6 +632,7 @@ shiftRightToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Right; shiftRightToolStripMenuItem.Size = new System.Drawing.Size(197, 22); shiftRightToolStripMenuItem.Text = "Shift Right"; + shiftRightToolStripMenuItem.ToolTipText = "Shift pixels Right"; shiftRightToolStripMenuItem.Click += btnShiftRight_Click; // // invertToolStripMenuItem @@ -615,6 +643,7 @@ invertToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I; invertToolStripMenuItem.Size = new System.Drawing.Size(197, 22); invertToolStripMenuItem.Text = "Invert"; + invertToolStripMenuItem.ToolTipText = "Invert pixel colors"; invertToolStripMenuItem.Click += btnInvert_Click; // // mirrorXToolStripMenuItem @@ -625,6 +654,7 @@ mirrorXToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X; mirrorXToolStripMenuItem.Size = new System.Drawing.Size(197, 22); mirrorXToolStripMenuItem.Text = "Mirror X"; + mirrorXToolStripMenuItem.ToolTipText = "Mirror by X axis (horizontal)"; mirrorXToolStripMenuItem.Click += btnMirrorX_Click; // // mirrorYToolStripMenuItem @@ -635,6 +665,7 @@ mirrorYToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y; mirrorYToolStripMenuItem.Size = new System.Drawing.Size(197, 22); mirrorYToolStripMenuItem.Text = "Mirror Y"; + mirrorYToolStripMenuItem.ToolTipText = "Mirror by Y axis (vertical)"; mirrorYToolStripMenuItem.Click += btnMirrorY_Click; // // exportToolStripMenuItem @@ -644,6 +675,7 @@ exportToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E; exportToolStripMenuItem.Size = new System.Drawing.Size(197, 22); exportToolStripMenuItem.Text = "Export"; + exportToolStripMenuItem.ToolTipText = "Configure and export data"; exportToolStripMenuItem.Click += button1_Click; // // aboutToolStripMenuItem @@ -808,6 +840,7 @@ private System.Windows.Forms.CheckBox chkTopSide; private System.Windows.Forms.ToolStripMenuItem removeBeforeToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem removeAfterToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem makeVarWidthToolStripMenuItem; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index db4f551..6b524c3 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -578,6 +578,7 @@ namespace McBitFont { monospaced = form.rbMono.Checked; } + makeVarWidthToolStripMenuItem.Visible = monospaced; lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; codepage = (form.cbEncoding.SelectedItem as New.EncodingItem).Code; foreach (FrameMiniature ff in frames) { @@ -663,6 +664,7 @@ namespace McBitFont { baseline = sav.baseline; lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; frames = sav.frames; + makeVarWidthToolStripMenuItem.Visible = monospaced; miniList.Items.Clear(); ilMiniatures.Images.Clear(); foreach (FrameMiniature ff in frames) { @@ -865,5 +867,12 @@ namespace McBitFont { private void removeAfterToolStripMenuItem_Click(object sender, EventArgs e) { removeBA(false); } + + private void makeVarWidthToolStripMenuItem_Click(object sender, EventArgs e) { + monospaced = false; + makeVarWidthToolStripMenuItem.Visible = false; + lblType.Text = "Variable width / Single"; + prjModified = true; + } } } diff --git a/TODO.txt b/TODO.txt index ef1641b..c9a6121 100644 --- a/TODO.txt +++ b/TODO.txt @@ -7,7 +7,7 @@ Functionality: V Delete symbols before/after selected - Shift all symbols on code line (change symbol codes) - Specify starting code (extends the shift) -- Ability to make monospaced font a variable width one +V Ability to make monospaced font a variable width one - Undo/Redo - Image import from a file - Import from a text array From ce3b0ddd94f407096f5b669eb6b7f87afe628325 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Wed, 21 May 2025 18:20:39 +0300 Subject: [PATCH 09/29] WIP: Undo/Redo --- McBitFont/CanvasHistory.cs | 74 +++++++++++++++++ McBitFont/Form1.Designer.cs | 48 +++++++++-- McBitFont/Form1.cs | 47 ++++++++++- McBitFont/McBitFont.csproj | 24 ++++++ McBitFont/Properties/Resources.Designer.cs | 90 +++++++++++++-------- McBitFont/Properties/Resources.resx | 54 +++++++------ McBitFont/Properties/Settings.Designer.cs | 10 +-- McBitFont/Resources/redo.png | Bin 0 -> 561 bytes McBitFont/Resources/undo.png | Bin 0 -> 566 bytes icons/redo.png | Bin 0 -> 561 bytes icons/undo.png | Bin 0 -> 566 bytes 11 files changed, 273 insertions(+), 74 deletions(-) create mode 100644 McBitFont/CanvasHistory.cs create mode 100644 McBitFont/Resources/redo.png create mode 100644 McBitFont/Resources/undo.png create mode 100644 icons/redo.png create mode 100644 icons/undo.png diff --git a/McBitFont/CanvasHistory.cs b/McBitFont/CanvasHistory.cs new file mode 100644 index 0000000..a096334 --- /dev/null +++ b/McBitFont/CanvasHistory.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + + +namespace McBitFont { + internal class CanvasHistory { + private List stack; + public int Depth { get; set; } + public int Index { get; set; } + public int Count { + get { return stack.Count; } + } + public int Redos { + get { + return Count - Index - 1; + } + } + public int Undos { + get { + return Index + 1; + } + } + + + public CanvasHistory(int depth = 5, int index = -1) { + Depth = depth; + Index = index; + stack = []; + } + + public void Clear() { + stack.Clear(); + Index = -1; + } + + public void Add(bool[,] data, bool useIndex = true) { + if (Index < Count - 1) { + stack.RemoveRange(Index + 1, Count - Index - 1); + } + stack.Add(data); + if (useIndex) { + if (Count > Depth) stack.RemoveAt(0); + else Index++; + } + } + + public void ApplyAdded() { + if (Count > Depth) + while (Count > Depth) stack.RemoveAt(0); + else Index = Count - 1; + } + + public void Remove(bool useIndex = true) { + stack.RemoveAt(stack.Count - 1); + if (useIndex) Index--; + } + + public void Undo(ref bool[,] data) { + if (Index < 0) return; + data = stack.ElementAt(Index); + Index--; + } + + public void Redo(ref bool[,] data) { + if (Index >= Count - 1) return; + Index++; + data = stack.ElementAt(Index); + } + } +} diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index b25df56..83a1b9e 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -57,6 +57,8 @@ saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + undoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + redoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); prependSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -83,6 +85,7 @@ toolTip1 = new System.Windows.Forms.ToolTip(components); chkLeftSide = new System.Windows.Forms.CheckBox(); chkTopSide = new System.Windows.Forms.CheckBox(); + label3 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -469,17 +472,37 @@ // // editToolStripMenuItem // - editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { copyToolStripMenuItem, pasteToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, applyToolStripMenuItem }); + editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { undoToolStripMenuItem, redoToolStripMenuItem, copyToolStripMenuItem, pasteToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, applyToolStripMenuItem }); editToolStripMenuItem.Name = "editToolStripMenuItem"; - editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); + editToolStripMenuItem.Size = new System.Drawing.Size(122, 20); editToolStripMenuItem.Text = "Edit"; + editToolStripMenuItem.DropDownOpening += editToolStripMenuItem_DropDownOpening; + // + // undoToolStripMenuItem + // + undoToolStripMenuItem.Image = Properties.Resources.arrow_undo; + undoToolStripMenuItem.Name = "undoToolStripMenuItem"; + undoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z; + undoToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + undoToolStripMenuItem.Text = "Undo"; + undoToolStripMenuItem.ToolTipText = "Undo last canvas change"; + undoToolStripMenuItem.Click += undoToolStripMenuItem_Click; + // + // redoToolStripMenuItem + // + redoToolStripMenuItem.Image = Properties.Resources.arrow_redo; + redoToolStripMenuItem.Name = "redoToolStripMenuItem"; + redoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y; + redoToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + redoToolStripMenuItem.Text = "Redo"; + redoToolStripMenuItem.ToolTipText = "Redo canvas change"; // // copyToolStripMenuItem // copyToolStripMenuItem.Enabled = false; copyToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Page_copy_16; copyToolStripMenuItem.Name = "copyToolStripMenuItem"; - copyToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+C"; + copyToolStripMenuItem.ShortcutKeyDisplayString = ""; copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C; copyToolStripMenuItem.Size = new System.Drawing.Size(215, 22); copyToolStripMenuItem.Text = "Copy"; @@ -491,7 +514,7 @@ pasteToolStripMenuItem.Enabled = false; pasteToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Page_paste_16; pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; - pasteToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+V"; + pasteToolStripMenuItem.ShortcutKeyDisplayString = ""; pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V; pasteToolStripMenuItem.Size = new System.Drawing.Size(215, 22); pasteToolStripMenuItem.Text = "Paste"; @@ -515,7 +538,7 @@ appendSymbolToolStripMenuItem.Enabled = false; appendSymbolToolStripMenuItem.Image = Properties.Resources.action_add; appendSymbolToolStripMenuItem.Name = "appendSymbolToolStripMenuItem"; - appendSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+End"; + appendSymbolToolStripMenuItem.ShortcutKeyDisplayString = ""; appendSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.End; appendSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); appendSymbolToolStripMenuItem.Text = "Append symbol"; @@ -527,7 +550,7 @@ removeSymbolToolStripMenuItem.Enabled = false; removeSymbolToolStripMenuItem.Image = Properties.Resources.action_remove; removeSymbolToolStripMenuItem.Name = "removeSymbolToolStripMenuItem"; - removeSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Del"; + removeSymbolToolStripMenuItem.ShortcutKeyDisplayString = ""; removeSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Delete; removeSymbolToolStripMenuItem.Size = new System.Drawing.Size(215, 22); removeSymbolToolStripMenuItem.Text = "Remove symbol"; @@ -738,11 +761,21 @@ toolTip1.SetToolTip(chkTopSide, "Height changes will be made on Top/Bottom side"); chkTopSide.UseVisualStyleBackColor = true; // + // label3 + // + label3.AutoSize = true; + label3.Location = new System.Drawing.Point(645, 78); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(17, 15); + label3.TabIndex = 21; + label3.Text = "h:"; + // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; ClientSize = new System.Drawing.Size(915, 647); + Controls.Add(label3); Controls.Add(chkTopSide); Controls.Add(chkLeftSide); Controls.Add(btnBaseline); @@ -841,6 +874,9 @@ private System.Windows.Forms.ToolStripMenuItem removeBeforeToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem removeAfterToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem makeVarWidthToolStripMenuItem; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ToolStripMenuItem undoToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem redoToolStripMenuItem; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 6b524c3..0ec7e42 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -48,6 +48,7 @@ namespace McBitFont { private FrameMiniature f; public List frames = new List(); + private CanvasHistory history = new(); private int cellSize = 10; public int dotWidth, dotHeight; private int pixelOffset = 5; @@ -277,7 +278,10 @@ namespace McBitFont { dotPanel.Refresh(); } + private bool mouseDown = false; + private bool fChanged = false; private void dotPanel_MouseMove(object sender, MouseEventArgs e) { + // Moving baseline Rectangle rect1, rect2; if (set_base) { @@ -299,15 +303,34 @@ namespace McBitFont { return; } } + if (e.X >= w || e.X <= pixelOffset || e.Y >= h || e.Y <= pixelOffset) return; + // Change coordinates in the panel int i = (e.X - pixelOffset + hScroll.Value) / (cellSize + gap); int j = (e.Y - pixelOffset + vScroll.Value) / (cellSize + gap); label5.Text = i.ToString() + ',' + j.ToString(); + // history management + if (e.Button != MouseButtons.None && !mouseDown) { + mouseDown = true; + history.Add(f.data, false); + label3.Text += history.Count.ToString(); + } + if (e.Button == MouseButtons.None && mouseDown) { + mouseDown = false; + if (!fChanged) { + history.Remove(false); + } else { + fChanged = false; + history.ApplyAdded(); + } + label3.Text += history.Count.ToString(); + } + + // Paint black / white if (e.Button == MouseButtons.Left && !f.data[i, j]) { - Graphics g = dotPanel.CreateGraphics(); - SolidBrush sbb = new SolidBrush(Color.Black); f.data[i, j] = true; + fChanged = true; int x = pixelOffset + i * (cellSize + gap) - hScroll.Value; int y = pixelOffset + j * (cellSize + gap) - vScroll.Value; modified = true; @@ -315,9 +338,8 @@ namespace McBitFont { dotPanel.Invalidate(rect1); } if (e.Button == MouseButtons.Right && f.data[i, j]) { - Graphics g = dotPanel.CreateGraphics(); - SolidBrush sbw = new SolidBrush(Color.White); f.data[i, j] = false; + fChanged = true; int x = pixelOffset + i * (cellSize + gap) - hScroll.Value; int y = pixelOffset + j * (cellSize + gap) - vScroll.Value; modified = true; @@ -616,6 +638,10 @@ namespace McBitFont { return; //miniList.Items[0].Selected = true; } + + // Clear history + history.Clear(); + var sel = miniList.SelectedItems[0]; int code = Convert.ToInt32(sel.ImageKey); FrameMiniature ff = copyFrame(frames.Find(x => x.code == code)); @@ -874,5 +900,18 @@ namespace McBitFont { lblType.Text = "Variable width / Single"; prjModified = true; } + + private void editToolStripMenuItem_DropDownOpening(object sender, EventArgs e) { + undoToolStripMenuItem.Enabled = history.Undos > 0; + redoToolStripMenuItem.Enabled = history.Redos > 0; + + undoToolStripMenuItem.Text = "Undo (" + history.Undos + ")"; + redoToolStripMenuItem.Text = "Redo (" + history.Redos + ")"; + } + + private void undoToolStripMenuItem_Click(object sender, EventArgs e) { + history.Undo(ref f.data); + dotPanel.Refresh(); + } } } diff --git a/McBitFont/McBitFont.csproj b/McBitFont/McBitFont.csproj index be1b34e..123c225 100644 --- a/McBitFont/McBitFont.csproj +++ b/McBitFont/McBitFont.csproj @@ -48,4 +48,28 @@ false + + + True + True + Resources.resx + + + True + True + Settings.settings + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + \ No newline at end of file diff --git a/McBitFont/Properties/Resources.Designer.cs b/McBitFont/Properties/Resources.Designer.cs index dc105bc..414bacb 100644 --- a/McBitFont/Properties/Resources.Designer.cs +++ b/McBitFont/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -13,12 +13,12 @@ namespace McBitFont.Properties { /// - /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// A strongly-typed resource class, for looking up localized strings, etc. /// - // Этот класс создан автоматически классом StronglyTypedResourceBuilder - // с помощью такого средства, как ResGen или Visual Studio. - // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen - // с параметром /str или перестройте свой проект VS. + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] @@ -33,7 +33,7 @@ namespace McBitFont.Properties { } /// - /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ namespace McBitFont.Properties { } /// - /// Перезаписывает свойство CurrentUICulture текущего потока для всех - /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { @@ -61,7 +61,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap action_add { get { @@ -71,7 +71,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap action_check { get { @@ -81,7 +81,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap action_remove { get { @@ -91,7 +91,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap arrow_back { get { @@ -101,7 +101,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap arrow_down { get { @@ -111,7 +111,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap arrow_next { get { @@ -121,7 +121,17 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrow_redo { + get { + object obj = ResourceManager.GetObject("arrow_redo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap arrow_top { get { @@ -131,7 +141,17 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrow_undo { + get { + object obj = ResourceManager.GetObject("arrow_undo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Disk_16 { get { @@ -141,7 +161,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Door_out_16 { get { @@ -151,7 +171,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Folder_16 { get { @@ -161,7 +181,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Folder_page_16 { get { @@ -171,7 +191,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Page_copy_16 { get { @@ -181,7 +201,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Page_paste_16 { get { @@ -191,7 +211,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Page_white_16 { get { @@ -201,7 +221,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Shape_flip_horizontal_16 { get { @@ -211,7 +231,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Famfamfam_Silk_Shape_flip_vertical_16 { get { @@ -221,7 +241,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap file { get { @@ -231,7 +251,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap folder_open { get { @@ -241,7 +261,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap icon { get { @@ -251,7 +271,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap icon_32 { get { @@ -261,7 +281,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap icon_64 { get { @@ -271,7 +291,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap Ionic_Ionicons_Invert_mode_outline_16 { get { @@ -281,7 +301,7 @@ namespace McBitFont.Properties { } /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap save { get { diff --git a/McBitFont/Properties/Resources.resx b/McBitFont/Properties/Resources.resx index cf25ab1..67bb33b 100644 --- a/McBitFont/Properties/Resources.resx +++ b/McBitFont/Properties/Resources.resx @@ -118,6 +118,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\icon_32.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 @@ -127,32 +130,32 @@ ..\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\arrow_back.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\Famfamfam-Silk-Page-white.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\icon.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\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-Shape-flip-horizontal.16.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\Famfamfam-Silk-Folder.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\action_add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -160,31 +163,34 @@ ..\Resources\folder_open.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-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\file.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\Famfamfam-Silk-Shape-flip-vertical.16.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\Famfamfam-Silk-Folder.16.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\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\icon_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\redo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\undo.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/Properties/Settings.Designer.cs b/McBitFont/Properties/Settings.Designer.cs index bfdecbb..f3dca9d 100644 --- a/McBitFont/Properties/Settings.Designer.cs +++ b/McBitFont/Properties/Settings.Designer.cs @@ -9,14 +9,14 @@ //------------------------------------------------------------------------------ namespace McBitFont.Properties { - - + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - + public static Settings Default { get { return defaultInstance; diff --git a/McBitFont/Resources/redo.png b/McBitFont/Resources/redo.png new file mode 100644 index 0000000000000000000000000000000000000000..f350a239f21f8227c67359e81c2a1caf33e91d25 GIT binary patch literal 561 zcmV-10?z%3P)tmR-}V(R18_c_n+(I^Cy zV?+-`evd|>e?OjO|9kf|`2XLZD%^$v+`QKDaQPp%4l%sn+WwV8RyX(k-f8nu3=nY3 zcm8qb#AX4vLQW11M+PQ#Zmcf)_v16eyR}vS|NZ*1p9Ll;=$w`K_uI#55?O0Fn79Rr z@ficd-@lBE|NsAI5O6Os{(0}jNs0W;%#6&e4FA4;VEA@*7sK!8HyBvOlo@y|qH%hG zg@J*A;m@19^F?B(G5`Pdjp6;a4u)UPuRmetl{n16CpPo<)!hepETS3y|NhSKZbJjZ zpSKS$uqnAXzu!^+j)8%Jfq~CC&x7A3@1Jb*)&HDY&Y$`0GjoySncFz{zf{@&{~W5e z-}&q_3enR61DApSQIV)g|GA6;ZVLo72#}hP7&w$IUvcSp++_%DV8f)RkgC`scqK-jt1lw8gK|NqBKiKGGm<&<%97+!s500000NkvXXu0mjf9#9PK literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/undo.png b/McBitFont/Resources/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..1bf10d641650866255e50aab669691c0ae924e67 GIT binary patch literal 566 zcmV-60?GY}P)4Y#~tLP23BUV`5-tCK!)Q?A#1o`aTR2S!+1| zetxq>&^ap+?t=gS|1$_WXC?l?;)O3KmNNW)b(euvQiFj@+l_&VOMv13-`@-`Ci?zm zSF$kwu(RhZBP<~y2cl3w0|O%~C&R0`2@H%vat;iiUZwy2{KA$^Qd362tAgS0m$wY> zH`ZVNa(2BQM!fRbXB2X%+J2WR+y9^2IQT!RTxKq(mh)%X=BxktUGo0%Ip=vWVoS;* zzD3gC?qA#Y>(M#2Kc8MPBFhN|HVXWDbm26YhLg&-YkQC3O=SXZ1p(N^8A2P_xO6=3 zawuEA!fOCN%tmR-}V(R18_c_n+(I^Cy zV?+-`evd|>e?OjO|9kf|`2XLZD%^$v+`QKDaQPp%4l%sn+WwV8RyX(k-f8nu3=nY3 zcm8qb#AX4vLQW11M+PQ#Zmcf)_v16eyR}vS|NZ*1p9Ll;=$w`K_uI#55?O0Fn79Rr z@ficd-@lBE|NsAI5O6Os{(0}jNs0W;%#6&e4FA4;VEA@*7sK!8HyBvOlo@y|qH%hG zg@J*A;m@19^F?B(G5`Pdjp6;a4u)UPuRmetl{n16CpPo<)!hepETS3y|NhSKZbJjZ zpSKS$uqnAXzu!^+j)8%Jfq~CC&x7A3@1Jb*)&HDY&Y$`0GjoySncFz{zf{@&{~W5e z-}&q_3enR61DApSQIV)g|GA6;ZVLo72#}hP7&w$IUvcSp++_%DV8f)RkgC`scqK-jt1lw8gK|NqBKiKGGm<&<%97+!s500000NkvXXu0mjf9#9PK literal 0 HcmV?d00001 diff --git a/icons/undo.png b/icons/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..1bf10d641650866255e50aab669691c0ae924e67 GIT binary patch literal 566 zcmV-60?GY}P)4Y#~tLP23BUV`5-tCK!)Q?A#1o`aTR2S!+1| zetxq>&^ap+?t=gS|1$_WXC?l?;)O3KmNNW)b(euvQiFj@+l_&VOMv13-`@-`Ci?zm zSF$kwu(RhZBP<~y2cl3w0|O%~C&R0`2@H%vat;iiUZwy2{KA$^Qd362tAgS0m$wY> zH`ZVNa(2BQM!fRbXB2X%+J2WR+y9^2IQT!RTxKq(mh)%X=BxktUGo0%Ip=vWVoS;* zzD3gC?qA#Y>(M#2Kc8MPBFhN|HVXWDbm26YhLg&-YkQC3O=SXZ1p(N^8A2P_xO6=3 zawuEA!fOCN% Date: Thu, 22 May 2025 01:10:38 +0300 Subject: [PATCH 10/29] TODO feature: Undo/Redo for canvas changes --- McBitFont/CanvasHistory.cs | 39 +++++++++++------ McBitFont/Form1.Designer.cs | 39 ++++++----------- McBitFont/Form1.cs | 86 +++++++++++++++++++++++++++---------- TODO.txt | 3 +- 4 files changed, 104 insertions(+), 63 deletions(-) diff --git a/McBitFont/CanvasHistory.cs b/McBitFont/CanvasHistory.cs index a096334..887d258 100644 --- a/McBitFont/CanvasHistory.cs +++ b/McBitFont/CanvasHistory.cs @@ -12,11 +12,13 @@ namespace McBitFont { public int Depth { get; set; } public int Index { get; set; } public int Count { - get { return stack.Count; } + get { return stack.Count - 1; } } public int Redos { get { - return Count - Index - 1; + var r = Count - Index - 1; + + return r < 0 ? 0 : r; } } public int Undos { @@ -26,9 +28,9 @@ namespace McBitFont { } - public CanvasHistory(int depth = 5, int index = -1) { + public CanvasHistory(int depth = 50) { Depth = depth; - Index = index; + Index = -1; stack = []; } @@ -37,38 +39,47 @@ namespace McBitFont { Index = -1; } - public void Add(bool[,] data, bool useIndex = true) { + public void AddPre(MainForm.FrameMiniature f, bool useIndex = true) { + if (Count < 0) stack.Add(new bool[f.width, f.height]); if (Index < Count - 1) { stack.RemoveRange(Index + 1, Count - Index - 1); } - stack.Add(data); + bool[,] d = new bool[f.width, f.height]; + Array.Copy(f.data, d, f.data.Length); + stack.Insert(Count, d); if (useIndex) { if (Count > Depth) stack.RemoveAt(0); else Index++; } } + public void AddPost(MainForm.FrameMiniature f) { + var d = stack.ElementAt(Count); + Array.Copy(f.data, d, f.data.Length); + } + public void ApplyAdded() { - if (Count > Depth) - while (Count > Depth) stack.RemoveAt(0); - else Index = Count - 1; + while (Count > Depth) stack.RemoveAt(0); + Index = Count - 1; } public void Remove(bool useIndex = true) { - stack.RemoveAt(stack.Count - 1); + stack.RemoveAt(Count - 1); if (useIndex) Index--; } - public void Undo(ref bool[,] data) { + public void Undo(MainForm.FrameMiniature f) { if (Index < 0) return; - data = stack.ElementAt(Index); + var d = stack.ElementAt(Index); + Array.Copy(d, f.data, d.Length); Index--; } - public void Redo(ref bool[,] data) { + public void Redo(MainForm.FrameMiniature f) { if (Index >= Count - 1) return; Index++; - data = stack.ElementAt(Index); + var d = stack.ElementAt(Index + 1); + Array.Copy(d, f.data, d.Length); } } } diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 83a1b9e..d38543d 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -85,7 +85,6 @@ toolTip1 = new System.Windows.Forms.ToolTip(components); chkLeftSide = new System.Windows.Forms.CheckBox(); chkTopSide = new System.Windows.Forms.CheckBox(); - label3 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -346,7 +345,7 @@ miniList.TabStop = false; miniList.TileSize = new System.Drawing.Size(50, 50); miniList.UseCompatibleStateImageBehavior = false; - miniList.SelectedIndexChanged += miniList_SelectedIndexChanged; + miniList.SelectedIndexChanged += MiniList_SelectedIndexChanged; // // ilMiniatures // @@ -457,7 +456,7 @@ saveAsToolStripMenuItem.Size = new System.Drawing.Size(184, 22); saveAsToolStripMenuItem.Text = "Save as"; saveAsToolStripMenuItem.ToolTipText = "Save changes to another file"; - saveAsToolStripMenuItem.Click += saveToolStripMenuItem_Click; + saveAsToolStripMenuItem.Click += SaveToolStripMenuItem_Click; // // exitToolStripMenuItem // @@ -474,7 +473,7 @@ // editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { undoToolStripMenuItem, redoToolStripMenuItem, copyToolStripMenuItem, pasteToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, applyToolStripMenuItem }); editToolStripMenuItem.Name = "editToolStripMenuItem"; - editToolStripMenuItem.Size = new System.Drawing.Size(122, 20); + editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); editToolStripMenuItem.Text = "Edit"; editToolStripMenuItem.DropDownOpening += editToolStripMenuItem_DropDownOpening; // @@ -496,6 +495,7 @@ redoToolStripMenuItem.Size = new System.Drawing.Size(215, 22); redoToolStripMenuItem.Text = "Redo"; redoToolStripMenuItem.ToolTipText = "Redo canvas change"; + redoToolStripMenuItem.Click += redoToolStripMenuItem_Click; // // copyToolStripMenuItem // @@ -607,7 +607,7 @@ // ClearToolStripMenuItem // ClearToolStripMenuItem.Name = "ClearToolStripMenuItem"; - ClearToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+W"; + ClearToolStripMenuItem.ShortcutKeyDisplayString = ""; ClearToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W; ClearToolStripMenuItem.Size = new System.Drawing.Size(197, 22); ClearToolStripMenuItem.Text = "Clear canvas"; @@ -618,7 +618,7 @@ // shiftUpToolStripMenuItem.Image = Properties.Resources.arrow_top; shiftUpToolStripMenuItem.Name = "shiftUpToolStripMenuItem"; - shiftUpToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Up"; + shiftUpToolStripMenuItem.ShortcutKeyDisplayString = ""; shiftUpToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Up; shiftUpToolStripMenuItem.Size = new System.Drawing.Size(197, 22); shiftUpToolStripMenuItem.Text = "Shift Up"; @@ -629,7 +629,7 @@ // shiftDownToolStripMenuItem.Image = Properties.Resources.arrow_down; shiftDownToolStripMenuItem.Name = "shiftDownToolStripMenuItem"; - shiftDownToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Down"; + shiftDownToolStripMenuItem.ShortcutKeyDisplayString = ""; shiftDownToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Down; shiftDownToolStripMenuItem.Size = new System.Drawing.Size(197, 22); shiftDownToolStripMenuItem.Text = "Shift Down"; @@ -640,7 +640,7 @@ // shiftLeftToolStripMenuItem.Image = Properties.Resources.arrow_back; shiftLeftToolStripMenuItem.Name = "shiftLeftToolStripMenuItem"; - shiftLeftToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Left"; + shiftLeftToolStripMenuItem.ShortcutKeyDisplayString = ""; shiftLeftToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Left; shiftLeftToolStripMenuItem.Size = new System.Drawing.Size(197, 22); shiftLeftToolStripMenuItem.Text = "Shift left"; @@ -651,7 +651,7 @@ // shiftRightToolStripMenuItem.Image = Properties.Resources.arrow_next; shiftRightToolStripMenuItem.Name = "shiftRightToolStripMenuItem"; - shiftRightToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Right"; + shiftRightToolStripMenuItem.ShortcutKeyDisplayString = ""; shiftRightToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Right; shiftRightToolStripMenuItem.Size = new System.Drawing.Size(197, 22); shiftRightToolStripMenuItem.Text = "Shift Right"; @@ -662,7 +662,7 @@ // invertToolStripMenuItem.Image = Properties.Resources.Ionic_Ionicons_Invert_mode_outline_16; invertToolStripMenuItem.Name = "invertToolStripMenuItem"; - invertToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+I"; + invertToolStripMenuItem.ShortcutKeyDisplayString = ""; invertToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I; invertToolStripMenuItem.Size = new System.Drawing.Size(197, 22); invertToolStripMenuItem.Text = "Invert"; @@ -673,8 +673,7 @@ // mirrorXToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Shape_flip_horizontal_16; mirrorXToolStripMenuItem.Name = "mirrorXToolStripMenuItem"; - mirrorXToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+X"; - mirrorXToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X; + mirrorXToolStripMenuItem.ShortcutKeyDisplayString = ""; mirrorXToolStripMenuItem.Size = new System.Drawing.Size(197, 22); mirrorXToolStripMenuItem.Text = "Mirror X"; mirrorXToolStripMenuItem.ToolTipText = "Mirror by X axis (horizontal)"; @@ -684,8 +683,7 @@ // mirrorYToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Shape_flip_vertical_16; mirrorYToolStripMenuItem.Name = "mirrorYToolStripMenuItem"; - mirrorYToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Y"; - mirrorYToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y; + mirrorYToolStripMenuItem.ShortcutKeyDisplayString = ""; mirrorYToolStripMenuItem.Size = new System.Drawing.Size(197, 22); mirrorYToolStripMenuItem.Text = "Mirror Y"; mirrorYToolStripMenuItem.ToolTipText = "Mirror by Y axis (vertical)"; @@ -694,7 +692,7 @@ // exportToolStripMenuItem // exportToolStripMenuItem.Name = "exportToolStripMenuItem"; - exportToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+E"; + exportToolStripMenuItem.ShortcutKeyDisplayString = ""; exportToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E; exportToolStripMenuItem.Size = new System.Drawing.Size(197, 22); exportToolStripMenuItem.Text = "Export"; @@ -761,21 +759,11 @@ toolTip1.SetToolTip(chkTopSide, "Height changes will be made on Top/Bottom side"); chkTopSide.UseVisualStyleBackColor = true; // - // label3 - // - label3.AutoSize = true; - label3.Location = new System.Drawing.Point(645, 78); - label3.Name = "label3"; - label3.Size = new System.Drawing.Size(17, 15); - label3.TabIndex = 21; - label3.Text = "h:"; - // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; ClientSize = new System.Drawing.Size(915, 647); - Controls.Add(label3); Controls.Add(chkTopSide); Controls.Add(chkLeftSide); Controls.Add(btnBaseline); @@ -874,7 +862,6 @@ private System.Windows.Forms.ToolStripMenuItem removeBeforeToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem removeAfterToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem makeVarWidthToolStripMenuItem; - private System.Windows.Forms.Label label3; private System.Windows.Forms.ToolStripMenuItem undoToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem redoToolStripMenuItem; } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 0ec7e42..666e0fa 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -68,7 +68,7 @@ namespace McBitFont { public MainForm() { InitializeComponent(); - this.dotPanel.MouseWheel += new MouseEventHandler(this.dotPanel_MouseWheel); + this.dotPanel.MouseWheel += new MouseEventHandler(this.DotPanel_MouseWheel); } private void Form1_Load(object sender, EventArgs e) { @@ -89,7 +89,7 @@ namespace McBitFont { miniList.Refresh(); miniList.Items[0].Selected = true; miniList.Select(); - f = copyFrame(frames.Find(x => x.code == 0)); + f = CopyFrame(frames.Find(x => x.code == 0)); ListViewItem_SetSpacing(miniList, 50 + 2, 50 + 22); @@ -99,7 +99,7 @@ namespace McBitFont { // Chek for arguments if (Environment.GetCommandLineArgs().Length > 1) { - loadProject(Environment.GetCommandLineArgs()[1]); + LoadProject(Environment.GetCommandLineArgs()[1]); } Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); @@ -112,7 +112,7 @@ namespace McBitFont { return (int)(((ushort)lowPart) | (uint)(highPart << 16)); } - FrameMiniature copyFrame(FrameMiniature frame) { + FrameMiniature CopyFrame(FrameMiniature frame) { var ff = new FrameMiniature(frame.code, frame.width, frame.height); Array.Copy(frame.data, ff.data, frame.data.Length); return ff; @@ -124,7 +124,7 @@ namespace McBitFont { SendMessage(listview.Handle, LVM_SETICONSPACING, IntPtr.Zero, (IntPtr)MakeLong(leftPadding, topPadding)); } - private void dotPanel_MouseWheel(object sender, MouseEventArgs e) { + private void DotPanel_MouseWheel(object sender, MouseEventArgs e) { int t = e.Delta / 120; if (e.Delta == 0) return; if (ModifierKeys.HasFlag(Keys.Control)) { @@ -217,6 +217,9 @@ namespace McBitFont { w = pixelOffset + dotWidth * (cellSize + gap); h = pixelOffset + dotHeight * (cellSize + gap); cbZoom_SelectedIndexChanged(cbZoom, null); + + // Re-create history object + history = new CanvasHistory(); } private void cbZoom_SelectedIndexChanged(object sender, EventArgs e) { @@ -248,6 +251,8 @@ namespace McBitFont { private void btnShiftLeft_Click(object sender, EventArgs e) { bool c; + + history.AddPre(f); for (int j = 0; j < dotHeight; j++) { c = f.data[0, j]; for (int i = 0; i < dotWidth; i++) { @@ -258,12 +263,16 @@ namespace McBitFont { } } } + history.AddPost(f); + CheckHistoryButtons(); modified = true; dotPanel.Refresh(); } private void btnShiftRight_Click(object sender, EventArgs e) { bool c; + + history.AddPre(f); for (int j = 0; j < dotHeight; j++) { c = f.data[dotWidth - 1, j]; for (int i = dotWidth - 1; i >= 0; i--) { @@ -274,6 +283,8 @@ namespace McBitFont { } } } + history.AddPost(f); + CheckHistoryButtons(); modified = true; dotPanel.Refresh(); } @@ -313,8 +324,7 @@ namespace McBitFont { // history management if (e.Button != MouseButtons.None && !mouseDown) { mouseDown = true; - history.Add(f.data, false); - label3.Text += history.Count.ToString(); + history.AddPre(f, false); } if (e.Button == MouseButtons.None && mouseDown) { mouseDown = false; @@ -323,8 +333,9 @@ namespace McBitFont { } else { fChanged = false; history.ApplyAdded(); + history.AddPost(f); } - label3.Text += history.Count.ToString(); + CheckHistoryButtons(); } // Paint black / white @@ -351,6 +362,8 @@ namespace McBitFont { private void btnShiftUp_Click(object sender, EventArgs e) { bool c; + + history.AddPre(f); for (int i = 0; i < dotWidth; i++) { c = f.data[i, 0]; for (int j = 0; j < dotHeight; j++) { @@ -361,12 +374,16 @@ namespace McBitFont { } } } + history.AddPost(f); + CheckHistoryButtons(); modified = true; dotPanel.Refresh(); } private void btnShiftDown_Click(object sender, EventArgs e) { bool c; + + history.AddPre(f); for (int i = 0; i < dotWidth; i++) { c = f.data[i, dotHeight - 1]; for (int j = dotHeight - 1; j >= 0; j--) { @@ -377,16 +394,21 @@ namespace McBitFont { } } } + history.AddPost(f); + CheckHistoryButtons(); modified = true; dotPanel.Refresh(); } private void btnInvert_Click(object sender, EventArgs e) { + history.AddPre(f); for (int i = 0; i < dotWidth; i++) { for (int j = 0; j < dotHeight; j++) { f.data[i, j] = !f.data[i, j]; } } + history.AddPost(f); + CheckHistoryButtons(); modified = true; dotPanel.Refresh(); } @@ -395,6 +417,7 @@ namespace McBitFont { int a, b, j; bool c; + history.AddPre(f); for (j = 0; j < dotHeight; j++) { a = 0; b = dotWidth - 1; @@ -406,6 +429,8 @@ namespace McBitFont { b--; } } + history.AddPost(f); + CheckHistoryButtons(); modified = true; dotPanel.Refresh(); } @@ -414,6 +439,7 @@ namespace McBitFont { int a, b, i; bool c; + history.AddPre(f); for (i = 0; i < dotWidth; i++) { a = 0; b = dotHeight - 1; @@ -425,6 +451,8 @@ namespace McBitFont { b--; } } + history.AddPost(f); + CheckHistoryButtons(); modified = true; dotPanel.Refresh(); } @@ -434,7 +462,7 @@ namespace McBitFont { if (MessageBox.Show("Current symbol is modified.\nDo you want to save the changes?", "Symbol was modified!", MessageBoxButtons.YesNo) == DialogResult.Yes) { saveFrame(); } else { - f = copyFrame(frames.Find(x => x.code == f.code)); + f = CopyFrame(frames.Find(x => x.code == f.code)); } modified = false; } @@ -609,7 +637,7 @@ namespace McBitFont { var sss = decodeSymbol(ff.code); miniList.Items.Add(s, s + ' ' + append + sss, s); } - f = copyFrame(frames.First()); + f = CopyFrame(frames.First()); dotPanel.Refresh(); miniList.Refresh(); form.Dispose(); @@ -626,7 +654,7 @@ namespace McBitFont { } } - private void miniList_SelectedIndexChanged(object sender, EventArgs e) { + private void MiniList_SelectedIndexChanged(object sender, EventArgs e) { if (miniList.FocusedItem == null) return; checkModifiedFrame(); if (miniList.SelectedItems.Count == 0) { @@ -644,7 +672,7 @@ namespace McBitFont { var sel = miniList.SelectedItems[0]; int code = Convert.ToInt32(sel.ImageKey); - FrameMiniature ff = copyFrame(frames.Find(x => x.code == code)); + FrameMiniature ff = CopyFrame(frames.Find(x => x.code == code)); nudX.Value = ff.width; nudY.Value = ff.height; f = ff; @@ -671,14 +699,14 @@ namespace McBitFont { else pasteToolStripMenuItem.Enabled = false; } - private void saveToolStripMenuItem_Click(object sender, EventArgs e) { + private void SaveToolStripMenuItem_Click(object sender, EventArgs e) { checkModifiedFrame(); if (dlgSave.ShowDialog() == DialogResult.OK) { - saveProject(dlgSave.FileName); + SaveProject(dlgSave.FileName); } } - private void loadProject(string filename) { + private void LoadProject(string filename) { SaveBlock sav; using (FileStream fs = File.Open(filename, FileMode.Open)) { @@ -706,7 +734,7 @@ namespace McBitFont { dotResize((int)nudX.Value, (int)nudY.Value); nudX.ValueChanged += nudX_ValueChanged; nudY.ValueChanged += nudY_ValueChanged; - f = copyFrame(frames.First()); + f = CopyFrame(frames.First()); dotPanel.Refresh(); miniList.Refresh(); modified = false; @@ -719,7 +747,7 @@ namespace McBitFont { fbuffer = false; } - private void saveProject(string filename) { + private void SaveProject(string filename) { SaveBlock sav; sav.monospaced = monospaced; sav.frames = frames; @@ -744,7 +772,7 @@ namespace McBitFont { } } if (dlgOpen.ShowDialog() == DialogResult.OK) { - loadProject(dlgOpen.FileName); + LoadProject(dlgOpen.FileName); } } @@ -792,7 +820,7 @@ namespace McBitFont { private void copyToolStripMenuItem_Click(object sender, EventArgs e) { fbuffer = true; - fbuf = copyFrame(f); + fbuf = CopyFrame(f); pasteToolStripMenuItem.Enabled = true; } @@ -838,13 +866,16 @@ namespace McBitFont { saveAsToolStripMenuItem.PerformClick(); } else { checkModifiedFrame(); - saveProject(prjFileName); + SaveProject(prjFileName); } } private void btnClear_Click(object sender, EventArgs e) { + history.AddPre(f); Array.Clear(f.data, 0, f.data.Length); + history.AddPost(f); + CheckHistoryButtons(); modified = true; dotPanel.Refresh(); } @@ -901,7 +932,7 @@ namespace McBitFont { prjModified = true; } - private void editToolStripMenuItem_DropDownOpening(object sender, EventArgs e) { + public void CheckHistoryButtons() { undoToolStripMenuItem.Enabled = history.Undos > 0; redoToolStripMenuItem.Enabled = history.Redos > 0; @@ -909,9 +940,20 @@ namespace McBitFont { redoToolStripMenuItem.Text = "Redo (" + history.Redos + ")"; } + private void editToolStripMenuItem_DropDownOpening(object sender, EventArgs e) { + CheckHistoryButtons(); + } + private void undoToolStripMenuItem_Click(object sender, EventArgs e) { - history.Undo(ref f.data); + history.Undo(f); dotPanel.Refresh(); + CheckHistoryButtons(); + } + + private void redoToolStripMenuItem_Click(object sender, EventArgs e) { + history.Redo(f); + dotPanel.Refresh(); + CheckHistoryButtons(); } } } diff --git a/TODO.txt b/TODO.txt index c9a6121..32940e3 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,5 +1,6 @@ Application: V Migrate from .Net Framework 4.7 to .NET 9 +V New Save file format! Use McBitFont v1.7 to convert old save files to the new format. V Better quality pictures in symbol list Functionality: @@ -8,7 +9,7 @@ V Delete symbols before/after selected - Shift all symbols on code line (change symbol codes) - Specify starting code (extends the shift) V Ability to make monospaced font a variable width one -- Undo/Redo +V Undo/Redo for canvas changes - Image import from a file - Import from a text array - Rectangle selection to mass-paint, shift and mirror pixels From ca8b53ba742a04e0ae44735764f5db5d8ca75b77 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Thu, 22 May 2025 01:31:16 +0300 Subject: [PATCH 11/29] TODO feature: Spinning cursor when application is busy; small history fix --- McBitFont/Form1.cs | 14 ++++++++++++-- TODO.txt | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 666e0fa..3ea9f9c 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -150,6 +150,7 @@ namespace McBitFont { } private void nudX_ValueChanged(object sender, EventArgs e) { + Cursor.Current = Cursors.WaitCursor; if (monospaced) { Bitmap bmp; for (int i = 0; i < frames.Count; i++) { @@ -165,9 +166,11 @@ namespace McBitFont { } prjModified = true; dotResize((int)nudX.Value, dotHeight); + Cursor.Current = Cursors.Default; } private void nudY_ValueChanged(object sender, EventArgs e) { + Cursor.Current = Cursors.WaitCursor; Bitmap bmp; for (int i = 0; i < frames.Count; i++) { frames[i] = frameResize(frames[i], frames[i].width, (int)nudY.Value); @@ -180,6 +183,7 @@ namespace McBitFont { if (nudY.Focused) modified = true; prjModified = true; dotResize(dotWidth, (int)nudY.Value); + Cursor.Current = Cursors.Default; } private FrameMiniature frameResize(FrameMiniature ff, int neww, int newh) { @@ -589,6 +593,8 @@ namespace McBitFont { } New form = new New(this); if (form.ShowDialog() == DialogResult.OK) { + Cursor.Current = Cursors.WaitCursor; + frames.Clear(); miniList.Clear(); ilMiniatures.Images.Clear(); @@ -638,8 +644,6 @@ namespace McBitFont { miniList.Items.Add(s, s + ' ' + append + sss, s); } f = CopyFrame(frames.First()); - dotPanel.Refresh(); - miniList.Refresh(); form.Dispose(); baseline = 0; @@ -650,7 +654,13 @@ namespace McBitFont { modified = false; checkForAdd(); fbuffer = false; + miniList.Refresh(); dotPanel.Refresh(); + + // Re-create history object + history = new CanvasHistory(); + + Cursor.Current = Cursors.Default; } } diff --git a/TODO.txt b/TODO.txt index 32940e3..c0b9397 100644 --- a/TODO.txt +++ b/TODO.txt @@ -2,6 +2,7 @@ Application: V Migrate from .Net Framework 4.7 to .NET 9 V New Save file format! Use McBitFont v1.7 to convert old save files to the new format. V Better quality pictures in symbol list +V Spinning cursor when application is busy Functionality: - Context menu in symbol navigator From 8c08c9a8976ad187bd2ad0b56e8ff9a856cd8a84 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Thu, 22 May 2025 06:33:10 +0300 Subject: [PATCH 12/29] TODO features: Application: - Change Menu icons - Re-arranged menu items Functionality: - Shift all symbols on code line (change symbol codes) - Specify starting code (extends the shift) --- McBitFont/CodeShift.Designer.cs | 175 ++++++++++++++++++ McBitFont/CodeShift.cs | 99 ++++++++++ McBitFont/CodeShift.resx | 120 ++++++++++++ McBitFont/Form1.Designer.cs | 133 +++++++------ McBitFont/Form1.cs | 43 +++++ McBitFont/McBitFont.csproj | 6 + McBitFont/Properties/Resources.Designer.cs | 140 ++++++++++++++ McBitFont/Properties/Resources.resx | 42 +++++ McBitFont/Resources/add.png | Bin 0 -> 733 bytes McBitFont/Resources/arrow_left.png | Bin 0 -> 344 bytes McBitFont/Resources/arrow_redo.png | Bin 0 -> 625 bytes McBitFont/Resources/arrow_right.png | Bin 0 -> 332 bytes McBitFont/Resources/arrow_undo.png | Bin 0 -> 631 bytes McBitFont/Resources/arrow_up.png | Bin 0 -> 372 bytes McBitFont/Resources/asterisk_orange.png | Bin 0 -> 760 bytes McBitFont/Resources/contrast.png | Bin 0 -> 381 bytes McBitFont/Resources/delete.png | Bin 0 -> 715 bytes McBitFont/Resources/package_go.png | Bin 0 -> 898 bytes McBitFont/Resources/shading.png | Bin 0 -> 225 bytes McBitFont/Resources/shape_align_center.png | Bin 0 -> 384 bytes McBitFont/Resources/tick.png | Bin 0 -> 537 bytes TODO.txt | 6 +- .../Famfamfam-Silk-Disk.16.png | Bin .../Famfamfam-Silk-Door-out.16.png | Bin .../Famfamfam-Silk-Folder-page.16.png | Bin .../Famfamfam-Silk-Folder.16.png | Bin .../Famfamfam-Silk-Page-copy.16.png | Bin .../Famfamfam-Silk-Page-paste.16.png | Bin .../Famfamfam-Silk-Page-white-copy.16.png | Bin .../Famfamfam-Silk-Page-white.16.png | Bin ...amfamfam-Silk-Shape-flip-horizontal.16.png | Bin .../Famfamfam-Silk-Shape-flip-vertical.16.png | Bin icons/famfamfam/add.png | Bin 0 -> 733 bytes icons/famfamfam/arrow_down.png | Bin 0 -> 379 bytes icons/famfamfam/arrow_left.png | Bin 0 -> 344 bytes icons/famfamfam/arrow_redo.png | Bin 0 -> 625 bytes icons/famfamfam/arrow_right.png | Bin 0 -> 332 bytes icons/famfamfam/arrow_undo.png | Bin 0 -> 631 bytes icons/famfamfam/arrow_up.png | Bin 0 -> 372 bytes icons/famfamfam/asterisk_orange.png | Bin 0 -> 760 bytes icons/famfamfam/contrast.png | Bin 0 -> 381 bytes icons/famfamfam/package_go.png | Bin 0 -> 898 bytes icons/famfamfam/shading.png | Bin 0 -> 225 bytes icons/famfamfam/shape_align_center.png | Bin 0 -> 384 bytes icons/famfamfam/tick.png | Bin 0 -> 537 bytes 45 files changed, 707 insertions(+), 57 deletions(-) create mode 100644 McBitFont/CodeShift.Designer.cs create mode 100644 McBitFont/CodeShift.cs create mode 100644 McBitFont/CodeShift.resx create mode 100644 McBitFont/Resources/add.png create mode 100644 McBitFont/Resources/arrow_left.png create mode 100644 McBitFont/Resources/arrow_redo.png create mode 100644 McBitFont/Resources/arrow_right.png create mode 100644 McBitFont/Resources/arrow_undo.png create mode 100644 McBitFont/Resources/arrow_up.png create mode 100644 McBitFont/Resources/asterisk_orange.png create mode 100644 McBitFont/Resources/contrast.png create mode 100644 McBitFont/Resources/delete.png create mode 100644 McBitFont/Resources/package_go.png create mode 100644 McBitFont/Resources/shading.png create mode 100644 McBitFont/Resources/shape_align_center.png create mode 100644 McBitFont/Resources/tick.png rename icons/{ => famfamfam}/Famfamfam-Silk-Disk.16.png (100%) rename icons/{ => famfamfam}/Famfamfam-Silk-Door-out.16.png (100%) rename icons/{ => famfamfam}/Famfamfam-Silk-Folder-page.16.png (100%) rename icons/{ => famfamfam}/Famfamfam-Silk-Folder.16.png (100%) rename icons/{ => famfamfam}/Famfamfam-Silk-Page-copy.16.png (100%) rename icons/{ => famfamfam}/Famfamfam-Silk-Page-paste.16.png (100%) rename icons/{ => famfamfam}/Famfamfam-Silk-Page-white-copy.16.png (100%) rename icons/{ => famfamfam}/Famfamfam-Silk-Page-white.16.png (100%) rename icons/{ => famfamfam}/Famfamfam-Silk-Shape-flip-horizontal.16.png (100%) rename icons/{ => famfamfam}/Famfamfam-Silk-Shape-flip-vertical.16.png (100%) create mode 100644 icons/famfamfam/add.png create mode 100644 icons/famfamfam/arrow_down.png create mode 100644 icons/famfamfam/arrow_left.png create mode 100644 icons/famfamfam/arrow_redo.png create mode 100644 icons/famfamfam/arrow_right.png create mode 100644 icons/famfamfam/arrow_undo.png create mode 100644 icons/famfamfam/arrow_up.png create mode 100644 icons/famfamfam/asterisk_orange.png create mode 100644 icons/famfamfam/contrast.png create mode 100644 icons/famfamfam/package_go.png create mode 100644 icons/famfamfam/shading.png create mode 100644 icons/famfamfam/shape_align_center.png create mode 100644 icons/famfamfam/tick.png diff --git a/McBitFont/CodeShift.Designer.cs b/McBitFont/CodeShift.Designer.cs new file mode 100644 index 0000000..7571850 --- /dev/null +++ b/McBitFont/CodeShift.Designer.cs @@ -0,0 +1,175 @@ +namespace McBitFont { + partial class CodeShift { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() { + rbShiftLeft = new System.Windows.Forms.RadioButton(); + rbShiftRight = new System.Windows.Forms.RadioButton(); + rbSpecify = new System.Windows.Forms.RadioButton(); + lblValue = new System.Windows.Forms.Label(); + nudValue = new System.Windows.Forms.NumericUpDown(); + btnOK = new System.Windows.Forms.Button(); + btnCancel = new System.Windows.Forms.Button(); + lblMessage = new System.Windows.Forms.Label(); + lblRange = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)nudValue).BeginInit(); + SuspendLayout(); + // + // rbShiftLeft + // + rbShiftLeft.AutoSize = true; + rbShiftLeft.Location = new System.Drawing.Point(12, 12); + rbShiftLeft.Name = "rbShiftLeft"; + rbShiftLeft.Size = new System.Drawing.Size(134, 19); + rbShiftLeft.TabIndex = 0; + rbShiftLeft.Text = "Shift Left (towards 0)"; + rbShiftLeft.UseVisualStyleBackColor = true; + rbShiftLeft.CheckedChanged += ModeChanged; + // + // rbShiftRight + // + rbShiftRight.AutoSize = true; + rbShiftRight.Location = new System.Drawing.Point(12, 37); + rbShiftRight.Name = "rbShiftRight"; + rbShiftRight.Size = new System.Drawing.Size(154, 19); + rbShiftRight.TabIndex = 1; + rbShiftRight.Text = "Shift Right (towards 255)"; + rbShiftRight.UseVisualStyleBackColor = true; + rbShiftRight.CheckedChanged += ModeChanged; + // + // rbSpecify + // + rbSpecify.AutoSize = true; + rbSpecify.Location = new System.Drawing.Point(12, 62); + rbSpecify.Name = "rbSpecify"; + rbSpecify.Size = new System.Drawing.Size(118, 19); + rbSpecify.TabIndex = 2; + rbSpecify.Text = "Specify start code"; + rbSpecify.UseVisualStyleBackColor = true; + rbSpecify.CheckedChanged += ModeChanged; + // + // lblValue + // + lblValue.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + lblValue.AutoSize = true; + lblValue.Location = new System.Drawing.Point(206, 8); + lblValue.Name = "lblValue"; + lblValue.Size = new System.Drawing.Size(50, 15); + lblValue.TabIndex = 3; + lblValue.Text = "Shift by:"; + // + // nudValue + // + nudValue.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + nudValue.Location = new System.Drawing.Point(206, 27); + nudValue.Maximum = new decimal(new int[] { 254, 0, 0, 0 }); + nudValue.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + nudValue.Name = "nudValue"; + nudValue.Size = new System.Drawing.Size(50, 23); + nudValue.TabIndex = 5; + nudValue.Value = new decimal(new int[] { 1, 0, 0, 0 }); + nudValue.ValueChanged += nudValue_ValueChanged; + // + // btnOK + // + btnOK.Location = new System.Drawing.Point(24, 155); + btnOK.Name = "btnOK"; + btnOK.Size = new System.Drawing.Size(88, 27); + btnOK.TabIndex = 6; + btnOK.Text = "OK"; + btnOK.UseVisualStyleBackColor = true; + btnOK.Click += btnOK_Click; + // + // btnCancel + // + btnCancel.Location = new System.Drawing.Point(156, 155); + btnCancel.Name = "btnCancel"; + btnCancel.Size = new System.Drawing.Size(88, 27); + btnCancel.TabIndex = 7; + btnCancel.Text = "Cancel"; + btnCancel.UseVisualStyleBackColor = true; + btnCancel.Click += btnCancel_Click; + // + // lblMessage + // + lblMessage.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + lblMessage.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + lblMessage.ForeColor = System.Drawing.Color.DarkRed; + lblMessage.Location = new System.Drawing.Point(0, 84); + lblMessage.Name = "lblMessage"; + lblMessage.Size = new System.Drawing.Size(268, 68); + lblMessage.TabIndex = 8; + lblMessage.Text = "Message"; + lblMessage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblRange + // + lblRange.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + lblRange.Location = new System.Drawing.Point(204, 53); + lblRange.Name = "lblRange"; + lblRange.Size = new System.Drawing.Size(62, 31); + lblRange.TabIndex = 9; + lblRange.Text = "min: 222\r\nmax: 222"; + // + // CodeShift + // + AcceptButton = btnOK; + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + CancelButton = btnCancel; + ClientSize = new System.Drawing.Size(268, 191); + Controls.Add(lblRange); + Controls.Add(lblMessage); + Controls.Add(btnCancel); + Controls.Add(btnOK); + Controls.Add(nudValue); + Controls.Add(lblValue); + Controls.Add(rbSpecify); + Controls.Add(rbShiftRight); + Controls.Add(rbShiftLeft); + FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + MaximizeBox = false; + MinimizeBox = false; + Name = "CodeShift"; + ShowIcon = false; + ShowInTaskbar = false; + StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + Text = "Code Shift"; + Load += CodeShift_Load; + ((System.ComponentModel.ISupportInitialize)nudValue).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + private System.Windows.Forms.Label lblValue; + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.Button btnCancel; + public System.Windows.Forms.RadioButton rbShiftLeft; + public System.Windows.Forms.RadioButton rbShiftRight; + public System.Windows.Forms.RadioButton rbSpecify; + public System.Windows.Forms.NumericUpDown nudValue; + private System.Windows.Forms.Label lblMessage; + private System.Windows.Forms.Label lblRange; + } +} \ No newline at end of file diff --git a/McBitFont/CodeShift.cs b/McBitFont/CodeShift.cs new file mode 100644 index 0000000..344ddf5 --- /dev/null +++ b/McBitFont/CodeShift.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace McBitFont { + public partial class CodeShift : Form { + + private int maxLeft, maxRight, maxSC, count; + public int sc; + + public CodeShift(MainForm parent) { + InitializeComponent(); + + count = parent.frames.Count; + sc = parent.frames.First().code; + maxLeft = sc; + maxRight = 255 - sc - count + 1; + maxSC = sc + maxRight; + } + + private void CodeShift_Load(object sender, EventArgs e) { + byte enabled = 7; + string msg = ""; + if (maxLeft < 1) { + rbShiftLeft.Enabled = false; + enabled -= 1; + msg += "Cannot shift left: Start code is " + sc.ToString() + "."; + } + if (maxRight < 1) { + rbShiftRight.Enabled = false; + enabled -= 2; + msg += "\nCannot shift right: Last code is " + (sc + count - 1).ToString() + "."; + } + if (maxSC <= 0) { + rbSpecify.Enabled = false; + enabled -= 4; + msg += "\nCannot shift: The font is full." + (sc + count - 1).ToString(); + } + lblMessage.Text = msg; + + if ((enabled & 1) > 0) rbShiftLeft.Checked = true; + else if ((enabled & 2) > 0) rbShiftRight.Checked = true; + else if ((enabled & 4) > 0) rbSpecify.Checked = true; + else { + btnOK.Enabled = false; + nudValue.Enabled = false; + } + + + //ModeChanged(rbShiftLeft, null); + //nudValue.Minimum = 1; + //nudValue.Maximum = maxLeft; + } + + private void ModeChanged(object sender, EventArgs e) { + if (rbSpecify.Checked) { + lblValue.Text = "New start code:"; + nudValue.Minimum = 0; + nudValue.Maximum = maxSC; + nudValue.Value = 0; + lblRange.Text = "min: 0\nmax: " + maxSC.ToString(); + } else { + lblValue.Text = "Shift by:"; + nudValue.Minimum = 1; + nudValue.Value = 1; + if (rbShiftLeft.Checked) { + nudValue.Maximum = maxLeft; + lblRange.Text = "min: 1\nmax: " + maxLeft.ToString(); + } + if (rbShiftRight.Checked) { + nudValue.Maximum = maxRight; + lblRange.Text = "min: 1\nmax: " + maxRight.ToString(); + } + } + + } + + private void nudValue_ValueChanged(object sender, EventArgs e) { + if (rbSpecify.Checked) { + if (nudValue.Value == sc) btnOK.Enabled = false; + else btnOK.Enabled = true; + } + } + + private void btnOK_Click(object sender, EventArgs e) { + DialogResult = DialogResult.OK; + } + + private void btnCancel_Click(object sender, EventArgs e) { + DialogResult = DialogResult.Cancel; + } + } +} diff --git a/McBitFont/CodeShift.resx b/McBitFont/CodeShift.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/McBitFont/CodeShift.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index d38543d..036397b 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -55,20 +55,21 @@ openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); undoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); redoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + fontToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + makeVarWidthToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); prependSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); appendSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); removeSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); removeBeforeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); removeAfterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - applyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - makeVarWidthToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + canvasToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ClearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); shiftUpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); shiftDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -77,7 +78,7 @@ invertToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); mirrorXToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); mirrorYToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + applyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); dlgSave = new System.Windows.Forms.SaveFileDialog(); dlgOpen = new System.Windows.Forms.OpenFileDialog(); @@ -85,6 +86,7 @@ toolTip1 = new System.Windows.Forms.ToolTip(components); chkLeftSide = new System.Windows.Forms.CheckBox(); chkTopSide = new System.Windows.Forms.CheckBox(); + CodeShiftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -399,7 +401,7 @@ // // menuStrip1 // - menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { fileToolStripMenuItem, editToolStripMenuItem, toolsToolStripMenuItem, aboutToolStripMenuItem }); + menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { fileToolStripMenuItem, editToolStripMenuItem, fontToolStripMenuItem, canvasToolStripMenuItem, aboutToolStripMenuItem }); menuStrip1.Location = new System.Drawing.Point(0, 0); menuStrip1.Name = "menuStrip1"; menuStrip1.Padding = new System.Windows.Forms.Padding(7, 2, 0, 2); @@ -409,7 +411,7 @@ // // fileToolStripMenuItem // - fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, exitToolStripMenuItem }); + fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, exportToolStripMenuItem, exitToolStripMenuItem }); fileToolStripMenuItem.Name = "fileToolStripMenuItem"; fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); fileToolStripMenuItem.Text = "File"; @@ -458,6 +460,17 @@ saveAsToolStripMenuItem.ToolTipText = "Save changes to another file"; saveAsToolStripMenuItem.Click += SaveToolStripMenuItem_Click; // + // exportToolStripMenuItem + // + exportToolStripMenuItem.Image = Properties.Resources.z_export; + exportToolStripMenuItem.Name = "exportToolStripMenuItem"; + exportToolStripMenuItem.ShortcutKeyDisplayString = ""; + exportToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E; + exportToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + exportToolStripMenuItem.Text = "Export"; + exportToolStripMenuItem.ToolTipText = "Configure and export data"; + exportToolStripMenuItem.Click += button1_Click; + // // exitToolStripMenuItem // exitToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Door_out_16; @@ -471,7 +484,7 @@ // // editToolStripMenuItem // - editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { undoToolStripMenuItem, redoToolStripMenuItem, copyToolStripMenuItem, pasteToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, applyToolStripMenuItem }); + editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { undoToolStripMenuItem, redoToolStripMenuItem, copyToolStripMenuItem, pasteToolStripMenuItem }); editToolStripMenuItem.Name = "editToolStripMenuItem"; editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); editToolStripMenuItem.Text = "Edit"; @@ -482,7 +495,7 @@ undoToolStripMenuItem.Image = Properties.Resources.arrow_undo; undoToolStripMenuItem.Name = "undoToolStripMenuItem"; undoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z; - undoToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + undoToolStripMenuItem.Size = new System.Drawing.Size(144, 22); undoToolStripMenuItem.Text = "Undo"; undoToolStripMenuItem.ToolTipText = "Undo last canvas change"; undoToolStripMenuItem.Click += undoToolStripMenuItem_Click; @@ -492,7 +505,7 @@ redoToolStripMenuItem.Image = Properties.Resources.arrow_redo; redoToolStripMenuItem.Name = "redoToolStripMenuItem"; redoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y; - redoToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + redoToolStripMenuItem.Size = new System.Drawing.Size(144, 22); redoToolStripMenuItem.Text = "Redo"; redoToolStripMenuItem.ToolTipText = "Redo canvas change"; redoToolStripMenuItem.Click += redoToolStripMenuItem_Click; @@ -504,7 +517,7 @@ copyToolStripMenuItem.Name = "copyToolStripMenuItem"; copyToolStripMenuItem.ShortcutKeyDisplayString = ""; copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C; - copyToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + copyToolStripMenuItem.Size = new System.Drawing.Size(144, 22); copyToolStripMenuItem.Text = "Copy"; copyToolStripMenuItem.ToolTipText = "Copy current symbol to clipboard"; copyToolStripMenuItem.Click += copyToolStripMenuItem_Click; @@ -516,15 +529,32 @@ pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; pasteToolStripMenuItem.ShortcutKeyDisplayString = ""; pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V; - pasteToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + pasteToolStripMenuItem.Size = new System.Drawing.Size(144, 22); pasteToolStripMenuItem.Text = "Paste"; pasteToolStripMenuItem.ToolTipText = "Paste from clipboard to current symbol"; pasteToolStripMenuItem.Click += pasteToolStripMenuItem_Click; // + // fontToolStripMenuItem + // + fontToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { makeVarWidthToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, CodeShiftToolStripMenuItem }); + fontToolStripMenuItem.Name = "fontToolStripMenuItem"; + fontToolStripMenuItem.Size = new System.Drawing.Size(43, 20); + fontToolStripMenuItem.Text = "Font"; + // + // makeVarWidthToolStripMenuItem + // + makeVarWidthToolStripMenuItem.Image = Properties.Resources.z_asterisk; + makeVarWidthToolStripMenuItem.Name = "makeVarWidthToolStripMenuItem"; + makeVarWidthToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + makeVarWidthToolStripMenuItem.Text = "Make Variable Width"; + makeVarWidthToolStripMenuItem.ToolTipText = "Make Font Variable width one"; + makeVarWidthToolStripMenuItem.Visible = false; + makeVarWidthToolStripMenuItem.Click += makeVarWidthToolStripMenuItem_Click; + // // prependSymbolToolStripMenuItem // prependSymbolToolStripMenuItem.Enabled = false; - prependSymbolToolStripMenuItem.Image = Properties.Resources.action_add; + prependSymbolToolStripMenuItem.Image = Properties.Resources.add; prependSymbolToolStripMenuItem.Name = "prependSymbolToolStripMenuItem"; prependSymbolToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Ins"; prependSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Insert; @@ -536,7 +566,7 @@ // appendSymbolToolStripMenuItem // appendSymbolToolStripMenuItem.Enabled = false; - appendSymbolToolStripMenuItem.Image = Properties.Resources.action_add; + appendSymbolToolStripMenuItem.Image = Properties.Resources.add; appendSymbolToolStripMenuItem.Name = "appendSymbolToolStripMenuItem"; appendSymbolToolStripMenuItem.ShortcutKeyDisplayString = ""; appendSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.End; @@ -548,7 +578,7 @@ // removeSymbolToolStripMenuItem // removeSymbolToolStripMenuItem.Enabled = false; - removeSymbolToolStripMenuItem.Image = Properties.Resources.action_remove; + removeSymbolToolStripMenuItem.Image = Properties.Resources.delete; removeSymbolToolStripMenuItem.Name = "removeSymbolToolStripMenuItem"; removeSymbolToolStripMenuItem.ShortcutKeyDisplayString = ""; removeSymbolToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Delete; @@ -560,7 +590,7 @@ // removeBeforeToolStripMenuItem // removeBeforeToolStripMenuItem.Enabled = false; - removeBeforeToolStripMenuItem.Image = Properties.Resources.action_remove; + removeBeforeToolStripMenuItem.Image = Properties.Resources.delete; removeBeforeToolStripMenuItem.Name = "removeBeforeToolStripMenuItem"; removeBeforeToolStripMenuItem.Size = new System.Drawing.Size(215, 22); removeBeforeToolStripMenuItem.Text = "Remove all before selected"; @@ -570,42 +600,23 @@ // removeAfterToolStripMenuItem // removeAfterToolStripMenuItem.Enabled = false; - removeAfterToolStripMenuItem.Image = Properties.Resources.action_remove; + removeAfterToolStripMenuItem.Image = Properties.Resources.delete; removeAfterToolStripMenuItem.Name = "removeAfterToolStripMenuItem"; removeAfterToolStripMenuItem.Size = new System.Drawing.Size(215, 22); removeAfterToolStripMenuItem.Text = "Remove all after selected"; removeAfterToolStripMenuItem.ToolTipText = "Remove all symbols after current one"; removeAfterToolStripMenuItem.Click += removeAfterToolStripMenuItem_Click; // - // applyToolStripMenuItem + // canvasToolStripMenuItem // - applyToolStripMenuItem.Image = Properties.Resources.action_check; - applyToolStripMenuItem.Name = "applyToolStripMenuItem"; - applyToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Space"; - applyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Space; - applyToolStripMenuItem.Size = new System.Drawing.Size(215, 22); - applyToolStripMenuItem.Text = "Apply"; - applyToolStripMenuItem.ToolTipText = "Apply canvas changes"; - applyToolStripMenuItem.Click += button2_Click; - // - // toolsToolStripMenuItem - // - toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { makeVarWidthToolStripMenuItem, ClearToolStripMenuItem, shiftUpToolStripMenuItem, shiftDownToolStripMenuItem, shiftLeftToolStripMenuItem, shiftRightToolStripMenuItem, invertToolStripMenuItem, mirrorXToolStripMenuItem, mirrorYToolStripMenuItem, exportToolStripMenuItem }); - toolsToolStripMenuItem.Name = "toolsToolStripMenuItem"; - toolsToolStripMenuItem.Size = new System.Drawing.Size(47, 20); - toolsToolStripMenuItem.Text = "Tools"; - // - // makeVarWidthToolStripMenuItem - // - makeVarWidthToolStripMenuItem.Name = "makeVarWidthToolStripMenuItem"; - makeVarWidthToolStripMenuItem.Size = new System.Drawing.Size(197, 22); - makeVarWidthToolStripMenuItem.Text = "Make Variable Width"; - makeVarWidthToolStripMenuItem.ToolTipText = "Make Font Variable width one"; - makeVarWidthToolStripMenuItem.Visible = false; - makeVarWidthToolStripMenuItem.Click += makeVarWidthToolStripMenuItem_Click; + canvasToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { ClearToolStripMenuItem, shiftUpToolStripMenuItem, shiftDownToolStripMenuItem, shiftLeftToolStripMenuItem, shiftRightToolStripMenuItem, invertToolStripMenuItem, mirrorXToolStripMenuItem, mirrorYToolStripMenuItem, applyToolStripMenuItem }); + canvasToolStripMenuItem.Name = "canvasToolStripMenuItem"; + canvasToolStripMenuItem.Size = new System.Drawing.Size(57, 20); + canvasToolStripMenuItem.Text = "Canvas"; // // ClearToolStripMenuItem // + ClearToolStripMenuItem.Image = Properties.Resources.z_shading; ClearToolStripMenuItem.Name = "ClearToolStripMenuItem"; ClearToolStripMenuItem.ShortcutKeyDisplayString = ""; ClearToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W; @@ -616,7 +627,7 @@ // // shiftUpToolStripMenuItem // - shiftUpToolStripMenuItem.Image = Properties.Resources.arrow_top; + shiftUpToolStripMenuItem.Image = Properties.Resources.z_uo; shiftUpToolStripMenuItem.Name = "shiftUpToolStripMenuItem"; shiftUpToolStripMenuItem.ShortcutKeyDisplayString = ""; shiftUpToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Up; @@ -627,7 +638,7 @@ // // shiftDownToolStripMenuItem // - shiftDownToolStripMenuItem.Image = Properties.Resources.arrow_down; + shiftDownToolStripMenuItem.Image = Properties.Resources.z_down; shiftDownToolStripMenuItem.Name = "shiftDownToolStripMenuItem"; shiftDownToolStripMenuItem.ShortcutKeyDisplayString = ""; shiftDownToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Down; @@ -638,7 +649,7 @@ // // shiftLeftToolStripMenuItem // - shiftLeftToolStripMenuItem.Image = Properties.Resources.arrow_back; + shiftLeftToolStripMenuItem.Image = Properties.Resources.z_left; shiftLeftToolStripMenuItem.Name = "shiftLeftToolStripMenuItem"; shiftLeftToolStripMenuItem.ShortcutKeyDisplayString = ""; shiftLeftToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Left; @@ -649,7 +660,7 @@ // // shiftRightToolStripMenuItem // - shiftRightToolStripMenuItem.Image = Properties.Resources.arrow_next; + shiftRightToolStripMenuItem.Image = Properties.Resources.z_right; shiftRightToolStripMenuItem.Name = "shiftRightToolStripMenuItem"; shiftRightToolStripMenuItem.ShortcutKeyDisplayString = ""; shiftRightToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Right; @@ -660,7 +671,7 @@ // // invertToolStripMenuItem // - invertToolStripMenuItem.Image = Properties.Resources.Ionic_Ionicons_Invert_mode_outline_16; + invertToolStripMenuItem.Image = Properties.Resources.z_contrast; invertToolStripMenuItem.Name = "invertToolStripMenuItem"; invertToolStripMenuItem.ShortcutKeyDisplayString = ""; invertToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I; @@ -689,15 +700,16 @@ mirrorYToolStripMenuItem.ToolTipText = "Mirror by Y axis (vertical)"; mirrorYToolStripMenuItem.Click += btnMirrorY_Click; // - // exportToolStripMenuItem + // applyToolStripMenuItem // - exportToolStripMenuItem.Name = "exportToolStripMenuItem"; - exportToolStripMenuItem.ShortcutKeyDisplayString = ""; - exportToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E; - exportToolStripMenuItem.Size = new System.Drawing.Size(197, 22); - exportToolStripMenuItem.Text = "Export"; - exportToolStripMenuItem.ToolTipText = "Configure and export data"; - exportToolStripMenuItem.Click += button1_Click; + applyToolStripMenuItem.Image = Properties.Resources.z_tick; + applyToolStripMenuItem.Name = "applyToolStripMenuItem"; + applyToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Space"; + applyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Space; + applyToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + applyToolStripMenuItem.Text = "Apply"; + applyToolStripMenuItem.ToolTipText = "Apply canvas changes"; + applyToolStripMenuItem.Click += button2_Click; // // aboutToolStripMenuItem // @@ -759,6 +771,15 @@ toolTip1.SetToolTip(chkTopSide, "Height changes will be made on Top/Bottom side"); chkTopSide.UseVisualStyleBackColor = true; // + // CodeShiftToolStripMenuItem + // + CodeShiftToolStripMenuItem.Image = Properties.Resources.z_align_center; + CodeShiftToolStripMenuItem.Name = "CodeShiftToolStripMenuItem"; + CodeShiftToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + CodeShiftToolStripMenuItem.Text = "Code shift"; + CodeShiftToolStripMenuItem.ToolTipText = "Shift the font on the code line"; + CodeShiftToolStripMenuItem.Click += CodeShiftToolStripMenuItem_Click; + // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); @@ -835,7 +856,7 @@ private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem removeSymbolToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem toolsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem canvasToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem shiftUpToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem shiftDownToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem shiftLeftToolStripMenuItem; @@ -864,6 +885,8 @@ private System.Windows.Forms.ToolStripMenuItem makeVarWidthToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem undoToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem redoToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem fontToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem CodeShiftToolStripMenuItem; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 3ea9f9c..e86f9ed 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -635,6 +635,7 @@ namespace McBitFont { monospaced = form.rbMono.Checked; } makeVarWidthToolStripMenuItem.Visible = monospaced; + CodeShiftToolStripMenuItem.Visible = !form.cbSingle.Checked; lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; codepage = (form.cbEncoding.SelectedItem as New.EncodingItem).Code; foreach (FrameMiniature ff in frames) { @@ -654,6 +655,7 @@ namespace McBitFont { modified = false; checkForAdd(); fbuffer = false; + miniList.Items[0].Selected = true; miniList.Refresh(); dotPanel.Refresh(); @@ -965,5 +967,46 @@ namespace McBitFont { dotPanel.Refresh(); CheckHistoryButtons(); } + + private void CodeShiftToolStripMenuItem_Click(object sender, EventArgs e) { + if (!monospaced && frames.Count == 1) return; + checkModifiedFrame(); + + CodeShift csform = new CodeShift(this); + if (csform.ShowDialog() == DialogResult.OK) { + Cursor.Current = Cursors.WaitCursor; + + FrameMiniature ff; + var sel = miniList.SelectedItems[0].Index; + var val = Convert.ToInt32(csform.nudValue.Value); + if (csform.rbSpecify.Checked) val -= csform.sc; + if (csform.rbShiftLeft.Checked) val *= -1; + + miniList.Clear(); + ilMiniatures.Images.Clear(); + for (int i = 0; i < frames.Count; i++) { + ff = frames[i]; + ff.code += val; + frames[i] = ff; + + var key = ff.code.ToString().PadLeft(3, '0'); + var text = decodeSymbol(ff.code); + ilMiniatures.Images.Add(key, (Image)getMiniPictue(ff)); + miniList.Items.Add(key, key + ' ' + text, key); + } + + miniList.Refresh(); + miniList.Items[sel].Selected = true; + dotPanel.Refresh(); + + Cursor.Current = Cursors.Default; + } + csform.Dispose(); + + history.Clear(); + checkForAdd(); + prjModified = true; + + } } } diff --git a/McBitFont/McBitFont.csproj b/McBitFont/McBitFont.csproj index 123c225..8b14b8f 100644 --- a/McBitFont/McBitFont.csproj +++ b/McBitFont/McBitFont.csproj @@ -23,6 +23,12 @@ 2.0.0.0 2.0.0.0 + + portable + + + portable + diff --git a/McBitFont/Properties/Resources.Designer.cs b/McBitFont/Properties/Resources.Designer.cs index 414bacb..844f1e4 100644 --- a/McBitFont/Properties/Resources.Designer.cs +++ b/McBitFont/Properties/Resources.Designer.cs @@ -90,6 +90,16 @@ namespace McBitFont.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap add { + get { + object obj = ResourceManager.GetObject("add", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -150,6 +160,16 @@ namespace McBitFont.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap delete { + get { + object obj = ResourceManager.GetObject("delete", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -309,5 +329,125 @@ namespace McBitFont.Properties { return ((System.Drawing.Bitmap)(obj)); } } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap z_align_center { + get { + object obj = ResourceManager.GetObject("z_align_center", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap z_asterisk { + get { + object obj = ResourceManager.GetObject("z_asterisk", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap z_contrast { + get { + object obj = ResourceManager.GetObject("z_contrast", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap z_down { + get { + object obj = ResourceManager.GetObject("z_down", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap z_export { + get { + object obj = ResourceManager.GetObject("z_export", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap z_left { + get { + object obj = ResourceManager.GetObject("z_left", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap z_redo { + get { + object obj = ResourceManager.GetObject("z_redo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap z_right { + get { + object obj = ResourceManager.GetObject("z_right", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap z_shading { + get { + object obj = ResourceManager.GetObject("z_shading", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap z_tick { + get { + object obj = ResourceManager.GetObject("z_tick", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap z_undo { + get { + object obj = ResourceManager.GetObject("z_undo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap z_uo { + get { + object obj = ResourceManager.GetObject("z_uo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/McBitFont/Properties/Resources.resx b/McBitFont/Properties/Resources.resx index 67bb33b..085f933 100644 --- a/McBitFont/Properties/Resources.resx +++ b/McBitFont/Properties/Resources.resx @@ -187,6 +187,48 @@ ..\Resources\action_check.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\tick.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_redo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_undo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_right.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_left.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\..\icons\famfamfam\arrow_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\shape_align_center.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\asterisk_orange.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\shading.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\package_go.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\contrast.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\redo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/McBitFont/Resources/add.png b/McBitFont/Resources/add.png new file mode 100644 index 0000000000000000000000000000000000000000..6332fefea4be19eeadf211b0b202b272e8564898 GIT binary patch literal 733 zcmV<30wVp1P)9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/arrow_left.png b/McBitFont/Resources/arrow_left.png new file mode 100644 index 0000000000000000000000000000000000000000..0f589845f00ca40cee6495318eb13ebf9030f347 GIT binary patch literal 344 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 literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/package_go.png b/McBitFont/Resources/package_go.png new file mode 100644 index 0000000000000000000000000000000000000000..aace63ad6f91537268eb6e9bf328743da7c631c6 GIT binary patch literal 898 zcmV-|1AY97P)yqPWur#3F*- zi1-H*6GJgONgz~1E;+_Oe@~@VF-1Iy-=*@ zV9T!Kgk#%59lVt}Zj7B_)9wTKYBy6YEwPxKqOdeGuEw0%cVhe}Yj*hPSBMNYZ5yz{ z4STT*%d9TVV4NauDND$z(%QKb>=kMr>ckh0lFuesOioc=Nq^^8BQNYYbk1@M%M`O? zh?6H&UZR}Ol3%#RzJX5(MAktmg_e?7`2>w^4^!6w)4$9==U0)EV$}u1A)*bPRF?jv zHdar4EJB1b*f+rh!M+8R159x8%Qjd0I{0j+|69pUC)f(>!P(OTs8c~;XuVtXzfO>s`m zrjW9YI38*Yel_NvP&FVfNEx)sn-kxIx;WzEcpe*LJBYXLr(llS6I0o+c9O z0L_4N7u$0%Dx~ks;fjYRF0OIOR}1uPI!MtibK=J3pihiBTv)jD>R%(Llj(_XFa#mG z6Wg=#j7Q7*PFmM*W@B9!ftm;#qU}sCT;|&KtBZ%Fe#3()Pk+9@Sw&8%k=NQD>92qN zkFT*E2S*%i&!MYvH;;DpF?sU}zb4Mlls)au3~BX$XZr12Z?_sbts>8Fec~0Xl1q`9 zxyH%T#p<5UCqrY2(J4oGEHk9ens22BN3dYXATM07*qoM6N<$g3xBAZ~y=R literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/shading.png b/McBitFont/Resources/shading.png new file mode 100644 index 0000000000000000000000000000000000000000..09275f9c0914a2b6cbd48dc75244f698a8918c1e GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i<5d%8G=Se#D&@&CWQ^SL#TFFMo+ zpUPu?w4CLJsKXtWq-Kjql`OW6@{Tv>DLhi_oR#=SOyS-!hh=FNvz5*&gc}4bkUS$- zpueTJs?jS>W4VH5cvDBnk}bYn&!Q$gHPEkM{Aeg6CFgw8)S-s+lpfn7J^^Wlx#}xw U_BgG30kodM)78&qol`;+07=(QkN^Mx literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/shape_align_center.png b/McBitFont/Resources/shape_align_center.png new file mode 100644 index 0000000000000000000000000000000000000000..efe9a98e5fa3c6ad11072c7d5383c10d7e4bd988 GIT binary patch literal 384 zcmV-`0e}99P)Z6yAF1om>|ST ztKHFR-u%C_TS&rR#$xWUuInG^#ZbZh<7OKK0Sbr!oPg)`=K8c40#>`ki?apTCliRg zlEUj-Ocaa&0ziHzlBp`G6i@TVfL<<@Bqx|guvvfy(7bc&my!0N1m(V4lyq=bRi(Le zNvR9#hi1|)cfp-7Ct3?wOSDEz&|1=(k-c%ksD` e{M&ClW_$rjx>)p&(flj`0000Hs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1p9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/icons/famfamfam/arrow_down.png b/icons/famfamfam/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4e279377bf348f9cf53894e76bb673ccf067bd GIT binary patch literal 379 zcmV->0fhdEP)RB*?~^j!LKVQ>(O&A{Xr%)RXLn#U zs4LtZ6rCMFY5|B2$)yG$6aaIFRK2gTW?xy|fr^HMRZWL#n-5mC9Ik6SQQdyDvHfIC=dq@)GxgoaTf5IT z^qp*F%j#`evM)Fzfu}xfiC)zcg*(FZj9*=u@@4&g|7erBn|Ebu&JU%m$={t4j zMA?=F80s{QH%n(hsfF%mohhehBz1^t6ID+NGJzBtYm#sZbA{ZEu?vrT)(Lb!?K~){ zH(Aw`uB}Xq9=*Zczi=_)|A3QuQ}znM~D7~ zjUb95oVKv23l4|e@$lZ*dJFeEA1zqO!B_8JKbXnR;M>>lDE=(2>_dXN zph(~kC%jShVie(o42eHUnMDR}$nG z%)rKGv19j`NY~_X_4^RN+9OmbDu*=G*+_}E z3jR}&gbG0=R0#?Z-=09KI|YP8=#E5@+>uO|=1VUCOole%Li*0J2^Gy8+;b?&km6gg zf;aDGp1r#I_V|We$e$~WifFF9R7MCMwsmwsME9<<@yx?a+v)qKuKbNe>k1{IrVt}k zbbSs~bXr8Se}V_b4opa0GhLA`RHceaP=N}IElbSa8@d(ij1Q|4CvOirm96w#wHUuW*nL5>vZR zlg{G&%mT~|kL3ei%GW0*UOHUMs5XI$4uxe-L?I@SAefq*207}Iqtjm#e5*fP53AiC z)C|RQfwzxx<#_WfANRGZx{+tFDl8~Q?;~Ve=lM^*8UTTnVL?HTDz8uta0D@d28E9S z_)i8aLz^UE6PPKymi;2GJ`34{eIia-CtfAt0H61rk0 SPTNud0000*uQQn7Ao3L@HcVN_JG5Oz^iELqtfic#8+p{{13 zB!rfdf2k)SDwJS|D58iKOKXwBFIFGcC-AUOfLS9bv(H0S%=6T$O9SC=2fMD%gnJC9? z!Kh(gvt=Cx?1R~s3W9x8mCUENrT{!2(+x==*z->Z(e<;6aicYvPErVhHT_;HRWCrO zX>Ant#Yi-31=*-(@?ZTrNtR{}?1a^q3-ss0eBi>@Qc)edAUbFFjhvR`kHwNKL}lr> zmx4@#VC|1-HQcog=-UoF%!Jv#1q7>sa}xhtBKb#7NeGlV;rH6OFmr?PNPiwMRD=jG zfZ3f5vy;Gqe4sZI=uW3=7L4|E%(QHx)3_-#2chPTcz1*X$TTNe2v#yoR){KnCQhcg z(YBd3W>A0&#{D#mmPqQSlM)|3A^ATXx8dz!8(tOJd5pyIa?we$G^;NU;SSgD5WO`G z1giu)7o5cCBA8D%u7}Z)i7#g)f3PVT=*fasvkLEz*?bEIkm>TthSk)+f{EIdAk!W) z?VGx_0qAlea5(`l58AzP0|-{W*Cx;y=hMVxgG_4#JISQPBo@rv^)uedmP%+LWdH!1u~sTvRX(MC)0C( q-3yOhdA{Gl2X{NXPYNCLME(Md?VydvM~!0u0000NK&UbbyKJOV_-=GvR_Va`)iGtEI>k6*4w zgow@Mk2%Y~O!7M?In8;-d7cL=5v|yqpZk1wp<|+|sw%#D=U_j#2jez+cNS)ysfwa1 zhMt(yUCd+J)Rn9LDjG%680l+#H!mx+$mblHG)yqPWur#3F*- zi1-H*6GJgONgz~1E;+_Oe@~@VF-1Iy-=*@ zV9T!Kgk#%59lVt}Zj7B_)9wTKYBy6YEwPxKqOdeGuEw0%cVhe}Yj*hPSBMNYZ5yz{ z4STT*%d9TVV4NauDND$z(%QKb>=kMr>ckh0lFuesOioc=Nq^^8BQNYYbk1@M%M`O? zh?6H&UZR}Ol3%#RzJX5(MAktmg_e?7`2>w^4^!6w)4$9==U0)EV$}u1A)*bPRF?jv zHdar4EJB1b*f+rh!M+8R159x8%Qjd0I{0j+|69pUC)f(>!P(OTs8c~;XuVtXzfO>s`m zrjW9YI38*Yel_NvP&FVfNEx)sn-kxIx;WzEcpe*LJBYXLr(llS6I0o+c9O z0L_4N7u$0%Dx~ks;fjYRF0OIOR}1uPI!MtibK=J3pihiBTv)jD>R%(Llj(_XFa#mG z6Wg=#j7Q7*PFmM*W@B9!ftm;#qU}sCT;|&KtBZ%Fe#3()Pk+9@Sw&8%k=NQD>92qN zkFT*E2S*%i&!MYvH;;DpF?sU}zb4Mlls)au3~BX$XZr12Z?_sbts>8Fec~0Xl1q`9 zxyH%T#p<5UCqrY2(J4oGEHk9ens22BN3dYXATM07*qoM6N<$g3xBAZ~y=R literal 0 HcmV?d00001 diff --git a/icons/famfamfam/shading.png b/icons/famfamfam/shading.png new file mode 100644 index 0000000000000000000000000000000000000000..09275f9c0914a2b6cbd48dc75244f698a8918c1e GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i<5d%8G=Se#D&@&CWQ^SL#TFFMo+ zpUPu?w4CLJsKXtWq-Kjql`OW6@{Tv>DLhi_oR#=SOyS-!hh=FNvz5*&gc}4bkUS$- zpueTJs?jS>W4VH5cvDBnk}bYn&!Q$gHPEkM{Aeg6CFgw8)S-s+lpfn7J^^Wlx#}xw U_BgG30kodM)78&qol`;+07=(QkN^Mx literal 0 HcmV?d00001 diff --git a/icons/famfamfam/shape_align_center.png b/icons/famfamfam/shape_align_center.png new file mode 100644 index 0000000000000000000000000000000000000000..efe9a98e5fa3c6ad11072c7d5383c10d7e4bd988 GIT binary patch literal 384 zcmV-`0e}99P)Z6yAF1om>|ST ztKHFR-u%C_TS&rR#$xWUuInG^#ZbZh<7OKK0Sbr!oPg)`=K8c40#>`ki?apTCliRg zlEUj-Ocaa&0ziHzlBp`G6i@TVfL<<@Bqx|guvvfy(7bc&my!0N1m(V4lyq=bRi(Le zNvR9#hi1|)cfp-7Ct3?wOSDEz&|1=(k-c%ksD` e{M&ClW_$rjx>)p&(flj`0000Hs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1p Date: Thu, 22 May 2025 10:30:36 +0300 Subject: [PATCH 13/29] TODO feature: Context menu in symbol navigator --- McBitFont/About.Designer.cs | 178 ++++++++++++++++++-------------- McBitFont/About.resx | 54 +++++----- McBitFont/CodeShift.Designer.cs | 12 +++ McBitFont/CodeShift.resx | 3 + McBitFont/Form1.Designer.cs | 113 ++++++++++++++++++-- McBitFont/Form1.cs | 64 ++++++++++-- McBitFont/Form1.resx | 3 + TODO.txt | 2 +- 8 files changed, 304 insertions(+), 125 deletions(-) diff --git a/McBitFont/About.Designer.cs b/McBitFont/About.Designer.cs index ba1b0f7..9c4a9ea 100644 --- a/McBitFont/About.Designer.cs +++ b/McBitFont/About.Designer.cs @@ -24,103 +24,128 @@ /// private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(About)); - this.lblVersion = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.linkLabel1 = new System.Windows.Forms.LinkLabel(); - this.button1 = new System.Windows.Forms.Button(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); - this.SuspendLayout(); + lblVersion = new System.Windows.Forms.Label(); + label1 = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + pictureBox1 = new System.Windows.Forms.PictureBox(); + linkLabel1 = new System.Windows.Forms.LinkLabel(); + button1 = new System.Windows.Forms.Button(); + linkLabel2 = new System.Windows.Forms.LinkLabel(); + ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit(); + SuspendLayout(); // // lblVersion // - this.lblVersion.AutoSize = true; - this.lblVersion.Location = new System.Drawing.Point(12, 189); - this.lblVersion.Name = "lblVersion"; - this.lblVersion.Size = new System.Drawing.Size(63, 13); - this.lblVersion.TabIndex = 0; - this.lblVersion.Text = "Version: 1.1"; + lblVersion.AutoSize = true; + lblVersion.Location = new System.Drawing.Point(14, 218); + lblVersion.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + lblVersion.Name = "lblVersion"; + lblVersion.Size = new System.Drawing.Size(66, 15); + lblVersion.TabIndex = 0; + lblVersion.Text = "Version: 0.0"; // // label1 // - this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.label1.Location = new System.Drawing.Point(0, 80); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(384, 35); - this.label1.TabIndex = 1; - this.label1.Text = "McBitFont"; - this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + label1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + label1.Location = new System.Drawing.Point(0, 77); + label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(448, 36); + label1.TabIndex = 1; + label1.Text = "McBitFont"; + label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label2 // - this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.label2.Location = new System.Drawing.Point(0, 115); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(384, 25); - this.label2.TabIndex = 2; - this.label2.Text = "McFLY\'s Bit Font and Image Editor"; - this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + label2.Location = new System.Drawing.Point(0, 111); + label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(448, 29); + label2.TabIndex = 2; + label2.Text = "McFLY's Bit Font and Image Editor"; + label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // pictureBox1 // - this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Top; - this.pictureBox1.Image = global::McBitFont.Properties.Resources.icon_64; - this.pictureBox1.Location = new System.Drawing.Point(0, 0); - this.pictureBox1.Margin = new System.Windows.Forms.Padding(3, 10, 3, 3); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(384, 75); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; - this.pictureBox1.TabIndex = 3; - this.pictureBox1.TabStop = false; + pictureBox1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + pictureBox1.Image = Properties.Resources.icon_64; + pictureBox1.Location = new System.Drawing.Point(0, 0); + pictureBox1.Margin = new System.Windows.Forms.Padding(4, 12, 4, 3); + pictureBox1.Name = "pictureBox1"; + pictureBox1.Size = new System.Drawing.Size(448, 74); + pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + pictureBox1.TabIndex = 3; + pictureBox1.TabStop = false; // // linkLabel1 // - this.linkLabel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.linkLabel1.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; - this.linkLabel1.Location = new System.Drawing.Point(0, 140); - this.linkLabel1.Name = "linkLabel1"; - this.linkLabel1.Size = new System.Drawing.Size(384, 23); - this.linkLabel1.TabIndex = 4; - this.linkLabel1.Text = "mcfly@mcflyer.ru"; - this.linkLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + linkLabel1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + linkLabel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 204); + linkLabel1.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; + linkLabel1.Location = new System.Drawing.Point(0, 140); + linkLabel1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + linkLabel1.Name = "linkLabel1"; + linkLabel1.Size = new System.Drawing.Size(448, 24); + linkLabel1.TabIndex = 4; + linkLabel1.TabStop = true; + linkLabel1.Text = "mcfly@mcflyer.ru"; + linkLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + linkLabel1.LinkClicked += linkLabel1_LinkClicked; // // button1 // - this.button1.DialogResult = System.Windows.Forms.DialogResult.OK; - this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.button1.Location = new System.Drawing.Point(146, 175); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(89, 27); - this.button1.TabIndex = 5; - this.button1.Text = "OK"; - this.button1.UseVisualStyleBackColor = true; + button1.DialogResult = System.Windows.Forms.DialogResult.OK; + button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + button1.Location = new System.Drawing.Point(170, 202); + button1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + button1.Name = "button1"; + button1.Size = new System.Drawing.Size(104, 31); + button1.TabIndex = 5; + button1.Text = "OK"; + button1.UseVisualStyleBackColor = true; + // + // linkLabel2 + // + linkLabel2.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + linkLabel2.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 204); + linkLabel2.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; + linkLabel2.Location = new System.Drawing.Point(0, 164); + linkLabel2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + linkLabel2.Name = "linkLabel2"; + linkLabel2.Size = new System.Drawing.Size(448, 24); + linkLabel2.TabIndex = 6; + linkLabel2.TabStop = true; + linkLabel2.Text = "https://gitea.mcflyer.ru/McFLY/McBitFont"; + linkLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // About // - this.AcceptButton = this.button1; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(384, 211); - this.Controls.Add(this.button1); - this.Controls.Add(this.linkLabel1); - this.Controls.Add(this.pictureBox1); - this.Controls.Add(this.label2); - this.Controls.Add(this.label1); - this.Controls.Add(this.lblVersion); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "About"; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "About"; - this.Load += new System.EventHandler(this.About_Load); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); + AcceptButton = button1; + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + ClientSize = new System.Drawing.Size(448, 243); + Controls.Add(linkLabel2); + Controls.Add(button1); + Controls.Add(linkLabel1); + Controls.Add(pictureBox1); + Controls.Add(label2); + Controls.Add(label1); + Controls.Add(lblVersion); + FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + Icon = (System.Drawing.Icon)resources.GetObject("$this.Icon"); + Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + MaximizeBox = false; + MinimizeBox = false; + Name = "About"; + ShowInTaskbar = false; + StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + Text = "About"; + Load += About_Load; + ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit(); + ResumeLayout(false); + PerformLayout(); } @@ -132,5 +157,6 @@ private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.LinkLabel linkLabel1; private System.Windows.Forms.Button button1; + private System.Windows.Forms.LinkLabel linkLabel2; } } \ No newline at end of file diff --git a/McBitFont/About.resx b/McBitFont/About.resx index abd8138..0c65f2c 100644 --- a/McBitFont/About.resx +++ b/McBitFont/About.resx @@ -1,17 +1,17 @@  - diff --git a/McBitFont/CodeShift.Designer.cs b/McBitFont/CodeShift.Designer.cs index 7571850..9051363 100644 --- a/McBitFont/CodeShift.Designer.cs +++ b/McBitFont/CodeShift.Designer.cs @@ -23,6 +23,7 @@ /// the contents of this method with the code editor. /// private void InitializeComponent() { + components = new System.ComponentModel.Container(); rbShiftLeft = new System.Windows.Forms.RadioButton(); rbShiftRight = new System.Windows.Forms.RadioButton(); rbSpecify = new System.Windows.Forms.RadioButton(); @@ -32,6 +33,7 @@ btnCancel = new System.Windows.Forms.Button(); lblMessage = new System.Windows.Forms.Label(); lblRange = new System.Windows.Forms.Label(); + toolTip1 = new System.Windows.Forms.ToolTip(components); ((System.ComponentModel.ISupportInitialize)nudValue).BeginInit(); SuspendLayout(); // @@ -43,6 +45,7 @@ rbShiftLeft.Size = new System.Drawing.Size(134, 19); rbShiftLeft.TabIndex = 0; rbShiftLeft.Text = "Shift Left (towards 0)"; + toolTip1.SetToolTip(rbShiftLeft, "Shift all symbols left on the code sequence decreasing codes"); rbShiftLeft.UseVisualStyleBackColor = true; rbShiftLeft.CheckedChanged += ModeChanged; // @@ -54,6 +57,7 @@ rbShiftRight.Size = new System.Drawing.Size(154, 19); rbShiftRight.TabIndex = 1; rbShiftRight.Text = "Shift Right (towards 255)"; + toolTip1.SetToolTip(rbShiftRight, "Shift all symbols right on the code sequence increasing codes"); rbShiftRight.UseVisualStyleBackColor = true; rbShiftRight.CheckedChanged += ModeChanged; // @@ -65,6 +69,7 @@ rbSpecify.Size = new System.Drawing.Size(118, 19); rbSpecify.TabIndex = 2; rbSpecify.Text = "Specify start code"; + toolTip1.SetToolTip(rbSpecify, "Specify the code for the first symbol in sequence"); rbSpecify.UseVisualStyleBackColor = true; rbSpecify.CheckedChanged += ModeChanged; // @@ -131,6 +136,12 @@ lblRange.TabIndex = 9; lblRange.Text = "min: 222\r\nmax: 222"; // + // toolTip1 + // + toolTip1.AutoPopDelay = 10000; + toolTip1.InitialDelay = 500; + toolTip1.ReshowDelay = 100; + // // CodeShift // AcceptButton = btnOK; @@ -171,5 +182,6 @@ public System.Windows.Forms.NumericUpDown nudValue; private System.Windows.Forms.Label lblMessage; private System.Windows.Forms.Label lblRange; + private System.Windows.Forms.ToolTip toolTip1; } } \ No newline at end of file diff --git a/McBitFont/CodeShift.resx b/McBitFont/CodeShift.resx index 8b2ff64..dcfd08d 100644 --- a/McBitFont/CodeShift.resx +++ b/McBitFont/CodeShift.resx @@ -117,4 +117,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + \ No newline at end of file diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 036397b..753479c 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -44,6 +44,14 @@ btnShiftLeft = new System.Windows.Forms.Button(); btnExport = new System.Windows.Forms.Button(); miniList = new System.Windows.Forms.ListView(); + cmMinilist = new System.Windows.Forms.ContextMenuStrip(components); + tsmiMakeVarWidth = new System.Windows.Forms.ToolStripMenuItem(); + tsmiPrepensSymbol = new System.Windows.Forms.ToolStripMenuItem(); + tsmiAppendSymbol = new System.Windows.Forms.ToolStripMenuItem(); + tsmiRemoveSymbol = new System.Windows.Forms.ToolStripMenuItem(); + tsmiRemoveBefore = new System.Windows.Forms.ToolStripMenuItem(); + tsmiRemoveAfter = new System.Windows.Forms.ToolStripMenuItem(); + tsmiCodeShift = new System.Windows.Forms.ToolStripMenuItem(); ilMiniatures = new System.Windows.Forms.ImageList(components); btnApply = new System.Windows.Forms.Button(); hScroll = new System.Windows.Forms.HScrollBar(); @@ -69,6 +77,7 @@ removeSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); removeBeforeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); removeAfterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + CodeShiftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); canvasToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ClearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); shiftUpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -86,10 +95,10 @@ toolTip1 = new System.Windows.Forms.ToolTip(components); chkLeftSide = new System.Windows.Forms.CheckBox(); chkTopSide = new System.Windows.Forms.CheckBox(); - CodeShiftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); + cmMinilist.SuspendLayout(); menuStrip1.SuspendLayout(); SuspendLayout(); // @@ -331,6 +340,7 @@ // miniList // miniList.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + miniList.ContextMenuStrip = cmMinilist; miniList.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); miniList.GridLines = true; miniList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; @@ -349,6 +359,80 @@ miniList.UseCompatibleStateImageBehavior = false; miniList.SelectedIndexChanged += MiniList_SelectedIndexChanged; // + // cmMinilist + // + cmMinilist.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { tsmiMakeVarWidth, tsmiPrepensSymbol, tsmiAppendSymbol, tsmiRemoveSymbol, tsmiRemoveBefore, tsmiRemoveAfter, tsmiCodeShift }); + cmMinilist.Name = "cmMinilist"; + cmMinilist.Size = new System.Drawing.Size(216, 180); + // + // tsmiMakeVarWidth + // + tsmiMakeVarWidth.Image = Properties.Resources.z_asterisk; + tsmiMakeVarWidth.Name = "tsmiMakeVarWidth"; + tsmiMakeVarWidth.Size = new System.Drawing.Size(215, 22); + tsmiMakeVarWidth.Text = "Make Variable Width"; + tsmiMakeVarWidth.ToolTipText = "Make Font Variable width one"; + tsmiMakeVarWidth.Click += makeVarWidthToolStripMenuItem_Click; + // + // tsmiPrepensSymbol + // + tsmiPrepensSymbol.Enabled = false; + tsmiPrepensSymbol.Image = Properties.Resources.add; + tsmiPrepensSymbol.Name = "tsmiPrepensSymbol"; + tsmiPrepensSymbol.Size = new System.Drawing.Size(215, 22); + tsmiPrepensSymbol.Text = "Prepend symbol"; + tsmiPrepensSymbol.ToolTipText = "Add a symbol to the beginning of the sequence"; + tsmiPrepensSymbol.Click += prependSymbolToolStripMenuItem_Click; + // + // tsmiAppendSymbol + // + tsmiAppendSymbol.Enabled = false; + tsmiAppendSymbol.Image = Properties.Resources.add; + tsmiAppendSymbol.Name = "tsmiAppendSymbol"; + tsmiAppendSymbol.Size = new System.Drawing.Size(215, 22); + tsmiAppendSymbol.Text = "Append symbol"; + tsmiAppendSymbol.ToolTipText = "Add a symbol to the end of the sequence"; + tsmiAppendSymbol.Click += prependSymbolToolStripMenuItem_Click; + // + // tsmiRemoveSymbol + // + tsmiRemoveSymbol.Enabled = false; + tsmiRemoveSymbol.Image = Properties.Resources.delete; + tsmiRemoveSymbol.Name = "tsmiRemoveSymbol"; + tsmiRemoveSymbol.Size = new System.Drawing.Size(215, 22); + tsmiRemoveSymbol.Text = "Remove symbol"; + tsmiRemoveSymbol.ToolTipText = "Remove selected symbol"; + tsmiRemoveSymbol.Click += removeSymbolToolStripMenuItem_Click; + // + // tsmiRemoveBefore + // + tsmiRemoveBefore.Enabled = false; + tsmiRemoveBefore.Image = Properties.Resources.delete; + tsmiRemoveBefore.Name = "tsmiRemoveBefore"; + tsmiRemoveBefore.Size = new System.Drawing.Size(215, 22); + tsmiRemoveBefore.Text = "Remove all before selected"; + tsmiRemoveBefore.ToolTipText = "Remove all symbols before current one"; + tsmiRemoveBefore.Click += removeBeforeToolStripMenuItem_Click; + // + // tsmiRemoveAfter + // + tsmiRemoveAfter.Enabled = false; + tsmiRemoveAfter.Image = Properties.Resources.delete; + tsmiRemoveAfter.Name = "tsmiRemoveAfter"; + tsmiRemoveAfter.Size = new System.Drawing.Size(215, 22); + tsmiRemoveAfter.Text = "Remove all after selected"; + tsmiRemoveAfter.ToolTipText = "Remove all symbols after current one"; + tsmiRemoveAfter.Click += removeAfterToolStripMenuItem_Click; + // + // tsmiCodeShift + // + tsmiCodeShift.Image = Properties.Resources.z_align_center; + tsmiCodeShift.Name = "tsmiCodeShift"; + tsmiCodeShift.Size = new System.Drawing.Size(215, 22); + tsmiCodeShift.Text = "Code Shift"; + tsmiCodeShift.ToolTipText = "Shift the font on the code line"; + tsmiCodeShift.Click += CodeShiftToolStripMenuItem_Click; + // // ilMiniatures // ilMiniatures.ColorDepth = System.Windows.Forms.ColorDepth.Depth4Bit; @@ -607,6 +691,15 @@ removeAfterToolStripMenuItem.ToolTipText = "Remove all symbols after current one"; removeAfterToolStripMenuItem.Click += removeAfterToolStripMenuItem_Click; // + // CodeShiftToolStripMenuItem + // + CodeShiftToolStripMenuItem.Image = Properties.Resources.z_align_center; + CodeShiftToolStripMenuItem.Name = "CodeShiftToolStripMenuItem"; + CodeShiftToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + CodeShiftToolStripMenuItem.Text = "Code shift"; + CodeShiftToolStripMenuItem.ToolTipText = "Shift the font on the code line"; + CodeShiftToolStripMenuItem.Click += CodeShiftToolStripMenuItem_Click; + // // canvasToolStripMenuItem // canvasToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { ClearToolStripMenuItem, shiftUpToolStripMenuItem, shiftDownToolStripMenuItem, shiftLeftToolStripMenuItem, shiftRightToolStripMenuItem, invertToolStripMenuItem, mirrorXToolStripMenuItem, mirrorYToolStripMenuItem, applyToolStripMenuItem }); @@ -771,15 +864,6 @@ toolTip1.SetToolTip(chkTopSide, "Height changes will be made on Top/Bottom side"); chkTopSide.UseVisualStyleBackColor = true; // - // CodeShiftToolStripMenuItem - // - CodeShiftToolStripMenuItem.Image = Properties.Resources.z_align_center; - CodeShiftToolStripMenuItem.Name = "CodeShiftToolStripMenuItem"; - CodeShiftToolStripMenuItem.Size = new System.Drawing.Size(215, 22); - CodeShiftToolStripMenuItem.Text = "Code shift"; - CodeShiftToolStripMenuItem.ToolTipText = "Shift the font on the code line"; - CodeShiftToolStripMenuItem.Click += CodeShiftToolStripMenuItem_Click; - // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); @@ -816,6 +900,7 @@ ((System.ComponentModel.ISupportInitialize)nudX).EndInit(); ((System.ComponentModel.ISupportInitialize)nudY).EndInit(); panel1.ResumeLayout(false); + cmMinilist.ResumeLayout(false); menuStrip1.ResumeLayout(false); menuStrip1.PerformLayout(); ResumeLayout(false); @@ -887,6 +972,14 @@ private System.Windows.Forms.ToolStripMenuItem redoToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem fontToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem CodeShiftToolStripMenuItem; + private System.Windows.Forms.ContextMenuStrip cmMinilist; + private System.Windows.Forms.ToolStripMenuItem tsmiRemoveBefore; + private System.Windows.Forms.ToolStripMenuItem tsmiRemoveAfter; + private System.Windows.Forms.ToolStripMenuItem tsmiRemoveSymbol; + private System.Windows.Forms.ToolStripMenuItem tsmiPrepensSymbol; + private System.Windows.Forms.ToolStripMenuItem tsmiAppendSymbol; + private System.Windows.Forms.ToolStripMenuItem tsmiCodeShift; + private System.Windows.Forms.ToolStripMenuItem tsmiMakeVarWidth; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index e86f9ed..86d69ac 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -73,6 +73,8 @@ namespace McBitFont { private void Form1_Load(object sender, EventArgs e) { lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; + tsmiMakeVarWidth.Visible = monospaced; + makeVarWidthToolStripMenuItem.Visible = monospaced; dotWidth = (int)nudX.Value; dotHeight = (int)nudY.Value; @@ -101,6 +103,11 @@ namespace McBitFont { if (Environment.GetCommandLineArgs().Length > 1) { LoadProject(Environment.GetCommandLineArgs()[1]); } + lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; + tsmiMakeVarWidth.Visible = monospaced; + makeVarWidthToolStripMenuItem.Visible = monospaced; + tsmiCodeShift.Visible = frames.Count > 1; + CodeShiftToolStripMenuItem.Visible = frames.Count > 1; Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); } @@ -635,7 +642,9 @@ namespace McBitFont { monospaced = form.rbMono.Checked; } makeVarWidthToolStripMenuItem.Visible = monospaced; + tsmiMakeVarWidth.Visible = monospaced; CodeShiftToolStripMenuItem.Visible = !form.cbSingle.Checked; + tsmiCodeShift.Visible = !form.cbSingle.Checked; lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; codepage = (form.cbEncoding.SelectedItem as New.EncodingItem).Code; foreach (FrameMiniature ff in frames) { @@ -653,7 +662,7 @@ namespace McBitFont { prjFileName = ""; this.Text = "McBitFont " + version + " - " + prjName; modified = false; - checkForAdd(); + CheckForAdd(); fbuffer = false; miniList.Items[0].Selected = true; miniList.Refresh(); @@ -673,6 +682,9 @@ namespace McBitFont { removeSymbolToolStripMenuItem.Enabled = false; removeBeforeToolStripMenuItem.Enabled = false; removeAfterToolStripMenuItem.Enabled = false; + tsmiRemoveSymbol.Enabled = false; + tsmiRemoveBefore.Enabled = false; + tsmiRemoveAfter.Enabled = false; copyToolStripMenuItem.Enabled = false; pasteToolStripMenuItem.Enabled = false; return; @@ -692,19 +704,27 @@ namespace McBitFont { ff = frames.Find(x => x.code == code); if (frames.Count > 1 && (ff.Equals(frames.First()) || ff.Equals(frames.Last()))) { removeSymbolToolStripMenuItem.Enabled = true; + tsmiRemoveSymbol.Enabled = true; } else { removeSymbolToolStripMenuItem.Enabled = false; + tsmiRemoveSymbol.Enabled = false; } copyToolStripMenuItem.Enabled = true; if (ff.Equals(frames.First())) { removeBeforeToolStripMenuItem.Enabled = false; removeAfterToolStripMenuItem.Enabled = true; + tsmiRemoveBefore.Enabled = false; + tsmiRemoveAfter.Enabled = true; } else if (ff.Equals(frames.Last())) { removeBeforeToolStripMenuItem.Enabled = true; removeAfterToolStripMenuItem.Enabled = false; + tsmiRemoveBefore.Enabled = true; + tsmiRemoveAfter.Enabled = false; } else { removeBeforeToolStripMenuItem.Enabled = true; removeAfterToolStripMenuItem.Enabled = true; + tsmiRemoveBefore.Enabled = true; + tsmiRemoveAfter.Enabled = true; } if (fbuffer) pasteToolStripMenuItem.Enabled = true; @@ -731,6 +751,7 @@ namespace McBitFont { lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; frames = sav.frames; makeVarWidthToolStripMenuItem.Visible = monospaced; + tsmiMakeVarWidth.Visible = monospaced; miniList.Items.Clear(); ilMiniatures.Images.Clear(); foreach (FrameMiniature ff in frames) { @@ -755,8 +776,16 @@ namespace McBitFont { prjFileName = filename; prjName = Path.GetFileNameWithoutExtension(filename); this.Text = "McBitFont " + version + " - " + prjName; - checkForAdd(); + CheckForAdd(); fbuffer = false; + + // Re-create history object + history = new CanvasHistory(); + + tsmiMakeVarWidth.Visible = monospaced; + makeVarWidthToolStripMenuItem.Visible = monospaced; + tsmiCodeShift.Visible = frames.Count > 1; + CodeShiftToolStripMenuItem.Visible = frames.Count > 1; } private void SaveProject(string filename) { @@ -803,7 +832,7 @@ namespace McBitFont { private void prependSymbolToolStripMenuItem_Click(object sender, EventArgs e) { FrameMiniature ff; - if (sender == prependSymbolToolStripMenuItem) { + if (sender == prependSymbolToolStripMenuItem || sender == tsmiPrepensSymbol) { ff = new FrameMiniature(frames.First().code - 1, dotWidth, dotHeight); frames.Insert(0, ff); } else { @@ -815,18 +844,30 @@ namespace McBitFont { ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff)); var sss = decodeSymbol(ff.code); miniList.Items.Add(s, s + ' ' + sss, s); - checkForAdd(); + CheckForAdd(); } - private void checkForAdd() { + private void CheckForAdd() { if (frames.Count > 1) { - if (frames.First().code > 0) prependSymbolToolStripMenuItem.Enabled = true; - else prependSymbolToolStripMenuItem.Enabled = false; - if (frames.Last().code < 255) appendSymbolToolStripMenuItem.Enabled = true; - else appendSymbolToolStripMenuItem.Enabled = false; + if (frames.First().code > 0) { + prependSymbolToolStripMenuItem.Enabled = true; + tsmiPrepensSymbol.Enabled = true; + }else { + prependSymbolToolStripMenuItem.Enabled = false; + tsmiPrepensSymbol.Enabled = false; + } + if (frames.Last().code < 255) { + appendSymbolToolStripMenuItem.Enabled = true; + tsmiAppendSymbol.Enabled = true; + } else { + appendSymbolToolStripMenuItem.Enabled = false; + tsmiAppendSymbol.Enabled = false; + } } else { prependSymbolToolStripMenuItem.Enabled = false; appendSymbolToolStripMenuItem.Enabled = false; + tsmiPrepensSymbol.Enabled = false; + tsmiAppendSymbol.Enabled = false; } } @@ -940,6 +981,7 @@ namespace McBitFont { private void makeVarWidthToolStripMenuItem_Click(object sender, EventArgs e) { monospaced = false; makeVarWidthToolStripMenuItem.Visible = false; + tsmiMakeVarWidth.Visible = false; lblType.Text = "Variable width / Single"; prjModified = true; } @@ -998,13 +1040,13 @@ namespace McBitFont { miniList.Refresh(); miniList.Items[sel].Selected = true; dotPanel.Refresh(); - + Cursor.Current = Cursors.Default; } csform.Dispose(); history.Clear(); - checkForAdd(); + CheckForAdd(); prjModified = true; } diff --git a/McBitFont/Form1.resx b/McBitFont/Form1.resx index 3b3c54d..fb11a13 100644 --- a/McBitFont/Form1.resx +++ b/McBitFont/Form1.resx @@ -120,6 +120,9 @@ 436, 17 + + 534, 17 + 17, 17 diff --git a/TODO.txt b/TODO.txt index 3fbbc7c..69c4ca2 100644 --- a/TODO.txt +++ b/TODO.txt @@ -7,7 +7,7 @@ V Change Menu icons V Re-arranged menu items Functionality: -- Context menu in symbol navigator +V Context menu in symbol navigator V Delete symbols before/after selected V Shift all symbols on code line (change symbol codes) V Specify starting code (extends the shift) From 0f2da5542c89e8018c2ac595dd7a8fb54b5e176e Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Thu, 22 May 2025 20:32:15 +0300 Subject: [PATCH 14/29] TODO feature: Image import from a file --- .gitignore | 2 + McBitFont/Form1.Designer.cs | 14 +- McBitFont/Form1.cs | 26 +- McBitFont/ImageImporter.Designer.cs | 418 +++++++++++++++++++++ McBitFont/ImageImporter.cs | 235 ++++++++++++ McBitFont/ImageImporter.resx | 126 +++++++ McBitFont/Properties/Resources.Designer.cs | 112 +----- McBitFont/Properties/Resources.resx | 176 ++++----- McBitFont/Resources/arrow_inout.png | Bin 0 -> 551 bytes McBitFont/Resources/calculator.png | Bin 0 -> 543 bytes McBitFont/Resources/folder_image.png | Bin 0 -> 677 bytes TODO.txt | 2 +- examples/tests/1310396764_rss.png | Bin 0 -> 4029 bytes examples/tests/1310396765_msn.png | Bin 0 -> 4453 bytes examples/tests/1310396769_gmail.png | Bin 0 -> 4554 bytes examples/tests/1310396774_facebook.png | Bin 0 -> 3700 bytes examples/tests/1310396812_apple.png | Bin 0 -> 3670 bytes examples/tests/1310396820_linux.png | Bin 0 -> 4115 bytes examples/tests/1310396823_icq.png | Bin 0 -> 4607 bytes examples/tests/1310396825_YouTube.png | Bin 0 -> 3581 bytes examples/tests/derevya.jpg | Bin 0 -> 43121 bytes examples/tests/flipper.png | Bin 0 -> 20950 bytes examples/tests/flipper_1.png | Bin 0 -> 1842 bytes examples/tests/flipper_2.png | Bin 0 -> 7654 bytes examples/tests/flipper_3.png | Bin 0 -> 2380 bytes examples/tests/flipper_6.png | Bin 0 -> 2402 bytes examples/tests/flipper_multiple.png | Bin 0 -> 2118009 bytes examples/tests/flipper_round.png | Bin 0 -> 2164 bytes examples/tests/panda.png | Bin 0 -> 127936 bytes icons/famfamfam/arrow_inout.png | Bin 0 -> 551 bytes icons/famfamfam/calculator.png | Bin 0 -> 543 bytes icons/famfamfam/folder_image.png | Bin 0 -> 677 bytes 32 files changed, 907 insertions(+), 204 deletions(-) create mode 100644 McBitFont/ImageImporter.Designer.cs create mode 100644 McBitFont/ImageImporter.cs create mode 100644 McBitFont/ImageImporter.resx create mode 100644 McBitFont/Resources/arrow_inout.png create mode 100644 McBitFont/Resources/calculator.png create mode 100644 McBitFont/Resources/folder_image.png create mode 100644 examples/tests/1310396764_rss.png create mode 100644 examples/tests/1310396765_msn.png create mode 100644 examples/tests/1310396769_gmail.png create mode 100644 examples/tests/1310396774_facebook.png create mode 100644 examples/tests/1310396812_apple.png create mode 100644 examples/tests/1310396820_linux.png create mode 100644 examples/tests/1310396823_icq.png create mode 100644 examples/tests/1310396825_YouTube.png create mode 100644 examples/tests/derevya.jpg create mode 100644 examples/tests/flipper.png create mode 100644 examples/tests/flipper_1.png create mode 100644 examples/tests/flipper_2.png create mode 100644 examples/tests/flipper_3.png create mode 100644 examples/tests/flipper_6.png create mode 100644 examples/tests/flipper_multiple.png create mode 100644 examples/tests/flipper_round.png create mode 100644 examples/tests/panda.png create mode 100644 icons/famfamfam/arrow_inout.png create mode 100644 icons/famfamfam/calculator.png create mode 100644 icons/famfamfam/folder_image.png diff --git a/.gitignore b/.gitignore index a11f506..f635fe4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ ## ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore +examples/tests/32x32/ + # User-specific files *.rsuser *.suo diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 753479c..180d8a9 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -95,6 +95,7 @@ toolTip1 = new System.Windows.Forms.ToolTip(components); chkLeftSide = new System.Windows.Forms.CheckBox(); chkTopSide = new System.Windows.Forms.CheckBox(); + importImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -363,7 +364,7 @@ // cmMinilist.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { tsmiMakeVarWidth, tsmiPrepensSymbol, tsmiAppendSymbol, tsmiRemoveSymbol, tsmiRemoveBefore, tsmiRemoveAfter, tsmiCodeShift }); cmMinilist.Name = "cmMinilist"; - cmMinilist.Size = new System.Drawing.Size(216, 180); + cmMinilist.Size = new System.Drawing.Size(216, 158); // // tsmiMakeVarWidth // @@ -495,7 +496,7 @@ // // fileToolStripMenuItem // - fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, exportToolStripMenuItem, exitToolStripMenuItem }); + fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, importImageToolStripMenuItem, exportToolStripMenuItem, exitToolStripMenuItem }); fileToolStripMenuItem.Name = "fileToolStripMenuItem"; fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); fileToolStripMenuItem.Text = "File"; @@ -864,6 +865,14 @@ toolTip1.SetToolTip(chkTopSide, "Height changes will be made on Top/Bottom side"); chkTopSide.UseVisualStyleBackColor = true; // + // importImageToolStripMenuItem + // + importImageToolStripMenuItem.Image = Properties.Resources.z_folder_image; + importImageToolStripMenuItem.Name = "importImageToolStripMenuItem"; + importImageToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + importImageToolStripMenuItem.Text = "Import image"; + importImageToolStripMenuItem.Click += importImageToolStripMenuItem_Click; + // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); @@ -980,6 +989,7 @@ private System.Windows.Forms.ToolStripMenuItem tsmiAppendSymbol; private System.Windows.Forms.ToolStripMenuItem tsmiCodeShift; private System.Windows.Forms.ToolStripMenuItem tsmiMakeVarWidth; + private System.Windows.Forms.ToolStripMenuItem importImageToolStripMenuItem; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 86d69ac..efceba7 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -471,7 +471,7 @@ namespace McBitFont { private void button1_Click(object sender, EventArgs e) { if (modified) { if (MessageBox.Show("Current symbol is modified.\nDo you want to save the changes?", "Symbol was modified!", MessageBoxButtons.YesNo) == DialogResult.Yes) { - saveFrame(); + SaveFrame(); } else { f = CopyFrame(frames.Find(x => x.code == f.code)); } @@ -484,10 +484,10 @@ namespace McBitFont { } private void button2_Click(object sender, EventArgs e) { - saveFrame(); + SaveFrame(); } - private void saveFrame() { + private void SaveFrame() { int index = frames.FindIndex(x => x.code == f.code); frames[index] = f; @@ -852,7 +852,7 @@ namespace McBitFont { if (frames.First().code > 0) { prependSymbolToolStripMenuItem.Enabled = true; tsmiPrepensSymbol.Enabled = true; - }else { + } else { prependSymbolToolStripMenuItem.Enabled = false; tsmiPrepensSymbol.Enabled = false; } @@ -908,7 +908,7 @@ namespace McBitFont { private void checkModifiedFrame() { if (modified) { if (MessageBox.Show("Current symbol is modified.\nDo you want to save the changes?", "Symbol was modified!", MessageBoxButtons.YesNo) == DialogResult.Yes) { - saveFrame(); + SaveFrame(); } modified = false; } @@ -1050,5 +1050,21 @@ namespace McBitFont { prjModified = true; } + + private void importImageToolStripMenuItem_Click(object sender, EventArgs e) { + ImageImporter iform = new ImageImporter(f.width, f.height); + if (iform.ShowDialog() == DialogResult.OK) { + history.AddPre(f); + for (int i = 0; i < iform.bmpScaled.Width; i++) { + for (int j = 0; j < iform.bmpScaled.Height; j++) { + f.data[i,j] = iform.bmpScaled.GetPixel(i, j).ToArgb().Equals(Color.Black.ToArgb()); + } + } + history.AddPost(f); + dotPanel.Refresh(); + modified = true; + } + iform.Dispose(); + } } } diff --git a/McBitFont/ImageImporter.Designer.cs b/McBitFont/ImageImporter.Designer.cs new file mode 100644 index 0000000..17477ed --- /dev/null +++ b/McBitFont/ImageImporter.Designer.cs @@ -0,0 +1,418 @@ +namespace McBitFont { + partial class ImageImporter { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() { + components = new System.ComponentModel.Container(); + btnOK = new System.Windows.Forms.Button(); + btnCancel = new System.Windows.Forms.Button(); + pbOriginal = new System.Windows.Forms.PictureBox(); + pbProcessed = new System.Windows.Forms.PictureBox(); + btnLoadImage = new System.Windows.Forms.Button(); + dlgLoadImage = new System.Windows.Forms.OpenFileDialog(); + pbScaled = new System.Windows.Forms.PictureBox(); + btnConvert = new System.Windows.Forms.Button(); + tbPixelization = new System.Windows.Forms.TrackBar(); + lblPixelization = new System.Windows.Forms.Label(); + lblThreshold = new System.Windows.Forms.Label(); + tbThreshold = new System.Windows.Forms.TrackBar(); + lblWhite = new System.Windows.Forms.Label(); + lblBlack = new System.Windows.Forms.Label(); + btnResize = new System.Windows.Forms.Button(); + lblOrigSize = new System.Windows.Forms.Label(); + lblProcessedSize = new System.Windows.Forms.Label(); + lblScaledSize = new System.Windows.Forms.Label(); + label1 = new System.Windows.Forms.Label(); + label2 = new System.Windows.Forms.Label(); + label3 = new System.Windows.Forms.Label(); + label4 = new System.Windows.Forms.Label(); + lblTransparency = new System.Windows.Forms.Label(); + tbTransparency = new System.Windows.Forms.TrackBar(); + toolTip1 = new System.Windows.Forms.ToolTip(components); + label5 = new System.Windows.Forms.Label(); + label6 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)pbOriginal).BeginInit(); + ((System.ComponentModel.ISupportInitialize)pbProcessed).BeginInit(); + ((System.ComponentModel.ISupportInitialize)pbScaled).BeginInit(); + ((System.ComponentModel.ISupportInitialize)tbPixelization).BeginInit(); + ((System.ComponentModel.ISupportInitialize)tbThreshold).BeginInit(); + ((System.ComponentModel.ISupportInitialize)tbTransparency).BeginInit(); + SuspendLayout(); + // + // btnOK + // + btnOK.Enabled = false; + btnOK.Location = new System.Drawing.Point(171, 345); + btnOK.Name = "btnOK"; + btnOK.Size = new System.Drawing.Size(88, 27); + btnOK.TabIndex = 0; + btnOK.Text = "OK"; + btnOK.UseVisualStyleBackColor = true; + btnOK.Click += btnOK_Click; + // + // btnCancel + // + btnCancel.Location = new System.Drawing.Point(377, 345); + btnCancel.Name = "btnCancel"; + btnCancel.Size = new System.Drawing.Size(88, 27); + btnCancel.TabIndex = 1; + btnCancel.Text = "Cancel"; + btnCancel.UseVisualStyleBackColor = true; + btnCancel.Click += btnCancel_Click; + // + // pbOriginal + // + pbOriginal.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + pbOriginal.Location = new System.Drawing.Point(12, 27); + pbOriginal.Name = "pbOriginal"; + pbOriginal.Size = new System.Drawing.Size(200, 200); + pbOriginal.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + pbOriginal.TabIndex = 2; + pbOriginal.TabStop = false; + // + // pbProcessed + // + pbProcessed.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + pbProcessed.Location = new System.Drawing.Point(218, 27); + pbProcessed.Name = "pbProcessed"; + pbProcessed.Size = new System.Drawing.Size(200, 200); + pbProcessed.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + pbProcessed.TabIndex = 3; + pbProcessed.TabStop = false; + // + // btnLoadImage + // + btnLoadImage.Image = Properties.Resources.folder_open; + btnLoadImage.Location = new System.Drawing.Point(57, 233); + btnLoadImage.Name = "btnLoadImage"; + btnLoadImage.Size = new System.Drawing.Size(110, 27); + btnLoadImage.TabIndex = 4; + btnLoadImage.Text = " Load Image"; + btnLoadImage.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + btnLoadImage.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + btnLoadImage.UseVisualStyleBackColor = true; + btnLoadImage.Click += btnLoadImage_Click; + // + // dlgLoadImage + // + dlgLoadImage.AddExtension = false; + dlgLoadImage.Filter = "Images|*.bmp;*.png;*.gif;*.jpg;*.jpeg|All files|*.*"; + dlgLoadImage.ShowPreview = true; + // + // pbScaled + // + pbScaled.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + pbScaled.Location = new System.Drawing.Point(424, 27); + pbScaled.Name = "pbScaled"; + pbScaled.Size = new System.Drawing.Size(200, 200); + pbScaled.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + pbScaled.TabIndex = 5; + pbScaled.TabStop = false; + // + // btnConvert + // + btnConvert.Enabled = false; + btnConvert.Image = Properties.Resources.calculator; + btnConvert.Location = new System.Drawing.Point(263, 233); + btnConvert.Name = "btnConvert"; + btnConvert.Size = new System.Drawing.Size(110, 27); + btnConvert.TabIndex = 6; + btnConvert.Text = " Convert"; + btnConvert.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + btnConvert.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + btnConvert.UseVisualStyleBackColor = true; + btnConvert.Click += btnConvert_Click; + // + // tbPixelization + // + tbPixelization.AutoSize = false; + tbPixelization.Cursor = System.Windows.Forms.Cursors.SizeWE; + tbPixelization.LargeChange = 2; + tbPixelization.Location = new System.Drawing.Point(39, 296); + tbPixelization.Maximum = 25; + tbPixelization.Minimum = 1; + tbPixelization.Name = "tbPixelization"; + tbPixelization.Size = new System.Drawing.Size(128, 32); + tbPixelization.TabIndex = 7; + tbPixelization.Value = 1; + tbPixelization.ValueChanged += tbPixelization_ValueChanged; + tbPixelization.KeyDown += tbPixelization_KeyDown; + // + // lblPixelization + // + lblPixelization.Location = new System.Drawing.Point(39, 323); + lblPixelization.Name = "lblPixelization"; + lblPixelization.Size = new System.Drawing.Size(128, 15); + lblPixelization.TabIndex = 8; + lblPixelization.Text = "Pixelization: 1"; + lblPixelization.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblThreshold + // + lblThreshold.Location = new System.Drawing.Point(263, 323); + lblThreshold.Name = "lblThreshold"; + lblThreshold.Size = new System.Drawing.Size(110, 15); + lblThreshold.TabIndex = 10; + lblThreshold.Text = "Threshold: 0"; + lblThreshold.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbThreshold + // + tbThreshold.AutoSize = false; + tbThreshold.Cursor = System.Windows.Forms.Cursors.SizeWE; + tbThreshold.LargeChange = 10; + tbThreshold.Location = new System.Drawing.Point(254, 296); + tbThreshold.Maximum = 127; + tbThreshold.Minimum = -128; + tbThreshold.Name = "tbThreshold"; + tbThreshold.Size = new System.Drawing.Size(128, 32); + tbThreshold.TabIndex = 9; + tbThreshold.TickFrequency = 8; + tbThreshold.ValueChanged += tbThreshold_ValueChanged; + tbThreshold.KeyDown += tbThreshold_KeyDown; + // + // lblWhite + // + lblWhite.AutoSize = true; + lblWhite.Location = new System.Drawing.Point(221, 282); + lblWhite.Name = "lblWhite"; + lblWhite.Size = new System.Drawing.Size(67, 15); + lblWhite.TabIndex = 11; + lblWhite.Text = "More white"; + lblWhite.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // lblBlack + // + lblBlack.AutoSize = true; + lblBlack.Location = new System.Drawing.Point(349, 282); + lblBlack.Name = "lblBlack"; + lblBlack.Size = new System.Drawing.Size(66, 15); + lblBlack.TabIndex = 12; + lblBlack.Text = "More black"; + // + // btnResize + // + btnResize.Enabled = false; + btnResize.Image = Properties.Resources.arrow_inout; + btnResize.Location = new System.Drawing.Point(464, 233); + btnResize.Name = "btnResize"; + btnResize.Size = new System.Drawing.Size(120, 27); + btnResize.TabIndex = 13; + btnResize.Text = " Resize to frame"; + btnResize.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + btnResize.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + btnResize.UseVisualStyleBackColor = true; + btnResize.Click += btnResize_Click; + // + // lblOrigSize + // + lblOrigSize.AutoSize = true; + lblOrigSize.Location = new System.Drawing.Point(12, 9); + lblOrigSize.Name = "lblOrigSize"; + lblOrigSize.Size = new System.Drawing.Size(30, 15); + lblOrigSize.TabIndex = 14; + lblOrigSize.Text = "0 x 0"; + // + // lblProcessedSize + // + lblProcessedSize.AutoSize = true; + lblProcessedSize.Location = new System.Drawing.Point(218, 9); + lblProcessedSize.Name = "lblProcessedSize"; + lblProcessedSize.Size = new System.Drawing.Size(30, 15); + lblProcessedSize.TabIndex = 15; + lblProcessedSize.Text = "0 x 0"; + // + // lblScaledSize + // + lblScaledSize.AutoSize = true; + lblScaledSize.Location = new System.Drawing.Point(424, 9); + lblScaledSize.Name = "lblScaledSize"; + lblScaledSize.Size = new System.Drawing.Size(30, 15); + lblScaledSize.TabIndex = 16; + lblScaledSize.Text = "0 x 0"; + // + // label1 + // + label1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + label1.Location = new System.Drawing.Point(6, 279); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(209, 2); + label1.TabIndex = 17; + // + // label2 + // + label2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + label2.Location = new System.Drawing.Point(421, 279); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(209, 2); + label2.TabIndex = 18; + // + // label3 + // + label3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + label3.Location = new System.Drawing.Point(421, 230); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(2, 51); + label3.TabIndex = 19; + // + // label4 + // + label4.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + label4.Location = new System.Drawing.Point(215, 230); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(2, 51); + label4.TabIndex = 20; + // + // lblTransparency + // + lblTransparency.Location = new System.Drawing.Point(457, 323); + lblTransparency.Name = "lblTransparency"; + lblTransparency.Size = new System.Drawing.Size(144, 15); + lblTransparency.TabIndex = 22; + lblTransparency.Text = "Transp. threshold: 32"; + lblTransparency.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tbTransparency + // + tbTransparency.AutoSize = false; + tbTransparency.Cursor = System.Windows.Forms.Cursors.SizeWE; + tbTransparency.LargeChange = 16; + tbTransparency.Location = new System.Drawing.Point(464, 296); + tbTransparency.Maximum = 255; + tbTransparency.Name = "tbTransparency"; + tbTransparency.Size = new System.Drawing.Size(128, 32); + tbTransparency.SmallChange = 4; + tbTransparency.TabIndex = 21; + tbTransparency.TickFrequency = 8; + toolTip1.SetToolTip(tbTransparency, "Transparency threshold. Higher value makes more white"); + tbTransparency.Value = 4; + tbTransparency.ValueChanged += tbTransparency_ValueChanged; + tbTransparency.KeyDown += tbTransparency_KeyDown; + // + // toolTip1 + // + toolTip1.AutoPopDelay = 10000; + toolTip1.InitialDelay = 500; + toolTip1.ReshowDelay = 100; + // + // label5 + // + label5.AutoSize = true; + label5.Location = new System.Drawing.Point(438, 282); + label5.Name = "label5"; + label5.Size = new System.Drawing.Size(66, 15); + label5.TabIndex = 24; + label5.Text = "More black"; + // + // label6 + // + label6.AutoSize = true; + label6.Location = new System.Drawing.Point(555, 282); + label6.Name = "label6"; + label6.Size = new System.Drawing.Size(67, 15); + label6.TabIndex = 23; + label6.Text = "More white"; + label6.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // ImageImporter + // + AcceptButton = btnOK; + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + CancelButton = btnCancel; + ClientSize = new System.Drawing.Size(634, 381); + Controls.Add(label5); + Controls.Add(label6); + Controls.Add(lblTransparency); + Controls.Add(tbTransparency); + Controls.Add(label4); + Controls.Add(label3); + Controls.Add(label2); + Controls.Add(label1); + Controls.Add(lblScaledSize); + Controls.Add(lblProcessedSize); + Controls.Add(lblOrigSize); + Controls.Add(btnResize); + Controls.Add(lblBlack); + Controls.Add(lblWhite); + Controls.Add(lblThreshold); + Controls.Add(tbThreshold); + Controls.Add(lblPixelization); + Controls.Add(tbPixelization); + Controls.Add(btnConvert); + Controls.Add(pbScaled); + Controls.Add(btnLoadImage); + Controls.Add(pbProcessed); + Controls.Add(pbOriginal); + Controls.Add(btnCancel); + Controls.Add(btnOK); + FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + MaximizeBox = false; + MinimizeBox = false; + Name = "ImageImporter"; + ShowIcon = false; + ShowInTaskbar = false; + StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + Text = "Import Image"; + Paint += ImageImporter_Paint; + ((System.ComponentModel.ISupportInitialize)pbOriginal).EndInit(); + ((System.ComponentModel.ISupportInitialize)pbProcessed).EndInit(); + ((System.ComponentModel.ISupportInitialize)pbScaled).EndInit(); + ((System.ComponentModel.ISupportInitialize)tbPixelization).EndInit(); + ((System.ComponentModel.ISupportInitialize)tbThreshold).EndInit(); + ((System.ComponentModel.ISupportInitialize)tbTransparency).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.PictureBox pbOriginal; + private System.Windows.Forms.PictureBox pbProcessed; + private System.Windows.Forms.Button btnLoadImage; + private System.Windows.Forms.OpenFileDialog dlgLoadImage; + private System.Windows.Forms.PictureBox pbScaled; + private System.Windows.Forms.Button btnConvert; + private System.Windows.Forms.TrackBar tbPixelization; + private System.Windows.Forms.Label lblPixelization; + private System.Windows.Forms.Label lblThreshold; + private System.Windows.Forms.TrackBar tbThreshold; + private System.Windows.Forms.Label lblWhite; + private System.Windows.Forms.Label lblBlack; + private System.Windows.Forms.Button btnResize; + private System.Windows.Forms.Label lblOrigSize; + private System.Windows.Forms.Label lblProcessedSize; + private System.Windows.Forms.Label lblScaledSize; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label lblTransparency; + private System.Windows.Forms.TrackBar tbTransparency; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + } +} \ No newline at end of file diff --git a/McBitFont/ImageImporter.cs b/McBitFont/ImageImporter.cs new file mode 100644 index 0000000..3e0adfc --- /dev/null +++ b/McBitFont/ImageImporter.cs @@ -0,0 +1,235 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Data; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace McBitFont { + public partial class ImageImporter : Form { + + private int fw, fh, pixelization, threshold; + private Color[] colorPool = [Color.Black, Color.White]; + private Bitmap bmpOriginal, bmpProcessed; + public Bitmap bmpScaled; + + public ImageImporter(int width, int height) { + InitializeComponent(); + fw = width; + fh = height; + } + + private void UpdateControls(byte level) { + switch (level) { + case 1: + bmpProcessed = null; + bmpScaled = null; + pbProcessed.Image = null; + pbScaled.Image = null; + lblProcessedSize.Text = "0 x 0"; + lblScaledSize.Text = "0 x 0"; + btnResize.Enabled = false; + btnOK.Enabled = false; + btnConvert.Enabled = true; + break; + case 2: + bmpScaled = null; + pbScaled.Image = null; + lblScaledSize.Text = "0 x 0"; + btnOK.Enabled = false; + btnResize.Enabled = true; + break; + case 3: + btnOK.Enabled = true; + break; + } + } + + private void btnOK_Click(object sender, EventArgs e) { + DialogResult = DialogResult.OK; + } + + private void btnCancel_Click(object sender, EventArgs e) { + DialogResult = DialogResult.Cancel; + } + + // Pick a color from color pool that is closest to an average of given colors + private Color PickColor(Color[] colors) { + int i; + int r = 0; int g = 0; int b = 0; + + // Calculating average color amongst givet color set + for (i = 0; i < colors.Length; i++) { + r += colors[i].R; + g += colors[i].G; + b += colors[i].B; + } + r /= colors.Length; + g /= colors.Length; + b /= colors.Length; + + int near = 1000; + int ind = 0; + + // Picking a closts color from color pool + for (i = 0; i < colorPool.Length; i++) { + int valR = colorPool[i].R - r + threshold; + int valG = colorPool[i].R - g + threshold; + int valB = colorPool[i].R - b + threshold; + if (valR < 0) valR = -valR; + if (valG < 0) valG = -valG; + if (valB < 0) valB = -valB; + + threshold = tbThreshold.Value; + int total = valR + valG + valB; + + if (total < near) { + ind = i; + near = total; + } + } + return colorPool[ind]; + } + + private static void DrawArrow(Graphics g, Point from, Point to, float thickness = 1, Color? color = null) { + if (color == null) color = Color.Black; + var pen = new Pen((Color)color, thickness) { + CustomEndCap = new AdjustableArrowCap(4, 5) + }; + g.DrawLine(pen, from, to); + } + + private void tbPixelization_ValueChanged(object sender, EventArgs e) { + lblPixelization.Text = "Pixelization: " + tbPixelization.Value.ToString(); + } + + private void tbThreshold_ValueChanged(object sender, EventArgs e) { + lblThreshold.Text = "Threshold: " + tbThreshold.Value.ToString(); + } + + private void btnLoadImage_Click(object sender, EventArgs e) { + if (dlgLoadImage.ShowDialog() == DialogResult.OK) { + bmpOriginal = new Bitmap(dlgLoadImage.FileName); + + pbOriginal.Image = Draw200x200(bmpOriginal); + lblOrigSize.Text = bmpOriginal.Width.ToString() + " x " + bmpOriginal.Height.ToString() + + " (" + pbOriginal.Image.Width.ToString() + " x " + pbOriginal.Image.Height.ToString() + ")"; + + // Clear other images + UpdateControls(1); + } + } + + private void btnConvert_Click(object sender, EventArgs e) { + pixelization = tbPixelization.Value; + //Bitmap bmOrig = (Bitmap)pbOriginal.Image; + bmpProcessed = new Bitmap(bmpOriginal.Width, bmpOriginal.Height); + + // Processing image + using (Graphics g = Graphics.FromImage(bmpProcessed)) { + List block; + Rectangle rect = new Rectangle(); + SolidBrush sb = new SolidBrush(Color.Black); + Color final = Color.Black; + Color pixel; + + // Going through original image with steps = pixelization + for (int x = 0; x < bmpOriginal.Width; x += pixelization) { + for (int y = 0; y < bmpOriginal.Height; y += pixelization) { + block = []; + + // Going throug a block pixel by pixel to calculate its average color later + for (int v = 0; v < pixelization; v++) { + for (int c = 0; c < pixelization; c++) { + if (x + v < bmpOriginal.Width && y + c < bmpOriginal.Height) { + pixel = bmpOriginal.GetPixel(x + v, y + c); + if (pixel.A <= tbTransparency.Value) pixel = Color.White; + block.Add(pixel); + } + } + } + + // Getting a color from the color pool and painting the block + if (block.Count > 0) { + final = PickColor(block.ToArray()); + sb.Color = final; + + rect.X = x; + rect.Y = y; + rect.Width = pixelization; + rect.Height = pixelization; + + g.FillRectangle(sb, rect); + } + } + } + } + + pbProcessed.Image = Draw200x200(bmpProcessed); + lblProcessedSize.Text = bmpProcessed.Width.ToString() + " x " + bmpProcessed.Height.ToString() + + " (" + pbProcessed.Image.Width.ToString() + " x " + pbProcessed.Image.Height.ToString() + ")"; + + UpdateControls(2); + } + + private void btnResize_Click(object sender, EventArgs e) { + bmpScaled = DrawScaled(bmpProcessed, fw, fh); + + pbScaled.Image = Draw200x200(bmpScaled); + lblScaledSize.Text = bmpScaled.Width.ToString() + " x " + bmpScaled.Height.ToString() + + " (" + pbScaled.Image.Width.ToString() + " x " + pbScaled.Image.Height.ToString() + ")"; + UpdateControls(3); + } + + // Draw 200x200 bitmap for picturebox + private static Bitmap Draw200x200(Bitmap bmpRef) { + return DrawScaled(bmpRef, 200, 200); + } + + // Draw scaled bitmap keeping aspect ratio + private static Bitmap DrawScaled(Bitmap bmpRef, int w, int h) { + var scale = Math.Min(w / (double)bmpRef.Width, h / (double)bmpRef.Height); + var bmpNew = new Bitmap((int)(bmpRef.Width * scale), (int)(bmpRef.Height * scale)); + + using (Graphics g = Graphics.FromImage(bmpNew)) { + g.InterpolationMode = InterpolationMode.NearestNeighbor; + g.PixelOffsetMode = PixelOffsetMode.Half; + g.DrawImage(bmpRef, 0, 0, bmpNew.Width, bmpNew.Height); + } + + return bmpNew; + } + + private void tbThreshold_KeyDown(object sender, KeyEventArgs e) { + if (e.KeyCode == Keys.C) { + tbThreshold.Value = 0; + } + } + + private void tbPixelization_KeyDown(object sender, KeyEventArgs e) { + if (e.KeyCode == Keys.C) { + tbPixelization.Value = 1; + } + } + + private void tbTransparency_ValueChanged(object sender, EventArgs e) { + lblTransparency.Text = "Transp. threshold: " + tbTransparency.Value.ToString(); + } + + private void tbTransparency_KeyDown(object sender, KeyEventArgs e) { + if (e.KeyCode == Keys.C) { + tbTransparency.Value = 32; + } + } + + private void ImageImporter_Paint(object sender, PaintEventArgs e) { + DrawArrow(e.Graphics, new Point(175, 246), new Point(255, 246), 2, Color.SlateGray); + DrawArrow(e.Graphics, new Point(380, 246), new Point(455, 246), 2, Color.SlateGray); + } + } +} diff --git a/McBitFont/ImageImporter.resx b/McBitFont/ImageImporter.resx new file mode 100644 index 0000000..9a6538c --- /dev/null +++ b/McBitFont/ImageImporter.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 147, 17 + + \ No newline at end of file diff --git a/McBitFont/Properties/Resources.Designer.cs b/McBitFont/Properties/Resources.Designer.cs index 844f1e4..2d26efd 100644 --- a/McBitFont/Properties/Resources.Designer.cs +++ b/McBitFont/Properties/Resources.Designer.cs @@ -60,36 +60,6 @@ namespace McBitFont.Properties { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap action_add { - get { - object obj = ResourceManager.GetObject("action_add", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap action_check { - get { - object obj = ResourceManager.GetObject("action_check", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap action_remove { - get { - object obj = ResourceManager.GetObject("action_remove", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -103,29 +73,9 @@ namespace McBitFont.Properties { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap arrow_back { + internal static System.Drawing.Bitmap arrow_inout { get { - object obj = ResourceManager.GetObject("arrow_back", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap arrow_down { - get { - object obj = ResourceManager.GetObject("arrow_down", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap arrow_next { - get { - object obj = ResourceManager.GetObject("arrow_next", resourceCulture); + object obj = ResourceManager.GetObject("arrow_inout", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -143,9 +93,9 @@ namespace McBitFont.Properties { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap arrow_top { + internal static System.Drawing.Bitmap arrow_undo { get { - object obj = ResourceManager.GetObject("arrow_top", resourceCulture); + object obj = ResourceManager.GetObject("arrow_undo", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -153,9 +103,9 @@ namespace McBitFont.Properties { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap arrow_undo { + internal static System.Drawing.Bitmap calculator { get { - object obj = ResourceManager.GetObject("arrow_undo", resourceCulture); + object obj = ResourceManager.GetObject("calculator", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -190,26 +140,6 @@ namespace McBitFont.Properties { } } - /// - /// Looks up a localized resource of type 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)); - } - } - - /// - /// Looks up a localized resource of type 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)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -310,26 +240,6 @@ namespace McBitFont.Properties { } } - /// - /// Looks up a localized resource of type 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)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap save { - get { - object obj = ResourceManager.GetObject("save", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -380,6 +290,16 @@ namespace McBitFont.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap z_folder_image { + get { + object obj = ResourceManager.GetObject("z_folder_image", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/McBitFont/Properties/Resources.resx b/McBitFont/Properties/Resources.resx index 085f933..e7614bc 100644 --- a/McBitFont/Properties/Resources.resx +++ b/McBitFont/Properties/Resources.resx @@ -118,121 +118,97 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\icon_32.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 - - - ..\Resources\arrow_next.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\arrow_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\icon.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\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-Shape-flip-horizontal.16.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\action_remove.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\folder_open.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-Page-paste.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\icon_64.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\Famfamfam-Silk-Folder.16.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\action_check.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\tick.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\arrow_redo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\arrow_undo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\arrow_right.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\arrow_left.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\..\icons\famfamfam\arrow_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\arrow_up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\shape_align_center.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\asterisk_orange.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\shading.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\package_go.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\contrast.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\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\delete.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-copy.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_inout.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\redo.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\icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_right.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\asterisk_orange.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\..\icons\famfamfam\arrow_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_up.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\shape_align_center.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\shading.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icon_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_undo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\tick.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrow_redo.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\Famfamfam-Silk-Shape-flip-horizontal.16.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\folder_image.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\undo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\calculator.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/arrow_inout.png b/McBitFont/Resources/arrow_inout.png new file mode 100644 index 0000000000000000000000000000000000000000..1b763672ab45b357e12b5e80783d1eac19aa429c GIT binary patch literal 551 zcmV+?0@(eDP)(HWsOpaN*gR#GpYXhHKL|EB8l4*TSU_vTR+aX-(Oi?S;8XyR2It;Uw(aI)9^S|=&95eX@({k9USGy;sUSUzeJ^< zMds$`SXy48v$4bI@E9?)it=aq5A%!jd|dcIDK=`4J{pRP&HSggJxd`56RH!pk4D8J p8dUC|epvAzhprq*3?{^oguj5GN{z3E7kmH!002ovPDHLkV1kL#`6U1V literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/calculator.png b/McBitFont/Resources/calculator.png new file mode 100644 index 0000000000000000000000000000000000000000..701a60a5a4d5673d0e3dd3fc8f316a2ebdd7fad9 GIT binary patch literal 543 zcmV+)0^t3LP)@VozFAzEvI&~0#LAwY>5FK39Rg@@bp>BeO zw$McyP2NlT?u|(Uk#_LH<=ljK?mhP;k2#J5heX6H%H{HXCX=~NBoZlARe>=^i32c& z5WqPH!!SOV%jHw0Qn@9fcc5CW>Jq=4|6^OL)m9$QSCC95(-PFn^7EgPn-5p9Xf%2j zT0v11s^jrE9G#rvGccKoT*Is1-&Wq)um?di)g6Ha$O`*a;Q$Laz(Aw!N@+sNvdAvNPK8Qq^wr_gSuSaWLG&M-o9;vBq+hGMlxGxKZ0_1Wz znv69PFh5E+M2titU>*W4;JO)kE$QxbPq19@+D+v)+U|OcH05hn- z^9B<522?CW@PXKACkTpQB_fKD)<(q6!a}sL(AX*3`zS0F zw6d`gQ6nNMK~Z8t%sab#@63NJ?$yLsPBCXV|NLj>KQK-b|H7&B_YQ%s0xN|BLAfl% zK+1oi+h>k$?dokba4tnaZVoGI#E^0B%H#h38c1|CdK&a!zQu;VzF&Ic9iQI5;=<{E zOk$B2fcGhV>({Ym=PnYT;FAj8dn$>?49pfWFbM-XI%?E9m%txc2@y@C?;dP_QCqrs zvvdCUvJMaop1&SuR6~Utiv&Ku`O2}q5X?xO{KmC=Zd9CGkhF8ehj);`CslmXQ3g;_ zrG|hIjFg}jmUXm;2Z&h$eksn?3DH0>GBo(tcq2oDp#9|0NXea-WyGwCOjz?1`Rq5& zZX2Qb>=8GQ7%)_3U|1H(c2}F=Izu#4oN5-DWOJZwmVA1O`o?2a8>?8cdKu2SVl1iP zq|WCjCz6WKVvL$h$vtUjFUvNa1PmmEu_XV<`@sjqFpI?*6lRb$srDY{%ZD*8-Mv39 zIGmD8iY;vJC5n?MPNOhEx5ioCJqcl=)TdCKrE^V6r8aC2uN`dwq_mMNVEHHtlf~gM zQSQf4m@1nK11UgzKG2j*azqrqmyP9(zs#oRo2^xh85S5Qv+*!D)|Jmx>sZ}O6|g#} z2gNp!Az!fbk=SZUnYHH)TJ4J;uOHlj*oULO*xx{adzxXo{Zsk@(!pF(RdX`D00000 LNkvXXu0mjftamTb literal 0 HcmV?d00001 diff --git a/TODO.txt b/TODO.txt index 69c4ca2..7596bc0 100644 --- a/TODO.txt +++ b/TODO.txt @@ -13,7 +13,7 @@ V Shift all symbols on code line (change symbol codes) V Specify starting code (extends the shift) V Ability to make monospaced font a variable width one V Undo/Redo for canvas changes -- Image import from a file +V Image import from a file - Import from a text array - Rectangle selection to mass-paint, shift and mirror pixels V "Packed" fonts export diff --git a/examples/tests/1310396764_rss.png b/examples/tests/1310396764_rss.png new file mode 100644 index 0000000000000000000000000000000000000000..b44b1a00e37d8956122df4d0085a59d5fe7c7e95 GIT binary patch literal 4029 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 literal 0 HcmV?d00001 diff --git a/examples/tests/1310396820_linux.png b/examples/tests/1310396820_linux.png new file mode 100644 index 0000000000000000000000000000000000000000..42cc3b3e53a3b65b468139c1576cbbd8d83fabc4 GIT binary patch literal 4115 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 RW`+O&002ovPDHLkV1j&U&c*-$ literal 0 HcmV?d00001 diff --git a/examples/tests/1310396823_icq.png b/examples/tests/1310396823_icq.png new file mode 100644 index 0000000000000000000000000000000000000000..44a722fede2e5d8156a2f036caf7235de8efe3e2 GIT binary patch literal 4607 zcmVKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000LnNklQvjAb|%x69Xlir-sjHX^<(KHw9h=g*nipJ4^i^{Hwh#C;N?Q(XPJ#YU& zs77=kv6J`AH*?N+&iT%BzVH2>_jwc%;hT&g0F%iybZr450K?7ez(v~e-p10X-j~WbyBt=nB6y-8862IAu47DYrvn1(jI-OEhRyI#W29wZYu>|RKI_{Np z>tB0=gf&r|U(lMMRYZca5ez*4xTzeaUg6)_8A*thosY(GolhH_*0*?Ma|6Qa%3)zpq^ zm*__G(0H?%%v3wZlf!(0^@oE{>@+B-NxM9Y*w!PF_94wV*~K_9XomM2R|aZ zFp{ve2rgE%pmy}*ecDg-o@lOE+CUN1X5a8TMJ*3dxA-{YLW4MAt-&yT9B=)hit6e* z_Lc7@I5>D@rdqppZBbiWo2aTPA|ee94Pp+nNO66!n8YLqlGdLl(^gIwJs~oCc7Y&B zqAf+TUdR>%$#!Q;&^WWi%}tWL>$8NL$7KIx(dmQb*zwOq(=>6r-Qse&WcBLR#lt-C z<=Fn-`^3zTq-s_bDk=a?rY4+!JV#N*92y;`nV1-l>h|E;b&&@@DWU5-J)4 zz2(^OSc&J72%Rt<+oVaOUxEqYq4@g!cl3MkQ1?(RvB{Ho>d|=Ct&5`VaxgPtbK~`;DY%)^YoIj?Sl05 zbUrTM%dcL3mC6;Lq6Kv55JF5r#79}N&Njo%r5PkL@G4$XmLy}FWWp3}f>;nQI9@u% z!tXAoe9tb-X7lKGL4JNdsZ&!qdh`fyFI>X6z6cO`rWM`At3>v>sH=N~{QS%KycSlx zSV!K*9BQAfzGIvz#Z#yZt)SviC67N=I(i~iS(w9%=UzJs3V?wXbi%|q~w+AgIl8%RG zGB>u9@(&L%uPTqgrC$0iLh3J52(+ps&r9HF+zCpKm)x1WS3HD=hK`Mh>?tWMc&wDr zeY*)8ABO+PaXdXL`ESmmvY-+TjodlO_^t(LSK1l3WgK?r6sl*{Q}E|PTAsha4c!f9 z9n0hJ{-b<<-Q#1Mfsl|8wr|_Y!Gj0b{O)El)6$tz8c*X-K1V|Xz!+oX`lr_cXw$V3 z_R)BZG(-kf@|RUnR#qm{(*7r^^%HdrD57IyEL`JTNdI-QC^N)YQ}!6BCm)qAd6Me0K%$b!EA#s?yQX zA%_kf8kXfl0HQK7GG@43E=NyKkEp6TY%1Nx*|C_`C)^>kaWKcsEDAdYKzO|s#vvZ)h36-;RJeBRh1zCx0=&PzKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0009hNklpaB7Dz$EY#!1w(H0Kfu@n{2zI z&n+Cwz(4BQ!HEP5E zwY&J*tGGQq=|P~dQLSBBr?s&Iww3JrqDkvIJK1&NJUfO4S=ZT_3WNgITb5l1uoO#v z3<~@A(RF2nt$oMPxm;>nv#c#wnGBnc9H#sFDDAxmn-7qvrBq`3KtFpg4U^xqyZHc# z@_Tl(_tG%i2l{C#m6{KbsJ-_f-PcFieB>}HlW9HxfX?OE+INhuDNP zXpmhO&Xe1=t@!|n+@2m@`Q>L`I&mC3pKm_E!qcrK&xE~JwJX2=#$O+NNNsGaxd5}C z$N1?1rmkLnc1M(kOs&TK!66=eeGUnNd}usG2TDGe7U?bPq&$C%OhFZdrpmBWBj92%z9q> zx!|cpVHCSqS>%dlJ&)UOAEI*OMk)o98jqtWtONY+`_;GB%e26T#SZcL00000NkvXXu0mjf DUg5%j literal 0 HcmV?d00001 diff --git a/examples/tests/derevya.jpg b/examples/tests/derevya.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e6fe82c12fd8ca1e6f314a20a52838e7e441edd6 GIT binary patch literal 43121 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Л8 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 LewXKa-{155{hsGJxz&Fo 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 literal 0 HcmV?d00001 diff --git a/examples/tests/flipper_multiple.png b/examples/tests/flipper_multiple.png new file mode 100644 index 0000000000000000000000000000000000000000..dfdaa95d140107715cdfa84485f5a5dca998f739 GIT binary patch literal 2118009 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 literal 0 HcmV?d00001 diff --git a/examples/tests/panda.png b/examples/tests/panda.png new file mode 100644 index 0000000000000000000000000000000000000000..50d9d12942c54de2c3cffd562a62d5c6e8d61b69 GIT binary patch literal 127936 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

c^$H>IO?6mPKnKl82m0TRvKx!(b5{rNx_p`ka)9 zxfy7ttqGm9iy<+%Qt1)4CACk}^!SIRUMKG^$bf$w%Aj0wlV`GI-eyq_Jq5f?ReV-s zaQWT0Nq_wd>K|&0ii#Eiv$p)NmWM*lx@*{J7z0a-&a{Lkax zI>z466bXRcy@x`6lbBiTTR9J{$NAjdO9!e&!c`cc&4-HAWJMfrSDgYT>P+k2ypm4| zP2}ehCw5z>d!Y+SCs4w-&X?vW%Hny7pJy~ybZ+2^YB=c3%1D1qJObDboCsJdd);65%A5Zw2fz&3j*Z?QAarjU-5csPGWrnGVCzzR`Q=xWB$QD+ zWCMT-adR&b)TQkyR~^K;8&GulSjA*oEFAL0#Al-J1wvj@gkS8<&zBNnDAcfa@0?Uo zm#_kap?ibI2PL@jhT$D344@L_{+MAy+!HYSo+YuHLY{sz9K)TvBRr}C=Ne$c;qq1q!MZp!{%ct!v9e(XoyLVRQ=Q7BIl4OJ+ zLg1qPi_z21X^IxVB)MNwH^q{h*%#u=&0s`o0wz8}K)`?U$}pg}ywGdd`RmIH%mHEh z#Uwwiw5Se;#VwZC`hE$Yl_6x-@EY8=Y(;%in!RR{N$rO1VT~n)!zltAqH^*IEnn{8 zZ7BF7X~L11{DZ+ST+CD9em&pc*5B#fwd_BRcf6UD(hGDg4v9m)MS}44Gbv!-z>)uP zxbqkx4s{|Pu`Y3dt9U9$-UGp6!IHe6lAON2nSHn#YiMjN>0!PA|Bl5pn@^yE)dTh7 zONZk62I6em91sr=z6@-@EGCReBKF{b8;CJ9y4(zNWEqKIj=6RV3q@Kk1zG4-G?uzYM%F^I>N@ksAL_=;5la%&2@qyQH;63? z0mGX{;N{ohXjZG23RKo#)Xyv@VL)w~j!pj+I9aZcf!w5?vdWIH5|_t)vp!|H5H+DznGZvgcAPwOS z!E9K6QIf4?pV5k4!qzlf3*%5=Y3%WTx94#2s-*-8K0$e*@#=B|nUwn02uS}>h zMGmeqA-&^2Wzx<4eT)s_H!Q3RMJUnNw0hWof^Lsz@k}1LQyP)!U~im`?569(z8iRs zt9jERvX!5$_M3lMyA8fwk?K6&SmkVcy?XXfl~1|Zc=A|AkD`fvT*-85pPn#yOgPfb zDV_ba51JaQK5f=)e zH;8~FAY-ucwoQrFQj{+RLT?1LV5xAQrm&|DAVrmhr}&x}gaM$4;<#Ps5` z$#P8DYxTiCLwPZj;nE!VIp7eN0dgJ^;s}H3-r->)Al0G9l>;l7Ksqe`_}uGe)Ko#Z zxDY%0tp?N(al#uH)#6fDva{(`W)Up(O7=&X^as*Q^2smHYtRqNZ)n~0r;JACg4e`jBZT*uDL2!1*+MfCeWZU9%<;dJJP&$5=a-g(#j zrKe|SpNFw(`+PaO#S91YK6@~bCctNrn;~ARfo^SCuC-Ly9K$)dM)QhbovR9+tEitJ zF)J*BT?vzD3j_q!U*b&I+S^wLw+@1dLiJG%PpISI z(g-K7YUYAVqe&;YrfZl``6|m+&1UrzL|j~k=1Hu% z**a7_5FA=dLZWlQ}FXHXhHNwTunpi!vmhw6t^tj`~Kre$x{vmH7XDa>!~X z;k9iiNL%!NLm66WIe;U%VkZ438QsGECSQ7z{yG!8IL_e^PJ1JzEYJO@W=HI(PfHEC zCn~Za5$OO&0_jlAa_!5!Vd}(!-&OMKZD8yPf|PzKiU;VA0}1LAq2W@&d#!78r|93CmjtZ7K11$VndfZ)p?%esVE84 zmT~>2_zzCW{fv8aE}!2ggYR}*a7NcDOVa;gP(ioSdh`I_ds71SqF2f)7Z7)uk!$`p zUmj5xx*dO$oq&jFhOz#7#u_bJbegNygB%rfa{OlRxO0QrXFqpUFJU@eB%`}}OPUs9{f z$FZf3{8TE$1$8CSc%F%I$5zOg)cTpnPwmD=i#GM7i%VFSPzf`f1&`+`{U@FGGmjOI zGpk-^n|Wc3H=F_W05|dV$G}b*JYm8vY|SK1IEc+aDZQm)p@tg>R~Kh!SqsuR8_kAu zD@8ElK}1D~nU$WytB08XGmKZJy^f>}iCBBcW~Mi_b|E7SLYszDFS!7CmOPet(G{nT z7LDCyOcGfhl7#V7UN0kISn?K?yDBka)F%POOn|hWauZ{n8sfV@SWjiJa&F}jxSy6U zm{FSTsP#hOA5!~lsCN0^4Ki(%mPj~s-u-P<^E;bRkgRKOzNRz-by&~eeREhGy_iXX z6fGio$nxuv=JQn!g!Kl*W8#+#F;699B996X#6m#eC7} zn5&ZSl^{G;KuOjXy%aeSKf{8Cow4{|%3xbks0tPC-#U4<;q#R7W~_>JbFB=BUs6P} zG7E$ugv{kzGzBBuvY*q=ZN20LU>TKon4@$u>}<{t*ziq40X8kKV|?{v%>Ean!7GGE z9k*&ftpzI|{s2FNMW0@GR0GH=I2q9cdeJ_R?-|!Huq(oG+RN{ zZR(*L471+boX7U?$&K=P#%BL_-_7NK-1gW5dRAwQu%?z%*qF znUz3*faB4!DRo#IQWc`-huajSRHVM1pZ&-{v1o3n#fc-;Ev))(3M(ctX+>f z$P@aa2jcVJludiDF#g{lj6dNN=#)$JSAF!>s7v7H0oLS>`vp5qP^j*x_}%!{=*1R6 z-uqhPa$lCn{N@SkTse@9wUWaSRnbq|H_k&CY<+hY_NfXA94~dYlJ%ZgLyQJE`aOeDg$Bcd=q?C8RiyI2dXM^}78P+(wK&OlaPv$!m$h68|)_%DjRxZC#`$7&==$#ll5;BCY@e6DMfoB6cHc*XS<{WfN!5hK|lB7eW?ITH(3mP-Iw z)+OuXhg8!f)+l+jzth>DRx_z!QZ}1%FC8d6_4Sll?UdYwxn3$uuk zfoC7>7ejDD;OF0tq}!A5FHrA05@Gba-@z0C#U21BwKvklmyf9T5hOQ(i@?h((=mPUQms73XFI zu{};6P0}h~d(@_@T=CUfS4gOVtwZQZcejL?oS z@#1FueTZyrZZr;1Wy@n4B?I+W56*=W$)%QsA?K57KmP=D=Xns}Du>d%MV7)8w{y{V zyaV<6G~mFzCU?Rb4PxYSA&Qg!GHAZ+*@xG?O{+Bl9Ndle^eGlm{F`EB;AJ~+3kLW0 z3%yjd@#aecxIWq_BD$8U>OaO8d>nbX&)Z+H$3C{l{CKS$l!VdXPyh@@)jJ;Ch_yso zNtjh=gvS@icm>0;onCm7i|E)bDwi}jaVLZb?MN^#8q2eGN}AdiaukKRGtWQjeW(pw zda2s-bb8KT==+x!RsKx{vwOhofS;ZiTuv@mjDGAFT!83bWjR;lSiTqCx+G1jA}ydw zn&6@WxG@&<1BsS2pxS5+%7R?&SQA{L2K{Y1SXbIauoAKF!(F{TL>xWi);pB!FEjz; z8~!1XUNRr|bcT0x$yj{VE@R#bj6wT|F8kx-X)D3TvW*2@5e?qUP|)8Iv)BwD^CU}( zqE-=aX=>6&`703 zJ3H{F_kEWrm)-)))6NsWtLq+boCLf&`g@Yut)0u;NLbzr>h}y^_4=sL7P3j8d4S4k z{4AG>u%JGdPc@_uk9~1gJ6c>2qp*7X%y+#zug_Xq%Tc723`4^bIy(Q%zRefV03-_( ztQHssv*=mI5z_D}RYS1W=xBsZFEFSBmhRB05_NMsZ~9t3zBrMIJm%;0Ifx_mvT9zF z?pp3$?L97GojRh{IxtD*PfgZq&Jbh*9gNn2U=(D(IIwUdA}H8+@+(B0MF*n*95gdn z#R%@d8AyqbtLN5BDnOj%Wvp%ZD;??|h*qS;6dQ1q ztU$Nj!NurHo?R%2=>GqXX6rVZ>)6yU#6fE)T9k~pFu%KZUj3We! z$2$!jy96Xzz+ac2(VaAhMC9S`yny}*fnUPK9lAVPEfj5;x6NhIc;+Ob`PybySiiU zOa>2|g$n%C+Z+&@`gpwVCDgcH^|%=sw)#Dd6~DQEiM?Xd?-Zp?3lWzTJ;@Rh5^_1& zkb}kqkBq1;8MlX&T2gA-ix`&_?I@S1p@R`bT7^HB+x-Yx5m=^Qj$9S+%vlBS%#ID2 z5cpuWTuIp7Wl)Blt&R1qvRn)0vZm_;jlmSMu}hX<<}cG$emC|N z^m*hp;V&Xtx&k(iM5j;5nVxYRai=YRm0-zz#mO__J!A;QrUolU4-OszjJcFxFa_vL z0YrrR-;7=OCP=P%%HtaoX?-1qgO45gS&k57=WAv1eW@+v2jtwk*b5gMYb43am z4DauAfw6P^ZfwS%H_At1Y-sy8d26L0;{l`&%&+R+u_ASp@I^LeKsKDzlti`}V&nDBV#I7jIijhGds8Z6`A0FU z1Z4!jw+?ZEN@sHQc9uj{^KViZ7h8T8=p_rlx$QEA{L5=QL%R+Z%g9`!G|8xl>i1f# z1xqx_y?`eMKs8ouA1wIMc#FRuG(5DtcVS89$JZ(vU$9xvT)krlxbi{C$<)Az=?oW> z2p1EN185kLV3H)D9opNo(=#?60PK2d*&>0!`uGoP{c{5^Bml#d(!6k}tZ)#HxtT0GT}&%3HV%t zpn{=q@yyfSmJ9YkkQOf5oQyyWO^ut|49bviTxm5NcIWADxKBL_1>x*Mkv9B-`K+ ze6qosu9d5~rYRO7xvpR=+J(*g}>vrN~ zIE)*OKk%tSxA3Ctm{QToOagW;R>pUR1D7CgT1reKP6pZ#R=t#DI{dNA`x|HI``)Tp zy}pI7I=M+wm9yQ}vKr@~Lkw&t2ep?tt+QK%sKz5kUz@%Q$cX8W{4n-;l8%{3^SKnL zD-9=^Dz~rBagc8WK2R-0KuP{71WHo{k^$a{KMR~dbPXsT0>P2Y$S!OCo~;`kS-M~v z9hH{y+i@&qG~eSj7e^Xl3V5ht&@fFIyKi z4*>JQS{6_Mt{22g^bEc3jC$MXR50aOAPM?)Ruky%Eo2_3Pt&seil3#)eKYjBoQ>Ck z0(B}ynL+{%)VAr>&j_I>u*&cpA9Vh#EKW>~)}!Ll0~hlzQn4sN@cgGnbzSq^3~+Pn z2c=CS$3_TQxL_RMl3ZD-;2`VxB`f%6FuMzbdcmyd<`uO%oK^#tCy+ZR`5o)>xx@*M zSLHy4!OH+JLGGUx$2V}L!oMsQL<1^Z@vb#Pt(>gc51Cj9TaT%1Dq_9)aocy1+ISYB zj;M6cHBuKH;q7q)R=j6tUgF=O@~zAAPLM7L5ie=&w5=IGU0!{Aw&yr-zC~o;6J@bB z;Biqa2~IWfqfJ6&`R=rFgjgzU`Z9&K&9o;2zgl?|U2&p;uBnzS}GQJlp4!*gN zoaGW$OnkpFahtXC{<_^DQ4`)hrJ!%4@in(df7FFx_MK1nx=w%TPlN0SW^#B2Xy+E4 z60>u?=A+|10(xp^DlGz9v^MbWv1g`SHGL7>>+0p2{|jiCukqTtfh zRwk~Sp^I|)7gHaIrf(W|G`uw^0CD< z3w^5J`!yH?GRPc;2`+^&5V_pWIG~~ZCNeGxvMq=KphtDyMnL7ZT50O#MNpw^%7dH5 zXRR;N`4Nq!I3Z3WLjZk7YOI2zPci~|=ycbN9T-#l7RFpJv5zK7z z20RuZR-1KVwiL2_lCH|>uZ2@gDqN?&NcFZr2{f93(uZ6V(x3o2O|$_Y2bW?Fi$1*K zDe?jxzR5D9GrQKz_~%>%_}QY_TEAgrKuNoPjgT*hA4XDvT$$e^ z1}o2A9X&wOLc6{muMpXJs*9)=)38~h^tbN){ox!?t8nZek)HYB8rg3?j;$A$T5p_# zT7x43UrBRd57mqxowxZ_3Na~Y%5h+io$_yIX~6ln&9NJOYQ7CSsP)nhu)d}dD%=p< zO`3k^UPFRzP6HNNAUCB!1UtAJs2x%<=?#EE+hni};On+-YyqANK&iknI1n^=y9iiU z0he_g;u#So4FMZ79U1N8ERmRKHi`XE(Dt>S$tuj?7deU|>%^Bpz};MhRYk1tm#h9? z{3+xgiIOk~kug;S-s{*D8gS<3#gP%}QNhEGumn4I$zIML`HYN1J=MqdP7e zU~db8Y9RswA>JXHwL?IMm81dz;2=1B98BH2-x4j;<} zj(JLZLeQh4a7zn3JPhod2Y5gvWTER7N5KC}A{Y~QMSnq~o;#m~!vZW}eJ)Xpc6Lqf z2b@64wM$qAO83s&TlB4Dau;4c+0+yt;75R01cz=yK{4|G>6BUO|1fnW{6w+ED+dv| zRwgn@KP;_0sg??-6|)~wOV5bnE6b~|c*zo_2&|*T|E^aBSC2f*MaQbIhAXqX22{;O zn8fgH^KB@(2!htEVV|cMo7^*YOKr&cR9*xR18|wXb8vVH&<=otq8oU?frSF#_)C$h zm>)Fy<}M!eygbQ0wb=R8(9VPUL={EwMYHDZ-`Y0y0a{?A$XDDyjI01G5PvWj{eEdK zwYU-9Kac@DE9T)IU@8kZ&+q~3_(1YY-Q(HS8+I^+Nl z1{|mZ!!sNc@M2uTRi|h)FDh7Ogyh!f>)57gnXyj=zR*8;#d7d8eMJVQ$eElG5{D`s z;Zh+w^9=!B4#3q388FpPnrl$)U6<0bbo7DSEHGVr^Gd2Dh!m+$P4@K82*`U`dDH)+ z5vbuFsNo7#m?-!|q{yP8c$zWa=JFoAV@}{zV7WU?^xYLK1TTEPleiEo?h96Hzy3Q7 z(CrzvwzvQFGC<6d68HaR7vFW!u)k{+bN-OPNG4I?h6 zTdG$AGG7eaeF3*_kbFVlZYc+)L;^*MMc#&&@XGB(oFL{JKBgk2R?NpnG3xOaNmeDq!`pR!y4Pm|U{on1arb85Zy&zo__dM%e1;n0DTYwT~M zqwC2!^ufkYG(pb@6f|I&aiNoGIhp;5>Js?ms5rQpgBvk$k1%T;6j=t?_8?|4UhM=u zV6K5KJZUPFRKC9Ej^Kx`dI5uJ^Lsm%chx1L5X_5^A3YL}{c0bAc$x|%V%`Cs7uL@wlkT)97N<{QW!d+h% z*3uWqr*S50*!J+it?_LB%j6tu9-R~49e(zS*mbTbqG&`sb#TzOoS*+(dR~m}r=|hx zeJaBs)+GdZXRy*e6kNC%;H9sTmIiixyued>%s{wy=bev}^1=S{J_q4ZaRRZ(&k+JV zols13B26j)i`sTQlj(7AKKp;C0)-Z^yid5d6U_X_fvo=Mg^!H;R(7pj8$tPk#^v`Q zwf)h))Xp4#A2(2;J&B4-nCu%R#aAseWki!`Le__h~opLBY$hH3|8SOEo1(;dAM&AbcFlwHWg6;v;s4zEkeEoNu^?! z{(b-(gkBxUN^ire)!aEDFi_s~G{aq;qZ@D3RaQxbKgPT--V6jJ*MMLGH9!XLe_7cP zL@IejR_;z1Mc1ne9=8`f?)m&0h!hyMd61ViI$2f!4lzeTBqd`3;xXuK;SKQ6XIPf8 ztvJC&3zFCdx}FmW{ED}>+C_Vw497{o&)7+^w!;6nW*wb7-(B$lmv4C2 za^9Pv({Wl2by(ChFz5lmuqObo@Nwqh}gD=Ubo0Oo3C?(Ci!1hlr4&ZYrRoOCCI z4+X`q*dDC)4yE#lN`~#qQ;x_J11*=;SXRFbsU&iD*JiGP80BKhW88*Qx+F(Y^4dLv z!z7iby?Q@nThOi0`;}E;Z4DT-@L$-o5~m<<2B22};9D-OlHpHii)z2?kH6j-OD}$c}ak?=HqcKv()5= z*=|hg*RKEyotv8rprXq;T05JxA;OgblCXBb*1lUJ89nB6QQP!!mqOxhO$K0J;*Uw( za*bw-H9K6PP zlOE3)C2w7CVBNR~b>9ayG>QRT9hak-pBZB_aV5h=w~!%SstuAREXBnB^B{>{qH#!0(&S{4*=G;}u4n^o z?_DP|1Ldy@eaKJ#s`MT`6dxV*yAjMATBYM)3QX;dZ%66>9orDmd7F3@ZSqLmcGW}Z z@z_gxve=SBKz(Ttp2+VC2JOqvKf}Vbr0&f88l4>%SdF$k-4QM z4#2b`Z^IB2YMd~m0stIyHuV!W^b*aJ#awNFbeT8tkQA(PLmYKLXllYGtFARxjSii1s75~OBr|DJkbUL!|F+jtu|5}m0fy+& zaL8ABVb=0I{&+Z9%J+yOd{Jstx{#~JT~m|~8=W~-lnX?jl>Z8if|a}Wk0cDA(+~UJ zj|nhRw;PY`IMj&(w<~V)yK9c5KVz0F(Ty)xwlMLm+sU-#1Lum@Ew|4ftuH;X9mg1T zlUK{D_eSHo^-I8{1j@j7L1=t)9rrOD=K_?8}$-sgtnyon@( z!FzV(X4G48;AZXJ-zvceK^Vd*^%Mr0r z2RU0?$MkrNXN(60k_4dv8J2&=9wk5>`e#$bF2Vx*ll1g^rdgYP5pqk0`hk15Q2lad zkX#%brj#te3H9?~oSGv3R=FxqM#Azw$?z1(&1%7}01sF5^A7>M*Bq=^>tw;wr0~)x z@0E4HcdGXDK`(GQVSWWs$9gYO9`L>>&`j*=w+_4ct^vzu46TB7JeT}E?sw8j2~r_F zCq8QPq`85=uvV!7fuZFa?g;ni0T)Bsm{2!vYD)Qe5^Wn*{E0}=3MI?)6L;!xc&P@~ zelB}i2F;LrH}9sSSX1w3i9*FTD;r}c|83Q_$A?=$f0Cw>1B9p@cU8lMb9*p89!rgm zhSt;+Ffju5FLMhEZ0c1M;9TpC-kSv+m$Y^6?qoy?|I|7wznw7WzrU2C68^}P3*Ar94l`bjD?t#NAuk>|V1?45@S1Z|8}t}=VPKAtv;3|qmUciV>$@84un43p z8EBq7scvqL*qg1C4hI1@95sAKH1n@$ukW&dNgl+z4uav?*3+e=r~!@dx^id!S!ufDme|T&pSEsDo-6-J0ck89VPz?;)AEFy# zv8hi}yGnxdXXs>05-^nPGc+OnUEt|R#M4l6xBaHPdI@Q~QnWOWiA!>zI4HzzuWgS8 z@Yn{YFSSJ|x}D?d2vlp2GpxC#L3~pxB8T8-^`Y8mRv#O=z)I8Kt#!U>sO*pTZNhmU z&Dtn+>)f24Ozk|DIgx1QTjm9%ry6&TRR5{V&6$m1hYv0F80unx9q3m` zFj%neAJAN=q!i;7-3*)!31P=ZMZdCKoz*6GiGXr}8@j~X&X|}J+u)GN6HTFE`CQt& zoe_`as^>{Z0H7NIr|qnE-!l0jr_WXYNhjCaUr@DU;?ZTZm75m}Ud1yg5Nfhi%VYlp zrCIsr_=djH?EJzZys%BONRM|wIC$Gdp zC_fYar#-@RiF?1lr23mRte=~8B7^#IXW#4h>h|IAq{;Ik>e<(osC2U@#G#lq_4P%) zke_egifU;sufz^BzP(E^DZiiYygpcsz~kdf8ad#0We|STCN`-*g(V64=Tu1FqLz#Q zE7n+6w=z+D{~^QT8Ip`liW08GPHC`^Lp7kx8g@}v5OEa(mraE)#sjtx=K%;EU3+*P ztO`gY0;j{4XV1is^59{#onDAutusBCC1O$Y^7#SudOAC4F7&y)F3rb7fm+o=H<8URi6- zc06JV(0|)`wfeA8=N`Oi$%YI|N19lCQB%JqF+ z9O~=GUCd|6SW}xKLaGDF?gP{%=J%npgis6N_tWNZiy(OyFkivafxGHzyWc8En=N`m zF?tT&WAC8xIDO0yM_uxs|CMnY-eS#&DJ*(+v^jd>J5__&`A@BJgUvmYM=u?VOFm%T z^|+X~GAl6}Ru1K?#LfPrM94`_+!FpSQ9~QfOca?sU@)YT8_7r50Em{Gx->LO7u!iN zMZjMS3}Ub9O>PD5ru=Wlj#K@wpUeS+h~KFu1EQ&~HsVo?{Q&XvIQ=t_7{QbO7h?Wa zS&=8XBaM^`1jMW2k`f-iX(SnsN7!&HwxGqi0DXNl=^{Z7MHgvJM(($rT2U$*mvwbFc_#E#dj!RZKWk ztu6d|7$7)fRoL!)IFlZZWLW=dX}>#^-x5{nH-MG*J#-+2eLTna&;~FWGQMsmY$*8O+mVkoi`b6Pp}`CzIGlcYzbKnTTK}Qiyo? zOBMAYH~Ax9^?=Lzd(Y9&m=n?TvpfO<(F%;7R3;C9Q`ez_4;!x^FoNTE)vpFk+M{fH z`&N??fLlQ$;sJO2n`!P-R3M;2XJo+2bp)tdwBLefyK)&6V)H?wqTJdq-;luo_G^ts z@6RNBax!?A8A$XKCfp7}_TS_QaCoM@lLN3>$(eMz8&y`6Q+yVEZ)+Jd%p~gf_t%f2 z*I3C~|Jec4PSJLR|PLB==!6w3C1wNg|S3vzQj}BvyBmXxmRS_sT?tkq^&g6SW4n#SC z4{s0S45=l}?hYx*0WQBA05>7`bSp5>7=<6n9%g~sJxlZx$+NtD7GX;?4cUWtAAa%V zJcW?uOWTy{5X+4)T~2ivHkPK{RhObN7ykG9rpzuXfo9QY%Fc+KWQ zG<|pw2#FbNOxo+$S;dGM5;ZU|U)iLWX3_;rYU>1RQ=S(lGweVuzZDIBz?-UN=VSVTg1Q^#@)^S{qKYwZsnP>F#%hA=m|;)~zu;db>C+C-XG=&kNk0EG@?cw2{zx)H zbPg;o`ECx4%d)~hx5wg4y=GD~I=a(pt-bB=bG`$|OQ!n8<#qqZq0Y06O(+YRYyp}k z)uCtfi>q$4ce%N_3XFbO0NSeC6mOIp%r;>I*xWZnJ#NbzySNE~!Uy0*TZld0oo;0zXry0p zC7opcUfIVQh`M7_?s!d)hI&^_Fm`FS=x&({7(IJn00}0>JW`URJNEHPeGNF??y9%a z2ODrczCubE8cj6_18TaZrIq_V$!|p&_Os_~;m_vx%^?h?cCM5o22Wq8Nkp0x5(1^y zx!3aX?_>zw60SBi;|zC6)xHGXLJ|THI<&vO(Q>1UQY1qf*utptZvIT$sV<)S4K^&V z+}-)uSz11{AI!x3H6kU+25oy2|7+G~=OlvBsFIsH$7M zyU04xp5P*E{HGE9Q+aB;^JZ^knyPatkW88r(5~X*X}9c9IM>a^}9|z;qyN_ z%0rw0^O|)iNg)}wI9_r=2?s}X3%wF8M=_!2SI-e}h&lCdSqp}qhJ(Tnanwz8XcMpcKH7qd9{I8V)s)y*{ddQ*37n|WK& z11dK&9n|}RXy-)EnYG0Nx-w|r_^l^Z!OJNP-PuVdr{UQUlgx>C5D>;$zd5%9mY~8_ zrkx2$09IbLwyj9a#L-8q8OQR6IxA6ngZRh2>K79AZSB>i=u2j1BUr0;|Li9&2sWW* z`#M=rdrNcmg)qmaFl|Uq9L&2TvoxA!sD;`YiY;r#7`@}xQ)6_=0BOFM!RRN6SQ?|9#Qx z_0)$}lb)VCF|ftJ6@ozS;_xA!Za1kvPhcn}?D>ii8x|K+sxCnS4Q|;_Xo)ieO0kR4 z%YqnG@ZYrU)nsZ1l77~S!8Z5F))NSyDCS}Vc~sE8L6i)c{_c3r-b*&}&mgXMfGF4G zaq_N*W*u7p5rBs#d{k23_~~ub+bd@6PG#f_2N>*{rG<IKYr z{ir$kVwF{CTl!!!;Q5&^#il~V+38X>n&m8&(n$ z7srb*uuDKgBKSh47pQC?L*M-kXt+Kfy^>IxC$%{@+s#WfcrhZE$ic-HH~zmw4Rd|3 zmCO5;ORi6qZ@qQTSEl%;YCnA6ic*R^i{nQXGXEfQ_)ea$S4{*CfBGx978=lr9f;{0 zvCfQ+HHZIej+X*;L-wPJZK}>jX-Ssk#{`kp7vqvvyULa~mn*fM$`WncSuJj@-ZY~c zur99vnA@AxmdhpAG0&B4-<(GnLs6lU8ikd$1^yjQ@zOido64ya#^^A-UCvo}j5fSd zP-~>-o0^2EsAvqQSkV{PjbEIpjNVC|3_4~k$5 zN|q(nqvY+caE-w89QE~}5(A|fgP^YMA1`u#IX#qj z{wROj*yMH2DVGs zl;&5t4E1P&Yf-TL9?l_jSOldu(vzuR-H;2Y3cfx`PU3)@bl-H9wIXOMlPwbdBd2RIRJ}%F8 zG?=s-7*O%kv7C75<1;RN`<|4Z+t=5)zW7J#a8j zKbBu}u7=#QJ3dB$^jy=k(dDqA$GuC@4 z7UolmO#HeHJ}viQ+Hd(pU^H0Z?rr3^r6t+Bdf)1w`tQ85?ep1eJpZ!k!U^kfTjA}) zuSJ?VX<;p#f7_p`C&&Y&pX2YWsUFAOVgFiJQn6z+Lc&@svmLHUIClcUSKag2=zt%o zo(iGsNMZX7k^f8?`W?g8y^(=?%T7-A)vc`x8N~phGiZ4kJzM9`%u|lJr6npC2G`R8 z)rIzo*&`s5``tYDUiXXtMJ?Z#hcl~(kr2Y|qr0iq8}2E4L18G=Lw$P<>i5AVE4Kt7 zUrzF~RpXc_N;0BGpmf&->mAXXbAp-c@f7bq+(;PRGk9ismUL{~-%e;!@i4|_gAfeO zzrMZUj@FN0r~c|3C%oy^Gg7Q9YmP53NDP)3iAR`L+mtA1qJpm+F>hC~Eigz}`x&15QIBe)Cp zKPGK*+xs7yt}-ghu4^kIC0$a2bc!HdBHb-D^h0-dN;lFC5(7xr(A}K^N_RKX^&Q`} zzCZk$1F6o8-=3e|6xr4GtiTdFWYS`=@&>C*t7>Z43Y{l`%lHb0RcgwyIWAq$dnA#E_wP?%wM+*j_G7vP!EQ8ASMXrpj7?a+zVV`Z+mDzcRoDu zLk^meSguvvOLB9oJhOTr7~_1hV_B@uL6CP5EH=BB@?DR8vKkh0?IF#I_{Z)HPQ&Z# zaQ{9$y04up&)LtPU1w)WTyzpV$aI5hviP&Eb%iRJK2E2n3R#WU z8_egBDc>wIC9l{wh|Mk>x=sLvp*{F5WxiXdyYe3Q{Cn6~(+=5mzXzs&H|;*hroLBY zE6@AtF~n28egDp$aMGiePD42R>8qd4N)fyYyfiC}ky8W83KUixg#F0M11K{nBv1)0 zzHg^R6POK070jwL3^%Eh!Q2kK6N!1@lL<35%x_=K)u>VD0Go#O`_CI^-`Sn#hoyhU zRa+y&soR6R`Yx8us(#W9M!j2@fdwqS}hXi+^mVDl=7hxmtf2(WRWltvASX? zdA`=cez-Ep6(6mhEAMfkfzoqZet4mM*UtmS<1cnxmX5-g;z^`XyWWo$#Yr~tVNtYXa zWpUE*qnO^%+_Xj+W}oto>{Q#}%?tf=pWPaC`+a_i5wfVM%Hwz2J}A zR`xIJ$2>lIS2H;d(#m0VF=`QC%WHfi(9X_!k(VIPIxPi*!W+aDzeA9Gl)L|w$l$_a;3<=U)-^n{ZC2u50@M&(ZO8N zma-13nSDg$nqtW2qiCX8LCje{nkAmt8h-klw_|6C6%W)2LpQ#@JFX4x8`hCZ)Vhrw z*N@G*D)MD7gq@K5!(VJpW*>pI(nw>CsU`%HJAG8$u&VC~*@723C^wv%|D~qUMKZ=* z$}v{f50U+u<=XItRBb|<&n#PQKGS!u5|Mr&eCp=CI<9zpL72)EqoD84r~o-4J=~!G ze0=1Azh=bk?Q6c3Y?$=Vf24)1&yG)vrqk>?f>lk`uYYgs-;UEnNu zk}%}5%pSI?dxUP8DO$vlR5{rNIb}+TBlXJ9hMgM@^n$?+|zr2x9ZcM}P`t-#Dv;#!xk=E<+N1*P9Pq#2KmKb1t~ zut0yS<@{b+%9{u_sX?2k5d8)#mncs#v9?e$O)7Ep1@p?O+iXkZd zfii$!iL@MsC;nS?RhmAMHCn8`y6fZP)W@^aZj3o9f;_Y`wS(h#!F2Uosvn7H7`|u? z8}M>DUc0SH8Lg66{l<>d$fG`-T+`!tpDAu98=)|>n+l<~xr@)lUXYk;4%@5uVJiaKmD5#W^^LS#9 zJypO?H<*!e*ljsSGESx_qkY)riQFUvtt! zSs&IVPer!#R|&mfsQu{r-pNxZl5=GAQd3XQl-*(3o%n!Q)E)@9siN1Lmjl#@*uJIC zs0ag?tVrAxY-4~&>?m-`>j$(^h{#ySV1bXu+Wlu?l>F~SEiZlv1O*%iAwO5<&Dc!V z%8g|T_7@615(3mtx>cl6PnJ|Yt-y(wG}9%-rBJS3u)FI4E+QfVAWh(v!^OQ!oZ3(~m7xxY_0U)p*6N^iNOyoA@}q$(33`(2Z}FQ6 z5!oz^dL#>La0);;M!>_ZsbKekZOafKWJEdoU#+e0z4zfx(RYu0^CrTn`5mp~uf0mQ z|6*m5neC4kdHQ8D(l>gBJ{`$7A3l0GUmoJG=5=>9t?2sLOz%NFNNI*8rvtgAb}2AQ zwwVlB`1ScoV~yyg&65XIh01YL8IZbN`{FDOf$=KHTcno50hBIQ04pK+f4LJn9T*!M z^F7~Aw?zXXJ#F=MZ7!v!&xIs{m&kW*2Jc{Xf2`h0#Vrbl^UeP5kD_Kuq#>zpoDwVF zel*5oVj3$jKc_EqH2j>4K+8WOx-=HRtKm)AKI=T$Q2 zPHF1yuZiM(+}6g#NN729z3uH|ce3u`gpr;m1@A(%n_V*bc}nw_)-8sN_CKo_vfJav z@9<>(J$;3-a?Rs@PL(Mia(k<3VqzlAS*W1&_3qELAIf~Q7T4-`%BF{BhE#P`dnM_7 zX?nA|v`E`1kmRb0OJ_|_qrC!i>4zBXz-HarsD@GE43zg_W_=q)qJ`|Q8!R_L4Y`_K zsGpZSyF~;y^2Hz1Z0}2P5ITuTI{8H~I@{`D^LXGnyT|u><%vter|!S?H=VM!edq`Q z?}=i_V!QYmf~?7zx*+|=MK0@!w=dq|R><%iHhr}?sO{+O%M z#Zl3O_n}_7oCW?^vY9ZiM{4O%DvHXXb2w)bW4x}JJZ@Hdt${e6>&2wDp;(i|BxlY+ z%zw2@?Xy+!Sm<@GA}G?n;)+@GbJI;>zY4S5mua#53nW7HeeucG`d29z*-vPhZ4Roe z>XAZ11iVW|5kg3Xf5@Rt z)$#6^dAUw=pT6x%=UaQyQ1gsQbFMRiIX?Wp+^@k5DCbNcQX^hxs-@pH@|c*KEI#BM z_Ipm5d%r2_&4ovQw_g7CP2c4rls1-{NL*vX#SyZB?D|gAFic$J3egj_pR!i1s7oIv zWG)g%Wo3Kx<4reRxQ3RNp{;NBnpqEbc<6e{88?L#j)SUxm6f$s?pNTs>R3^`JzJ(_ zWo;Wz6?WsOAh_hSUe$lCrl#KJx)2+Mwq#6RA9MM-8PO&3WmX^N9ykT-`Q>tU-m@mG%cd^iC8I|_MvZI&8x)g2% z3(qzY=j`^wU!L0v%&9fL8) zoBnu8=;cl@1+-s@$@19F<<9_A&Wk9E2E}e#MmZ6VLmP=t2CS1Ghv8q<_ zqz!o1&FdHbdbBn{%A%c3w&~&w9j=YaR9;lgHbS)wE&ZcF&<-(!u{3cMg5!lF0W>r( zB_M!&(oHrA&q#9{`;=Q8rGn+#_+Kl7`T^QoyRG(%adGGj-_0Gn$Kx;@%={m6GZ|M{{T-S+%P6eE7{ZRIx? zgX?1ZJuS|}>gIYmU?%dBgA5&A{E&=9ag(RF zM{%6G&{d%rOhO;M)_Af!kKaUJs?~AOAd{ZZ^2{ZDomDQA#a5x+BjVDb-gn6PKGl8w zK}`W&iIFY9lXjXR8r6U&E&t>#2f2}jX;y(v$;w{s?cYN1giIGM9Gy+cd~EF0BAGm{ z<#9dckBE5VwD2Kqlm-+LamxIeJrLtHs)i$Yx>w6rj-7<9G&RV0ckjd~k}y-t8O|?d z`BMw}HT4Ha7ZE?b<$mLIUlM3Rxk=VNUvAI=OTbU0;9W!##E6TU17)%xKku&#|0yJ) z=GmcJwzrFCi3KeI0a#LTzrkV%n|2+{oS2i`yq*rer!~@hZ_oLCdoR3z9%TP&)c#>} zom;3~23!`Ur@x-eT9%Nu3h?L*p)tceuEtnu<8g#%r97}b zXtB%`X1pEf--U1Kj$i1CP%va||EfxM+6#v~p^q~L+NoAld2RkIMC$sELz~p-vc=$f zyjZ?KE-VRZE+9y3KioPpF*ASSJ0WSgM(}i_=Kb$n`)gLr@lG>&X4ge!-)wf_BvBrF z(2(>=j|h&gge-%ibh4@g`lh_BCHsFQy|rm_>vR;TaP`FL!K^4!^$XCsgO@A|>C`Uh ztC6|(OL}7$i-#u|Ei9;q+(h*zraPZ;;GfvC-LGoY+wL=MO{L;Uu5+Go*9$)jRb=rx zZtmor@1L$?=;@odsMSNtK9t1~cOa$U2(O~7=0UUmX3kb%mVXQdp2$MlpBb#=)^vmV z4YrV_i1=PNVT*6wlB&_KpQUt;kt&f?HNyrwpGd{c{lDbG$cM4xsDRsb9*hC&T{QZ# z89U(KgW1FJt~S6gli$6%AhKOWxn+*I+F?ygQeOGeZcT$H+cOie=6Ok zzBw{Pgw$h|LgtMlU}PpP9lZn2*zRjivhzpiY>&)kYB*4oud((lzoCTiZdv1Y+&vf6 z-%gVEz2%XlAxbrfmLttoMT?p7YRy75gmI#*=4szegZULQzxvVZXx5UCDNnV$M@?rM zLHsu-bUuAQGn37rqGLmNDMS#Lyndf`vJpi7jconi;Da|q;QMI9btdu;*m3+|)#%>= zs*zfThHh=)cvjNzaD>`_YEcY6HjiURZ<%#GHYJ`nLFl8n^kCn7Cgogz?dR+L{eAC> zvJJQEo1Y33Cm`OzMz`H0fuRoiy#nswOLpEXHO562$*;&Kl@<()$)93Ol_Eb72C;m5 zqRVrTL+<`Ap4SPQxfiWA7@l3#RaNpOOS$jr>Abd#E{8}RN|wY|m2h)^SxkUY1h`5a zxrE3UYS9wXQ)iC-`tR)JxQg8C`gMU?*=5c3wN^9rZYKmy+?rvFvZX2L#TZ~-5cK2~UrhbVx`kLfl zkrj3$1*x4G+M1-%A@?8gZYrdeGF~sd77eO_6$FaQS>G49Be_si5Od8}_|EoW2b0fo z_hs*RGF5(w-4Rua{O;e_=ziW(6cYNU4_~+`e00grI+xBxG>JQRmO}C0ej}X($;k?suz4KhCW)L3%BT}}$#KSzG}n72QmGLYgVGPCSaqbQD4q>; zGu@N(_@l~nVzEDoUS%5--XkI!1yOu-h@%op{AKe4e<_V~-ue86O{E4d&&FBNvbB`L zC!(0jK8PXeycqx)!`2BbKeU~ETyAncsBq#vs+Y){Y=7ahe3nnvj~KlH|Hzz^kUO(i z?Qo~)$^`J=u%loi&`FZn(|JjXu;c1b$faQjOSn^5vp`p?doX!Jq?t z-e@bP>_o9|qnWUSKWFXW1PeuJpD`@*al0!+EpMPD88RP^EwC7Wo(qS1gnWfX^N-Ui zVCT9Wrudsjvlf?DsUCUgUY3Szgie}?#!=}TkG`0>?ofXvsw5hhFB&Ui-!P<^F!w!w z#-gUaIf4wnw7gWgNElSE1(#;)fR5zu&eblNkB_^8ZFXx9iS2)rebxkDNTeusIV5Wz z+CSX<+k>v#Sf0(E zk>Xg4!x2UN#(v~~scYDxKl$AKLIG7?6I_WFI%Z{fYffQ;M>!ggcg)2O^fc_34UoA% z++Mc5i_`N`dTGLmO+!sIzZ>krROK+OwVe+)JU?fVH8524D63acOFMgFNKnt=m6lJT zo-rc*DDo9_&yWa7hpU+7vfs=S-nvo#QEJJ>zO!=%?ZKHM*AM(c5YfYZSewW!WhsK+ z>$WvkAl)$wNti4e!IDT*VcxNAeWKA!%8?F~&uCmy%qo;rSob6!B8p>zPFg6VqD!tv zg1cT!iR7&3ulKjVBDJt0_U^RWV0RZ@9YA6qUaMtZAVD{tKDic4GCn*$ng?X@SXz2_ zN*J;0tQ?W?asYjE`W8)f^b$Gn1@M?)_YVyB^Y)qF`2L z8aYYoNAC=xCHd0Bl_5XbuM*^!Z9WBRVUu`{JW5N)h-^YpJIEZ>DZQ znI}|2Fju8e9u5%KGTnT$xaAC2_8ym8E;-GK)?|e8X0|6o$hOvdBQ94)|C)S9@>($$ zm9>>vIch7O#J{}yL;ZW-9ktwJRxJ-mIRUynqd_0Zz|uz#BeZ65L6PBuQm-RNoC(x& z%DW9*f2U{|-dcDUEhec|azu` zpEVbJiM`t+-H^%|DrszBIBL%Rs_Xsxk0?|88?$A6)JJ^e<8Q9euflQ%lrEu&^SNcz zm|N@LmH5tYz9}>>bzQVT?&m+yjqScA8JmYMkHUff{Ptr;-XDuet00Q;H-N@!lbrO{ zs)plPv3=#9;#6nV#Q7m)3bFsppvT_dC&nPCM}ymY+p5iH=ZaX%()Fo(_IMd&3*ORo z-DLe8`pP6q9li16YY6g)Mg&W_!>=vsMHYeThyUjS?78@%6qZ;%w-&=GF@RkU36#C< zEs*y1F6%3z)HDauLaC6b0Bhc9;hopGVZp-2=3soS)(5z8(}D#@Ao{LA)ViMXcbjuG z_z*0@bYYaDTq%{z`(FBBeoe$YYO1G8X%s0!sI3iVC{0zxoD)k>lpNE$G-m8cSjZqs$IF-`?x1 zMdKeUhpQ1n@KJ+c4l-7P!zLcdX1V$~(@Mb(v;B*`uZPO&llSCp7+HxhA-lXK3MNx5 zFlVgr%`5-xDJ~W>F)5Hx^su=5rm!k??TD#gR#F-vOo%aAJ^#S7x*;5nW@&9wM!ZSN z6Vre84NL|rT#INNb0;(HShJPQe6_7lT?KF1+nZ`&JY;veG6(DaLymfuQJ)~cg&WBe zck)kO(494zCy_{@=Xr18jtghAAT9mUAw}7{QC>yHF!1(T!|KJ#Ia!mDR2>8GoDwch zzkG)TWJlyToo)5RH9<^pU|ausS1!(mElI1?3UU_bQi(UM5T$h_@CgGd>ykIJKTm!{ z2_N|L4}U31OUZ+M7WTzg!EPbWMUG`uFjD$L9l^P()4~9SGqYT zZRgf4$IuMo$>r#9exDCZ!0a-JNQ65I{wDp_XpkVRlc2q>#bMm^`>f-iLB9Ok?zJSr zFv?n1Gic?!qS+`=NT0dM5(LVRFI=Q(W$ZlkBL03_X0B+tLXf5()8&?^SfGt&>)XJx z&se>GDI}u*ss4M20gi$PJH(nx_A1@Y4L7KBK5}+4Cd&Y~`CFAsL~(6G5nfDcDj`tV z0#VD|OSV=*;gt=2+x`Uy7qcCY*5kL$na473XytX6+PoLi96C90e*0Ws*gtTCdvZlW zV=WX*Q?1CP+11)U)z_KjH{UA<-PO?m*lfZV{o<#*`-Q;_PUOzCr`9S2Ops5 zGE1w}qIX)=9s<`V)uV>=y-$VFP@)24b!&Wc1i9}N9VlE@iPRUi+$7kX#O&!G*12hr z(Bq*~(1TDW&qZlJ-vK(@c)AG6k9ssVi(~)YvCEMj@MU)2xfgzlCxchSrL!EoB!BTA zKPip`YrtcUNN^x2t-8YbY5+!cRbyvKg`Vlb?cDAdyELROgskBugI|`iR4Id*>UyqN zV~NVL(!Pl{&8~(1g84Erv7YyFrc1g@p-A&m&Vr3=6z4eH3Vp7b91@|HO6Nng%q|8c zxY<0>T?=p9YLGvO0 zYIP~(e`g$#VuJuQ)kBu+O zP4vmV?R-m%OHA_wnKTLQ?lnQYHS)M)^$*RYsBg9g#$>y2WQa6ev93Cou9q|=^z8yY zZ_+8BX|;(vQsSt$spv&kR44!VIJkLr{YrG)MZ8gV*xw}l2OTUvX!A(&r5TNU70xo5 z-Nl}>mZ4ktMfS>uyc%l#HbH*dIPNM^rfHUd<=E7qWJRg^fJSe{`{KK^GKaKELY-Sh z>lM-PFs-y2*~75!EgxOUZBX{}>rzhny4pb4&*~_+_b5^?;Z-W@1~I9h3K*X91%4SL zbUP`T4XGAjQ)b9I#QkKmW|Az#$}}eJ)-#j_g!;7fBhQ=4S zmjYFUSVD(5IOpivxtrk8i3B=6GCJD&;XRCmlIL?NfErFXhI$}6PSDPJ_w_+qPOdr5 zwz@VS&&GkvFqdZMWehm_KsWj4Gxww~6%4aG6?3v~VG3W{-Q){eV3<=(Iq|8l+7#P;GT6Fjfm= zxy9*LM4Wot=(Trdx7<)DBmEOC#TF78?6Q3(@UL>>weIVF^@5*i3PLm`K`fSoCrp@M zC41EoHC4M{T|0Y-Cb0-v(ZAR4Ag*X11GXz_!~op|n@OsA+m-F>wmZ+Qb#nLP#*Yn2 zp_5Sj(2gWYES)-Wqn{Bv?d^l(h73FkKG{^c`AYtx6Bcz75b~j5Ys}N^*$gi9 z{5i*R0r$SEK7{n64?vorDbOg*XoajG$vcWKELlw@Fm1v9?9cq`S|O9?V!JPsuWr(Y zXYOp{<_oCAg8D6|U2nDx$$UMIW{=XJuQvAwWv1dICf)eih{zJ;2UW9g>=^Y_%eo+u z&H=2JOloPAGe(JZwNsbBNR2VDu%zeS^vCXxl7_!t^0)^He-nF`DXB+fPriw#vO%c)3k$pD&{+x@oOajC6?;wBYC1&kJi<|^TyHMie4gD9O1MACzU zbg##Q=d5wxr;C*8YwfiXT2~q}H3CD$pxjduSQE{Wq?97I1xdB=ntPi_NkYW;d!{A+ zoVzLMdt9UkEsVmPev|Q=vy#q5^ zlIe0Bg}F2F4Hx~Z+WG8)YsB_LdEDid+p;Of2d7eO3WwL@rkl|pe)#VpuUwybjZ2cx z&(51BDz8LIf`^BUr4-h3HN?1o_@_qQYy5uOj{EM{vOWu#K#ziX ze75d%ctaBstPrsrK}~}0TT%z4w~4n z1I`)n895~^HeWOnO1XK~s#HHjlJ#V$p?s@K;vYYI)lTF5LgRqEjBY^*1DK8kN~T*VaRC1(7HN;g+gJo z7Et-Ovrj=zwD-D&3*J8`hTH_nDSj!afYOgaAeO`8F_Nd?ZS}A%BiI6~Z}zm?8GA=8 zCgQO~>a+W95CKR#%W$*)4xh!fek|6L6pFV9e zT-EH8+;qOU@z?PfA79mI5bF|dDYp)Yhks_`A9lBrZ~M5~g?^v9Jxuny9ai;grex9% zAz-i05nnNmRCN5_utJ$2>%RY@OeWKySKTNiW1UrJU9+K5ZbxkjHy zUPMI1khRbG`rvtu4D3~|cl*UJ;4x111^hZmt`MF8L8yz9k zH}|N&GO`@Q+>pJ%s?R)a-JLW_Z5S)AfYEF#Uo_E$Xu^EG_DfwIr`zoompQvg-v$Y} zwtuFJc{V?@o#+Q`wmrMn zmG*1FCybl6)jb7Y6zek0m3j8=v(S3mMSVb60f+3rGIG?VD+k}om=jN!XP>q&e*UUH z$xBQ$3D~b9GWZ`>^i#V31;bqads3b{xcp6qe)gIf*(pQZK5J*wJz6P^JHosKUwUiP zT_~&Y290dRgF3R5drA%K%7*0crg|(ig=O{cARchR8GbYF8&mW4GjiK1A^?$|AF`hX zfo}G!Dn_7}jqI6Q!T0b}>z~h=sp$19KIxsu%xz>77B>U3??qolQ4eF+&a%&c0LD02 zQ$j>~UXN%t6-#Tdxn(=69$~<(>4GAXZEuF*m9I1m^}cy~bC~UmuR1Td7pIGk?!3YK z7a>d}^#+DMv=ot7%iPEV<&{e6>DgelC&~Nzt;ZdeR|l1BT<~k=LH%81zhO9kzXh#^ zQQ7;s*Y0a0X6a?Xx;vhmkd5THroDZ)! zYT+#5A%0_c5W={Y_tMJzE2cID<6T{FWiB;pO&6up!Y@G%^XDm2$DZ6NmJR|;QmuvN z_ulw#@!jrcKLmXL&&5Z`$<)L+56=+#1wom;dplfQk5kQ;4ar|A$rv@{{#bj(bo$eD zdh1G=E6KkHje7C*@qLuI;WEL3`~6Y9Sj`_?AxsBg7Xgw#6$CEfM@>qc#LiB=G3bq> zII>Wo97d_#JjCA^!qZX_w`SFNF9DcAH#8fhmi>kt`^}!f^q51`b%U|>e&CR0bn~HR)@h67~6OAlZQ)cyU8<%sp-L_rOl>^|J1Kg~20DMc*-~N-7{gWDJJuhFl4*R6#3G9~4l}{eH>^U_9yrv#W z-X{rK8GNd2**Q+5{cFLbeC^m`IvY> zvZQzSgk_4m=Wh1%)C)yWW>1U$vo`*xfPsG}8jFU>C4uJB)<4-2LZUuf@AY)A-tgykv%3zKO{ zLc9AbBB91hXAu(DJKFl9GM5FVyr^zGt=`zW9wW(dO58Clst@QKK8&M!P?U2DQ(G2& z7n|sr#KdaEpCoyeiq6l?_z#UCzxflGe+j=YrBYxEzDM-hOf|jnY=062uJ0e883iBW z--0YdQw>cW14HY~OV|Pl>XrKi_)eAphwP@WzP)qY=S+tGY}e4qL!h*FQ<{||X4k3t z@4X`+-_(Bc+E`dw*IIeNKhPr1;C0MG+#%ikHOMwHItG}IvNnj(_ewI%RG@Ze9v8h=>FNhG1XH)HMknVJ zP5oU^T~XI4ILs-3{q72cEq=_&7bOmxjbkyJy_<7avU6}&1^?HSjVqG>_p-7NU^TZpeq|1uZ^K;ohh61$ zL}a>nN~oA?w_lI1a-(m6Z^^F`&fg?pax65R%f?yP;|zMyy=F%fPND0yrVyG-PWF5= z4Fot2NAti5mHXl60WxVENj@$T6NE5w7I(;R3Wn^*fgp&q-=-f-f zN#rcH=^mGA6T@x~cOrHCUe||6`Q~%m$;Rt7EZqKlqJ_u)9*Kb|A{o+9q%uKtYS?>&6r z2Pd25_lhf1zgqm$B9q?pwQt8vi8_z-6>9c#gx(im;kBT_2#DkS&yOcH?SiXaw{ISz z+RsWJranH$skktX9~jBfWbHp{d#%3oueO-QVUnU7BsNZ@96XAxY)nX+j!iLFQH42_-P*e1fi)#y2HndQI zyVU>_q9BbGxE97PC-};%dD0AZooQyKQJ_z({rTUZ#8xoaZk{%6ajmhkn6@`Ek}*`B zd)rO+fD96FZqKLr9|rPT+_xCSVyoDGQxioGUSt4ooYTn|p9F5Xz1nws6k-24DZPh= zOm49ZIrhBKs^fwy{N~57D0l2hDs5Tn!i!=aH|uQ%%}5yoX)#^#K#mn>{2F{4lgBQ= zo`OnqzoVn;XN|jAp{EksOr#;4zmVj?Z%bw6B7Yd4>#p;>*V;w))?h!`R{hhSE%@%7 zk4u-I`1k{ky-#2SU3LptV<~ne`=|T71v75NX~)0yhzsE9zdUpE5@pi$KtHDm z`Y~-`5M^xZnari@oq6$gtcIoCZ^u)9*N1{gD3k%kYcDqGh;~n^OWA0^LLwp>r_eiY zo2Tt$t_+R5g-8|5L!{`fSW%QNS1w`GB!*0Ue9geIEB=71yr#7ktz&8(Im>OG{vSoB z4E90#TN|Z;HP0gZuX4tCmUj7i&&@MoB>e52R6U37I+=?%TfPZBwATCmQsdos(Kpze z$4%$09qvTZ+3(G&Yj-7u0Ywd%`oz{zq9VV5CaQ*6AdzP$O?@V&oz%)o;7gDd51|+2 zO!F4}-;4zm_6yIKEBIVC%PBydbMf(EHALCG_oqr>XdiM#+Z}_Y>m z?WQ{*i_1zBW$w&3P@T+RB{rM{OJXA_`=LX@oyO{N?P6Y+2AmMiET3;Hl=2CI|KA!+ zUDw#tFrZT(L}*#_X3}8jH1(LVZ(r8yZcrW-HaPB}&vL(w2YEn_8+XpRX9Q)qh#Oc( zYCzG~3pf(pL2oeZjt||l?sg>(;N5nvhaet>;=gX6iUvsK`Dz{W+2OX39~UnMYi7k zuBHaOPgcH_!nvav4`x+$ElW89_}Y1E({;tV_VW%#E$d@mOOA!V_ufrQ=>I5ppzu32 zFAXlKUv?33zvM@JcyU9yT4c0h-?H<+5iJrH8DF%t??ignck(cHKHnEyn()S^q9WFW z74aTX!}=d%c}fJs{_dCN-6PKwRexwp`CS|x1rts%Cbcny6k92Bav;v*gFwv0#l&nb ztV{aaDV1XsW*&#T?hhCxbH4cyorC|y(c{Zen{=1@fE6U*=TuzZ=vviwu$I(`gMVOj zg*6q%Z=QFWZ{)i=@UP+90u1rbo=MrasS4N_5-r{vG%LPO?*A+V&MCwY{JARH1{)E_ zCXZp7D;gWC`W>)?IrptZb;&obAAKKE3vX}rZeGhXRZN(%V+t$c25WEiRCUXhU>9G@ z5B|{z*|FwGcanLvgtCo)^YTVw<{@|L!q&HP9JD0vYO24-h!{@2{8^|_Gi`s&AV5h9 z{#-&@c@0c8#UW|*k^QWQ-Q?25oLroZ?i={Te6PIR2P`9}GlViQ6M|nP3QIw440@KN z$qkU%7?62=&9U$Bli9$p1z>-<|enzH{IlaQBDo z=`PBwt^Ewwb;&S1(~Di%x&acG~_cUKr!jc#WYj3u=HxV57ulDILq$FA)M`i>C$ z$9WE5gsTX-m;|?@-ow<}Mz7mX;$LuM&ZK+m9v@#eEz%- zeAPd7a0NP^9wk}bO_+kA?xw6wv#JuNSZueIgkfZ{A5wYH*BjCtz#D9h-tp8h%zXQU z6DcE==}VR+ijJaNTq&JoL`;IH%RF z_skhh36z45KG`nK0a@7f#oE@9%FxkSDu@0FR0x$+ml->SJa%7RtjIHNG_w2E$Zc9i zoNIF}-%%V9X_dozPb<0;HIL|8`H8?UuR1$T2F?XPGCT zSLWycccX#$6*D`nOY(=UH3<{LL72<3_Xt&z|nB2 zs}EZb70(l5k4(|i__1L9;{uM6p~ZoIc7tyrS6ZcE((HTk!o#Flk3P$f8H=jgS`hab zE*wiuFBV%vXiEXjUpTI;tn{M;TQ4HQo8QPfMznUD2muiz?{|_XlJr1A-|VPWSV{exye~84Q7u`nFrStmmieuv~H_T*s#e9+2{9db>$0 z2=e=A2jWsn2V#}0>uXerNhCkg5xTqIE)R)~#>4x(Y8PdI2keGL{#D$~`7*UpDl2v( z4MRc+!>>vSH>V`fcTB9&hK1Dc0`railV;KI<5~8Muu2;I}@~p5WZ7A2vaG+NaDC+FZwSl zY|HH5${h=a;Go&*!uzh8>ELCu-?Z8)2NBwaxdPIj;@d1*R&htuBlL9QbZu_eZygxi z?)$hAZz2K>R(l+-uJ^9*Gx+V}T$*2XeJ_E_w-afCNG_ul%l_GC>HGC}g#{J7fQgA2 zz~f*^a(H~Kgd5$k4(|X8Mpadn5GFjR_MnwJk`FQY{a)(g6Cp3>pU12G#0;~`ll}Y6 zyr6`?ruVq+V`fgP57=cg-!TLpFahAM-EJR+NapojCYjX0-90r5#zA}h>tM}24!E)S zo4m>s(hT6BC!(b=jshJ2cjQ;K%>w*;z#0aio5`tqDTTm`8ZlZbIVB&ra86?jKZRY6 z@DL-z(={%xfL`e^?mGW-CN7+z^t%M*@8+JCZv{_Jp*Y#fLF9uv*ynKBs2VHF|B*x? z2hcQ5jb-FuDUOarex@4zx>Ipi{z1}mZ^UWO+4JxOO>#ORms>V+<1BPkuK$X!v09oS zuy*0YoE~#X@(dhXnaqD>3_7hjN@KhXk*AA(uK=DRr-b{D%zk+ZBXU++DH?zzNLWUZHMOUf zS^Y#EGbz@_G@8lA3rU+PpJTx4dOt)81J5-QBaO#A%F2aQl%rSJdTbsanOUULzf~tL z!_MEmX~4T&zb9>`X3d{Fm^v9(#vP*G6Ay(2YXf4LCQFb(C>bYm_Ycx54w1Pj`ypq4 z`I;bl+(tQbb|UyG%F#FHzl1O@;sRNJlVL_tIw}1~!14MdzVRjmhqLQQU)Fs7N3EDf z;k31()_k=B0%8x>K^pWpN3(KvvS`A@F2WD}$1YEx6!HrDy{ zGN?RCBSYBDeJG;qPrh@LPW^DW;S{%vzwD6ejC}_8M@eYv(Y1j~77MC{MMIg9KBHX9 zdDAlSVKTxCn@H+{?EmKiAY~?uzd^@~d&{FlV#tjv=)fe}ZRXW6G&l_o{@vqe0|Jz? zm<}QsYu&3mHpoFe|9G=;kn4d+Bdf3Uze+s*U3s?aHd9^#Zn%T+hp`{f3`*eAYg2PB z986i%FU?MNfZ$T;`i;2ppy>8A(5!aW+1Ao?e z@l_7IDPudI4CcS*!AP}HFv)m&DL?<(;xZV46{-?XZ{1tn2C-D@EOK-a4a-;)`i9lr z%lj1BzM=!7$2C6$uZI`9l7!lrqN|HqKgXw1Jfmz10~l94(8ON#jCqT5&;PdvpN1Y2 zqb2myMNwqtsFwPzndR#6LRDYxEK1+RMS^l=(%R|`CI&`~0b!-i3_+BFy&Hem+8Jv# zQ!l^DZm-eYmiy;wf0CvHM{MGwx{S)dR-Yu=1^c&W@tayn8(vp4iRf-hZcAx}r_nkV zHHoKg5uhUMIyD_F*uBZf$YicFK#e4am=fHc=2Oi%?9}`Y+dyzzyT_iw`Mul}xTfz1 zyL1MJBGBgrl-;C;5Fy~@#-e39w9l-6oklHW_Kr4V?K`V3Ti=hvAdu z9s9plLdbjwcFgZ!dM%e%Grsq??cpJwo++ay$EgVZZ@#LE@f*>wkj9WVgh-F-pDalz z&1z_ot^WOsdT~qQo@MB0jZ>rPeMnWIG48{-2KkFWu&Ie3hZVC#?KfLM1h@LavYXtd^#+^srKtUvKekGK_Om8& zqjisxete3CeN!$CepN);NCPaQySKZ6x1f^vLyqU^6FlK`?@p|ICa!c7l70EHyELp|P z*Wlt@3_DvxB>OLG1Qhw4pkT7-Kp*8?Gl7_s@tx(%0bpaleGaAx7P zbl*n?_^%ERaWh$jamB`h`j=LhT(&Q6hi>1)uik#%PlNrr7#l;^bvvU0U*9>E2tm+p z56Fk;DkJ6sUUJ{SI9G}mQdDc5NJOZ?hzHm4sju;Us!kt)CsxNn_u8uI^xofrc3D~AT|Yk7J3@5!%kiJD|nvsJA4^qz+=NSsw;J7QqpG0a{!HNv9l!p$0s zKd{$);AZQ44N6$?Y^!}RF%MGQER5(Ynp{=>!Hj!FdTeO>jQOJfsZ)d`izKi7 zZJ$E+4DQmVQ}}fWhMnOxk&BB5kMG! zh1V@U5=;{yD zc{mU~Dv&zxEJwKM;$r{q?(Sp^42*Wx^wFja z$37kjO!$O(9zRZqp{*^38Zj^lM6U2XiBU|VCjHFcvE=D`c6tN<`Bhgakg}BxVr&W{YT~i3uCLFIY<-ElVdQeyNz`4J96iMd48=QI2sg5dnw>9{3M2R{ zz84^e`?Du*Gz4_eM#W7}tK783KxR_p3%CV%I*s^+ba7ANFlyK(bmBU{q?y1Eq3_Dp z@K)mYd1q@%x0o55w}XFQpT+O3sN^|r_M)dB6}>+6QM zlrn6KjgE*Lg9QJ)oagP(T45Z#$J*b~>#LAbrwd$cmO2=Ah<^l^DSwqPx3TIY7>VbJ zgoXM~2*lgmMXGZ15E=ll4SCFtHx#916&vSJ84WGH{%tiQAws7b+9Vzh))y5t=I3P1 zt;>8un6k_y>RIpJzIe=-RGeG(eSRF9oSc*qQ_?=TzF!_q=fZ;j1~kTEzK6@Lo^E^4 z@>C>`dMpYB|Kbo#GD5|cHFWrr}goLzocQ;5%my2|#gmfyf zbV^G}E!|x%-O>%x(je0B^_h8R_`nC4fxY*f^FO~tWee=5pVAMpaKw&0d^?n1*3yHF zV89q2u<`ID>r3O#(jzLBL8)(Xh@(ylDr@cb6Cdz!i{Mo{>p`R1`jfrf>~%v~OD9E) z0)F*sdw&Dp`FZQ5_x(%f?YS|dX4gvwQT46Elydw|wDlY6u&@ZnAB7cWg2JSmXWn6L zUZ-38`{)g2u1C9U#w~87TAzT7A>_%AF}GpOW06SiRafzrLaHFlMdjAU&m;QX;13O) zNLaDw4y`tGZV_=OEAqO(&iwG~$;k!5+4&_b$whLdZ&{$vg?U5W>Ru;Ya9e7oGoZ?1 z@qkotdvF?i$RSp+cshb{aM8qV>XWiKyK2KEEQs(WV(-$N-yGR=DrIhrUcHE?Cwsy2 zLH_*Fx0&PakS10#op}|v_G;8>r|ZpyV25`skB_V>&$&H!aH9bQv^c*qg?5UrEmwre zi7(sR+bIKCGhqvGc*M=)X`u7Msh7y}m3qY3-n*G&xPzbYmMTUNSM*4l7lE7!1qGEE zuq20g4O}${uwgR|x+E{&fI&x(l%{^?a_xVX?6vQ_y}tx>#ogbW_UK2)Nj!lCs!S9T z@fY+_vFGMDuom4u#c)lgvVnpSK<^1wY?J3fOB`oHf^{1qx_JGSOd7gEY6`SjIXSO! zWjusU`pwYaV|oD5qo!15U?7P6Edvo$;d{E;KsuxQTLx=EF|i*G`~%*ih4IfAL6;$jL$0Y_pY2n8;?(T2>{;%1YP06MqYXU|xDkAJ~h4 zJC0{4KwAK}uB{(N93XvYuS{Jd++?25k7mOMu}pW+?ZYSV@dHYO{K_#z^egq4JLiyD zOWx*782(KwXSE<%HucBpJX^zV9GU#e(frhvfSqzLMYxjPtYI{->f|vVXSNy*c;NbI zK4H(Ne0J*eMw1u?b(J#0UgoM*EDIW|@q(V=6ZHHqwm{WtkaP?MyAeN0&K?cAsA61L zY{ny+L;3t@Hon%r4|*T^swtESs!>juQ=EAQXnuh6)6>ff2qIG?9==8gnlewrCnKVS zLU_PfRw=gS;8d=v`O~g^*dyM|&|)?x_IK+707cU2P{BI)lzSMKr# ziSf5CfN{$Etm8fgl|Jfi6t|VA`3TJ**Wz^cX+xa$}7{^wHVc*vH35v`yIb5CvYJzVSc&*hm0>h9prK z&}|_es*7qF^8$PK&myKrND{n$N^^vN%Fvwq>qb$UX~>=rOmFkfWuZ2xH5<3li$8LV zmcGU}S=y9%P|NP`weYJ9>EjN^oE+*4juyplBoQH#Y1PSIJ7*NQG*_ie<9ay+GRVh8H{N+28h^jk4E|?-cSzYgg z?=qm;%OpBq%akb7vgBq>xc*@xCvZu97eX8L!FyV!wB&6bpFtD`O?6uv*7}XBn_F!m z&sIaIlGZQ@lNoDNyUmE;$~9_zr4gx40ZteLyDvC`g+w36ym(Q~^w*gvcNAL`VlWjj zMgu;nckhI#1N>#=940K~V=s=!zQWhphRd)vd{6e+gGkx8BLD57q;rNq!2i+HMBtyx zD*DS?EGc|%j;;sHa-A69^Yuuru4PRSJ||tj%-+&Rc*7z3ih4RPj9 zLyufPjZUkjjr2vRx}ha}$O78_`nj*7giOy?k+}z%F>kl`mVOugp~SL*_jfqF3eRD& ze*P7nJS$dT&=Qk{Wvo(0{vcMC+5lLcL9v$jEqe0DnBNW|Lw=~I)ZK76el}2kK>V78 zTQoAY8|?e*hU8btc*}@`SfswkH@=pTmvX@e9#KH50058RNTZK3{u_j9SvP&ffooiF z+n$INo6Ox(rALwdmUo(E?67LG-5w)zQP=>=uSAxh_}yxo=I^$g|sc%v>vQ6wcjQ>F7vs%0JiPKea&tWmm4=>D>tB zzmWylB{qA^x^%D0r!U!o%5+5# zPUCkFjMYri{YnsFZY{R6DPGU+s8BqrY!LL*{kmgR@puTEz=*g+s=|2AVZLY*y ziqq9jg=GXu!aL#=Zl-AprPRJ!Bu-RL46+{*c$29;n30@?gh8IU3tY`g$jZ!QO3o=_3gY1xa_bP$7b*h<-e7xwY*eItF-%;O*$wILq(r|LML|Jm7&tES zi##vmb(=5CzR6D)T7bPFv06jT;WpYYUNpe`NkQz zkzt1`jegEc2=p`j&{;>>pYd?84PZ@6FS_=i@uT3JMti+e7sn)N%dCC=*)q z(rLYOb)@!ZswKv_P|~!yPk=nU=uXqoG|zQ9;No6oqOW=eDnhD+R=F{6n)m$^h2$@^LBM@znpdIxciR4A{bj8z4Ch3=84n4U8Rbp6rhWL# zIr2b3()Y`Ba<_hNr7aAd*j;0E8E$7jHH$BRZu~MU?A+wlx+cFFw8ul);Bsz`1Yivty$MU9ZA2^6DntoNjUK-vREU4(ADOp|Vyq;Gt|efMU77yk%>J!q z9dGEB=+CkUV#1CSpuWP~(eVo~4}s+^fy>=cPqV}I2o(`UP{SN2NC5P}6%^Pw7l2&v zwZho(hlTXta&o=@<0zCl=Cso0d-}uaJNcE<$HnvW8Zi-(hV66Gsr9HVz9sCv0tA(D zaJ|?(u~`rmDkM>+#nPtKPEVltJF>U}V=T}BH+kTRFG~|u*6%GWw|`qAq`5|R99uFI zu5UOlpzL>L08alUn5l+NTo{I*Kjt|P1jLX4tBRO@@4qfum+-Tu*} z?zTaQ;|%M!{?-m&%MnXYO8hSsq~oIn6JM&Z{g{ zgVl?2SW%{~W(q#NNg|G-Zw^`!aq$eZDDb|i=ie3va`pR(e-w)w)ud8NwU+EDi5fY`ryTCXAmOj7Chl#STs);;ejfDDo%|nSFeZ zIj|dqFo|%6MzO17{+n^5!b#DSjHLQ~gYoV8e`kFCFhf`?o~F}EbEF!he1;WJaU)4A2Z0h#LtUk% z3=1kTmtu+cTcOz9gc?<*iL$wfim&3N4lJpsX3(4ESa^oP zp&N+W#ofbPO(Yw9CcksAIWwT$C<@%U+Z+4HRDK>W8+`A2rqF@!KI0~ddfAF%WJ#bv z1e|`u!HOC6q4>NGGiR%rd&xV%VS2Bv=fvB=n1tac)%e~_mMF|@zwJfl>j+I4K?Ffq z@}#mEuP{C7Y?+G~_8XaxzOVYZhNju6ZmirU4YAB|?zor{_{VvD)PBbUI1jL;`5oK8 zmsz11i&a|*-cgsJb}H%vaay_JbbG=0o_nz+kOd~K%rsmGfR}%?+3S?jjxprvW#IYC zwe^Rw^>z;+E$1{lE6X8fz&v%dc<>V2kenpqTlSb01X@Fl4k%#iW@_xG;|0}qf6*=U zk$zeg_b?IO{6r?1rN)R1$)d>16wSY0au3C^wkFaSK|RCI+1vd47o2k{!x9Sofk20- zv;QUEZ!y0w z4VN9UZG`79)9@ptA?BRYs$hwFyL7!$5`f1G*%_FpX60$2N<7|n(M-7cd7rY|;n>{J zC`OJsuJFB~ntJxrWwl=MJdZ{>yJ%$KXqMEpIuj);!9cWodc*ircA&fQ+GgSs*q3T7 zfHh6nVfwOTt@ktM*UH4#z@;XEj(HqTTWA|4RTWn^^X~0;B07vxEMQ_5WWa6PIAItl z8P6?b27Yj8A(*QI=1BdO5x82XahS+^O)7jRqCN4jEnZ&r%S;()xlH3qJfdb}UocCs z3jF1>78v}Can8^Y79J69N%q^AWK3_ZCXz#d=8PO| zX#@>_yrVxnOeI(~E)49xelKXqa_h57nhPUge%rHaq{AkK;sb_!shSYG+~gM$9iBje{^j~=~iIa+}3u~ zNp7vQgKg`-{=LHJK=-@FVqk4#52SfP^t(Bm8Wo2W>$HyR$;GVn=N-t-j zTsznAjSc+pr1-Zp$U}Z>W!YSC{I*gqSVQLDa+2$L)OboH!sB6AAM}vu#sh0!)osnO zqym0S>+glLE&w@xbGklY*>eCz z^*0g^V5$H=w7Lpu0emJqoP`0pj+hMO92{)*(RGq5?&_l2q)HWVeC0=7;x96YN1_vv z><9gE9~i&9PqoYxQ(-o1Hatrf>$>ef=11PMxyota!Wu|#rJkzHmoz0l{EAoXOlH3^4Bw4!kAv zn@N*ymlN9)3sP)na}*!?>YlLkLF-Ehppm&;R2nmi-s)X zcN_i`l$6z<@u-%zx6Rv{nm*Gh8DtQCUJwqmMcxUe&SMsAg3d<4%YxPCyPXcpNl2vK zT*f!DN+H$YRrU)^Jj#=TvNxkiq;PBNLCoQ4!Jx^Pj&*hbB&BTs)(XWBRgpQbL5eux z{VMPrWAMbisgx6*HvriW`ztDQU*AmOhjC8N1uBTIIg!~f;J)aFRkL!AlodhjVWb73 zM4Jq$Xjn1tORcpqDs zKkjnBCg!b)UBwRx_)_+ka%WY1Qv{;^d}-dv^r_f`l-n!l1+w7UXL_~LB zBC!TaE=1==%^~=CnwHFT_1{`=EVxa6V;O1WvlMAEmtmzPB|qWj)pv`Ixp;8*p6?Um zQBiJW->eNx9UxyB z+dq`vxy$cm(QA7CpH>OM?s(2mhhk-=WRj)WOWdO~(Assz;BHzO`dseuS=DfT%Q5d9 z4?h>GmBp_ZG(btmYkTr6f$!$b? z#+x}7Z^b;EUpyqEORGdkLFGQWM~b@2{$By2SL7psGH~e~xt1VpEFiB9r0_ipZ>SR zY&>v5)T-}XfzxS!K;p^uY$o?9dB?{o78jQ*cfu!wE+!VSVBS@K{+n~pqMz~4Tqt)=Vog|#)Qlsyg4Ya)vsL}+@!lz}}>co@}y z#_&d8oJ7yR&a?L&_qcFiqYdI1cy23YjIUZ>y6>=kSBVq5r)j2O78jkiLG z|E~ood6Amc8W_E4)iz=8Il77UAAYau1K&lpynQk~ zP6lt1-*t;rLO#Gd?xnvS7<{E6!1s$2yQkT4)w_ZogckzJQQvF-Wi!yecPSLr?(#dq zWk}RO<|qWYcRbr{g#OJ;;Z!sVM#1(6Kl@t&1i#O&f4)_JD0}<3GT)oV#SXe7oeHX( zBRlPS4)_ZvcXsdxsD!>Di`R-jtwYMnVAC02!)rx?d95Lk_*h0my%%qEI3!cpl6T31 zANLY+A3kmwoU%zS-g$5<7zBhF=r#n_K`&l7vK`h+nvyHxmMAdn1)-tQiVA`^|1f%; z4@mqyJ^!aRUoc#E`S329S@N#QXLK-yZUSGHfL{QpT|JIFFQ9rv@A`Bq<~{9v+vj5d zh&)6^1w*({l~QHUyG*t+ix&q~?-$6h>MwE~b}mC6|MUd?F@jxmi(%BhQCaCelWT1@i;?7YL!pq0*m0qA4_*>r@6*Qt46AeE_N5w4ZuBMvAkiUF&S zGi(RZjL|LC97mB*a$i98DV0mejQwUG?wh-U`WY~U>m`gL7$_!JS`aD_yb5<`P5&Wl zb-6lKVD)xDXWfacz;wRhQR!z)QY~wmQ^N?-L;1k{2*tl`bg&jXm~ip6rx#{QT=YXm%s~HeOm9Yg&XrS~8_! zW(gnPxSldbmG{B!80sYfFt>mNAk*k*0bEHFPuNke2Z70R=Z0dP94=t^tq+`>IE`Qq zU1EneT$7}e^91chN8}=5rN{Dl|8O(jB=I`ep3SI||3|C$f{{4R^4w$2y|K;TcGlHh zvhO`S?__n|RY~06dNptXvD}91Hw!i%trvHuRagZ$$;DcOe&WvlTMI&tTZ}Q`fvM+0 zrG*dh^FigUcP~$SL%%?+5 zm>Cp5z1M5lp~r<|4`=KLz~B6|L@{9je4^%@`%;*-eNhEqP}WgQ@9r)tP#^6AxO=Yd z`cgwx1%?MgucXh<&Oe7_>|`M|_Xo3p+UJxXS^j%Qz=y^%tijLE&-wN38DroDV;x|~ z*gggT)%QMH0gv$OqrM>zy9qV*#lu9x{eCXsngDzOGt^K`}idw>)D?EGd_HeZ*3xpjzPm)&vh2m=%Do>Wp*l^5^Ky1MS+;` zh+g&GFQq6}B_IRHWoOvZxYG?olla^6(d(0b&bbeOh6ErOfuk_u^i~b&$MMXC=kM?C z+|D`Hum)%_(gLU&iyB#@exfg}BmMlZH`&qQYtX|%?vw3^xzpcvpfM}K1V}-Z{$k`x z5$MjJiId1%ljY7&fvr!g{Z8jaB5w~MVA;JS1svR?i}^b+cDx)AR_lt7b0b44xx)nE zv&7BtfcSdAaBlS9t0{^-c$nucV^qE;_vB?ey;*s9q;y6x9Sb=!;Gc2yENg&Uh&mn3 zMOT@cg^o;a4ihqglI-c@#; zDLpt8__Y3fiOD!2o){X~GBF;FeJ4~vG*dr&a#Gppd*k%+^u#2okU1=#A04rlY#58q zHY$HG!CEMhS87$`hyp3!j5E2_Z)ul(3yVzsO$#qhH-o#=(|hGbVHW{tB2<-NOJbjD<75IhQ1rBL^*acscTotP*yxElp@F z5CqfC3O}ohw?qSM_4zMsK$=y{`vV}yij$Zl?CqOte35|kL8%Seuj3TU@)}mosm7li zXlZ<7XQwPc$t4R8Ibo*Y_63amV`}u19{O<=$JHwB|M)r6U-4R7u%@*OiKoBYPn%Pk z+QcY4@aoaUpGmgX$|3haJ$#n{**5X6_g=gysE6F~Jb9aezUqdOPb(8nPk9yrCUyd31o;AUE!fje4>_B_aj>cAJa%;ZdO)(cY79} zK#vq@|0!k`$JXUbD<#k%c!nP>)Ak*_gm~)gS9w{8R$2C+BhOYfKNXrWZvApSZads* zbLI=gOV-e=ga;d}X{UM$Q2wNXfv?7}>M@rjDUv<5AX?$6`N9$HnO{FwiVFMtmJmP) z1}rxe;L$)>FGTHsJb$z-ZD+Lq+ljV`0=wJTP7L1l(vIG(SdM`}Da*<_E6ao}WQX2s zx!>AJUHyX$`1y5FPBV*Db#&l2k8bw%<-%ejJOc^?6_szGY6{2hVl>p@VSCt8T85x255+RKJwTIR4~HojZhj*NX*$ViBroMPYddbQUjLiSu~v}BT` zDqtDYTDg2Wb=jWUAa%z^0=Hqz&!wI4-(qh|lq3F|KEA7_+ns-UP2(4wKggv{R7k3{ z#a=$|3ePi3pmW!15A6Y9dmv7#1`wJ#KRlKHvsMTLYBNy;bL||igmc6S+;c}o$fJ=WqgE_X2I!g+01eCU3R)?w!; z&?gJVDv6jY9rd!VR+E}f0%-8dm~nvZ^Zg?Zr2bXtZa_ETF`0#rnjA4Oceh5{V&Wnf z0di)lOg~n~WjCym?sODZp2j|~FA8TG=|U$LCwBXbb7$W6uEO+oLg1jzqA3c~!UU?Q zJD)B_99j!0=XsG)_BKM;IT2c$GrB&T$rdy&`7wNToN=)u z(-={)gVgk!j@PGAz3=aG=B1rCJZk(2%=BESomYx>KU3sKd30raEi(;LMc(94r@0pm zg*ExS=BdtLkbuoPy?zInGC$;L^I3JqogWOI7qglA+*}&ORd!?(O?Df>?7v`CMRi64Jh5<^}9f+;`V@0V65ANGQ9IS zZkYf5uc+zLYu#VZjppxo(JQO^8Z%QBGaI z=W)Rk$+1?+yInB4k5;w@Ak+nl<=+;$dH#;PkLd*d2W;5K?N@ubIXSo@tIh5^!?=5M z>1{VB(k|n30{k2I;HF9-~sFad7kAH{C){t88t{`-dVkl17h+ zCQKA3QGIqcT2gbM=~GF%tZ~KF6!G%4cvp=mi4zQ9%HK>FHAZ+;ZY=489pj7K(V2S$ zC8POI`irokbAlowMq~-j^#jMfQt(Jqr2%x?j3hu2@we~PA8*KE`i>>wZ1eM%0=Zvw2C2-|^$UgAZ4`NqK zJ(5I}QtK5&qZ5e67}s>x1>%TK7mk;>;o;jswQKOFXATbconhr`;NRFNTseP1En@=cMt;lJ6T|-w_pd&AtTtN~MxdNA|?=hdQPRbY$p%HMyHhX)rP&UUTfg)&V--8ld zY3;aNI1Gm(`%dg&<<{vA()ULd|-kmTP9nW+zz&@!;`>ljz1bI{J2bBB z*UxNUH$~QOahZRA{P5RI_O;qLEy0PO2nX^XsLhKusU4gkP=@<>6<$Q>v-bSqfKeJp zoO*2R_=}}9(?|M$o3eaA7qgG67gt#4=f$hhIZM|&g{r`3shqvVN8g*zNkh!g(qk9L zFPlrCtfaTw=bHqzynU=+WlEQnw{iUEZMl2*L1X?Fw^_3BkgH-F{sd>z=rId zzxqrCd5w&3U}eX`%Sxug1Sj@E0hbkbb;yr!KDt=*Y4In-kjqQTIO|u>yYeFHR_Tm9 z71#IpYL?@MDDYAWny^AvLuFxgFnbA2Ly-aoyg=8o=o2!|lEuwS;5RmX@u_u=?L?{61BU2u2m*`X z=NBuzHj?DyidpbCj)g%tb`%O61!Vz6!>t<72%8JhJ_|R`lP|Ef_=vtucYmtfrvJ7` zU^e^by1oNsyU*T&*=pjSwyBk+nnAUb%jZP|cdT3(Ve-rvVow2VHn-gq3OFQ8%tBFh_1R-}Jf$<1J!;_W_kX5^|F^7b_W#F?&Ik-5rP5O z)O<=qe`75kjN~%|Ipt4P4rDmzGLZbf{(I30aKQX;+-DAmrClmuu#}sV)sfvH;~k&a zR^9mN(7EBck3Xh)X$_O;CWP2g>ZfDLJDNv~P+Xi!#w&0_sDtopJ2tQdU;$P9Ki?Re zij%1ZIul=oolY^i%-B322Juv5PL6Ru&fku{_cZm=A#mi5LPS@3SJulHMQRSq z4L6ZkJ>3-z!28N$ZDocaY5T)_tgZdxsUYP#u;bIw+0o4M{v(Cn~~#f3s@{mM3OmXM$TzI3ZY zCbv^Zq7)CV=HRoPMDBn1O_(5K9Fx%J`QskLBMCq6$+5(*>ljLksH4=X zSo^K=#9{aqa6zh2E?o6V*-hF$wa|6)E_r7?#rW2&0 zmJ|RhVjs_58pGFqG~vrTnpFHGnmLx!)_yKXqIkKs*VIt)-GmsW6MgEpXCM`vpsgJlDqX*uYoahG#iAYjkcr%ee4wW3DpejCg4t8=2tRL#qn=>A;s%yU>oEHq;kq&<$=t>8UzcfoRE`^v&2NU8;& zJor(PQsa~J$07TfV|armY3o_vhR4L$Vv_}9Mv!0Otw z&(6h;n4+eAk%JD4_FNFp)1c~Y^nYLm1a`!e&Drq!aYb~ZETAi}S14Dztdloe?d!Pm zyHc{0GR<-_9g~Ka$lExI=!5imib)jH!F78+be!9+=u)AGQuy6ANHF(g%gE+=0|Xlg zMpoVLCdBc*&$a>NQx3Efm#K}{N3438H@4hom-6MV6iwH+9G{31T_alGK*aDM9?UE% zeT>R1iZq%Q9!d6=sHsl+lFRR$cs$1YhsPYaDf`mNmY0p1KOJLso*$l?2~y-QANSsf z>8lQC*yhi_kVB;*72SOI`ooVyR7#ASSDc_xNz4|vBnaGayc-A_a1X8>?mF>(dL9PH zPP5)}WIsW|+;?jmzZLmm0A8%X7(fj{PM%3>{_u!~cM{kOZqw1x;Z@zOs7!&CWz06% z9rY%6fc3FtH|_Qegh{81nHTmE(WF2VNrSZ!D6fYUfASHM$D5+=)v^X2eZ6!>%1c|X zBOSG=PY9ejj&$!MgO%l7KHtCo%tsP|U|9M?xo6fQoPcvlv=$SiuX=Xh=D0LRze)g% z?F&GERDll&7ot5UJ0pM~k8Qbl*~k&s$~HnH9N)N)hQ)GZsZx@`=+oq{HfX|akUrw2 z)@;RG1}PHO_y!k8Jq3q7EI?x7@)^%qe_W_N{&!T-9G0c2aS1bIhPOpZD!c;5SG&< zhP{5@_uB^5bG(Wob^GC`8PCGhzL$WM`OS|#{!k|;YE>(rrv=1&rMunco6Xsktl}_lj95X-cqI4M72y-~%?TUwi-z{_ZZ^Rq zvT8oZdagOL0zNy&L*&VlJM$M`JA?iM8kCsysnW;~6lAYD%ja8~_t+&`?H?vmP*mG`3;97bMsKNSWC^gi4 z)0dUwNI`I}@ZkLR(JA*I5n|AjTE{vQOO>k%2W*hnLkCQy+9tSj5xcuFjlS3}(Ud>pwuTFaR1$EW`|E3+6L3V)8V+Ssw( zs9O<4BB5U8q{wjOPfY8=!in2C=I@o{JuA=^Kdt){tt_*KiRUfUiN1lI_tDpx=gYdcY#4cb9_V#ewM5bUH9Lxa0p2VM>}E6l%o&Z75%4dlhGt*r}ZcFf+?;r zkZHiJrNd3r)bUlYmCm%E9tp_XDAb8C=rXtKR+vn8pe2|UD+q&A@xYbvc~6F>A5=o+ z+S6Jh6-aOHiVH}409^}U=WOVxdk4()A~|p4$9Fkpry#O_n&J_ZI1U-JIQ6QG<#hBm zaGTS5d<-bH$zxh|VdZtU7K)^d7z%JogE_I%#%5z&!S{&hA$i&2B31N{ZC}*B%jl{& z*`P?4Pv6+uO^+mf>F$+li{wBQFoaw01h*Xsa@1di0)_SE1d zayrXxRB7eE!Ls164eW&#W9RUM#IUTs7=FcKA`f3}LgV6vgq$vxk6GsOOK`8A^@W94H8lhX#R-uXK*H2clVMWn{J|e;pO;54h@%UfN znpZ2;kz7kHVb;G0EA`TT&#|k9v@AJZdJADWac^4LE(fKa-ot!s-Q84}6X=GVXJ^jZ zdrjN&U3yP=|FDy&&8j@?40Nbpn(m>bQVLYh{A?zNCGJf0fbD%jT}kqmU&_;} zHg?k9_wK?O*iAZRF+!*JJw5>8t2N9boaip<-8T=74)1iz*>6Uk8%?O!=0?Ao6^@vJ z&5PauQ8?}=r;5y-x^su$3kqgF_#P#`aQlk(czeY0ApGABp`!!9FJZ29&g-52KwawN zqJTJntM>SDH$b@*C(L7>$xLKXRhK_AJZ9--ZfvZ`7-(E_Oz>FPMrb8)WP8p8*DYc< zlwo9*A12Jiy3XbN4T(;Eki|!{!k7F?HKd?9PiIi{mYJM&{3pv0Ve# z&cdnR&)dB~mGaGU=DW*gE+Jq8=UM!|P6u^TMy(v((dAP|w1uUS`(ei*JK`h%yqaxA z*=LH%BbPKM3zGagQ^RQ}<0f_JBOb|xl7qLK0f=Fdv#|QJ!F`)#!r5R$@{(!T-O^I+ zc2iyJHH)7yYv(cw2U%Vsb`y2wtGY^W^ggyZ$dxKC`3(^DgBlP+Il3qIA9tE#bK>i~ zK(e$nzP7d&_)npxH^Yn5$5apH8W%DVblhdMFzVb0=}R)j5;PKKiVeNFgWT84Rf`%t%Bx(Brqu-B;)HFZM7WTyJ|(reuIgRJH+ z1|19vM(gcAA^@y7f7FW8D!`vwhz$*%!&YYgD{d<`pc%$Gf&k5H=mm_cCiBf6%#3<3 zCTQQuuuA=%cg7BF;NZOHBWDHd?MHx1< z?G~Rm|25&o$h4_w$+7Ufuh2)`XE5?5QxqWXEKUY`H-)pu-P7E}%cs?6lx-^V3^i$Q z=7tX&pEr>3-E`J1tND#fGl0@g#g>iPQwOJSy0Xg-3?`Yfh@cP<(+CCJ23#kYljZ(5 zCoZM|pZSoMfzO$B zw$rLsrIuOCrp`gEBVdrC(uguD8C{7E3UF3CYR0^ofBE*Sp(D@*&SWZln zd6QQ9vY@$QSPVZrw|I;*Tcla!tDgMuYPcCp>h#(AbS!{vA ztt~B)ou`izarx+>J>BjlUS3|VpFSN10!hZee{VlZBCp%H+y82yHm`H$pylp#j%o1a zr_H`Qhpd$4o}O;X4u9wUl+^RhJ_Vqh_XqGx_{jLup;}491$;8;{Sd7Xw~$KONyCg> z7}PC=>%+Lpa-J<2%avxlKOT(;Cx17!IzA(ipP(Sbfl%t|`U!!J&&jxJbCZ~-K^sJq zXNX{kcsR_yk2yAOe*A}Q?&(1bB`C-a_T{xKQ7><$`an`!)+I-ij)BH-j1e8k^7MB( zrI&=`k+WZLKv%S_iur4bxb-{JPoMn!zB?}Wu_{gRv4!EkwZ)Mx-GwG_{>m}fbP_E} zJ~eIa46UvPdI&n1Ff%c%8w-_E@7Uh#A%w)|Rob04Q0p{potrti2?$!~EBmc(L1~n< zXftXATF3`G-W5)(*M@p}-@b7=nZxTH>Qol;_#rgH4a|1Mw$w#eD+lExT#C>(>dW=* z*cgpk3n}liyuSMNwE4?)`7~k$?OCTE!Ui+72n;q`IA?PJM( zsIkJ+ok>7d-?zxQ4?Nhnj!fADO2*)b*o%qb+;FwK0>nq$kpz|(T&j|+!IBwAg}JPM zsYm*cw4&5`U)nup6GWZ)~BAv1LRl(%J4{a#VI^23mv(k_t>y$@fL z*k@Ov8ws$#WL;aMo=_7zc3F^WNLRcWymRLIoTt+v|=( z-hDM(EAejE;DGcOas;)kmu|O>j$-_QvrR}r-;;!HTZ}3dC1$1PI&V=K^ew-(w{?%9 zOQ-7~ytxFW>6Iq!7Mzw;)klO8X{Tt;;(V5Iz>a`q`K~>1=S0!SqK^?55<~vbCKJeW z)h36sIBM+`FiAtG&J0ptV@n?mnOTvYrhfe!koI!F8TZr96$pehGs%D_k6=J3@0D`s zRVyl#JyFPTXkEbBcC8s4Ko#9fyeEmEjOnl^^LR1Bu|0LbMY7EtlaH?Ru1#8DG{{Bh zXQEb~J0`y^)M2f35>UDDs>b7?DklB>P%Fk{xsheY3C?4}bSJ9h^(*g7nXNo|Ga)p_ zP4s%wi#oaD4=@`frPaf=&eIs!y)x7+p<)$k)dI3HmDml{!Mkwg6;$I`wo zPBwm`d62BHle)@|!NrqWl1dmb-@an|hOrH9FEx8fIC2$$v z-Hv`}@U4o(FVA&wr^e${;wcJgrg)!MYM-oQSuJOjg+T*JHWM5@ZXDex zk32p>=aN4NBSfd+qOcMaTp0NAV<%%%eU-Q5kjxAph<_53>L|-ZRidCBaerS?grD<# z)T*e=d?EUt=(`Q9LmYf-lb1(fXwTZWXQiJLGdM z#b1<=QC#w|aj6hy^Ht|*Ency2U8irMzJLRdmNR-nvjr?k_m#!bQmZ6ItYI?I;Y+- zX2>JBwTwFDBE4$DuB{fYt{<;|&bsL+%&T(5%RTy8tn{~e7VQKN^2&;f-c0i9Gs?;v zvJ}Iub(YP1J-~$hu!$FCbQeIK;^nI$i2c*~h*TzL&n5#k%Nf|9?5vo;^+jrqNn1;c5z~iB4==7(x(k~0bYeE z8)W8i^+|mbggwRSpNf#&UZU}fm9tt{SG|ML7604rkLKzuZt6spqA|5MW~P;bA`c5V zU5Bmk@$uMKlgxz%A6j*zx!z%bFvILTOrm)|q8J8qhXjGMsAOr>wK&IX^jY%?W$`(Y zdlDn3d2tN$gVm&hg0wE7#iJj?k1#kuc@F0!veNGtHJht25HBZpHiezo!>X%e5X~co zXzy?zS6o)hTe&?EUrTd*>X)*Km_R_XB+l$h2!z!-2Uj9761xt5K&duXF0gPO0sdRG;d_{*6AnimKKrCS|o?^J4T9DO^xJvEPHH5uTlsgKz6dzB;GJ zyd&m|!FS?0>4Cz*@Z|n2raf~3_CK1=GAgR}YvV&VA|MQ%!XPc(Fobk>hjdGKcS?7c zC|%Os4N7+nh%`vUd!GMV?>9cMKs-P%yTDlQjN(YM3o5OLW^8;o_~{mNTu+WXw5I*V$=)XqFQ!dEfSE;8-4VtMq^N%)<(OPeC1;4A|)1h`o#YsPkRRhe<~@{xM0xPxyg z!QstqpeyeZ#Awr?jV^8ii39!yruR}mATg@H+`?!{0@;i0_F|LE?5Ua#sIJFzkVHJ5 z7kXP>{%*cl|88bRE%$t`dfXBe9TLZpQc;^n44bQMs3!Xx@Je{B~7ONA z`EhwFAyX9~Cdd!F4gTD$Bhh5HyLAzcY+CW-&#NIR!-YQaEw8R3lnxNC^BNLZQav=~ zBQeo5tSu&7VoK@+D#ron1pv$wtFq@6Y>0`Y?65lq;oY5)4RH=<8h?vird*RZ3~Usp zXoR&@V>Xs@ja9;*VA9r&^%bT(Tsy!XhN?fGb7^#j`}r`m*b}YuIq%T-u(1%tz$;u4 z{QLJ$6e2bf5jl5rP0>>ui)n}dAXcJ^TSTAOS5lFYuTErp#2Dwa}muP-4!R;IedF4{2<4AYME~LNsBIhSL8Kr^X23*;2I^M zAXObTQ{g~`I0iOk1Y$`NL>^63&5!8OBB}!GR`boTA{5DUxVo6Y=G?59MuWL(X>0&^UWY zH?>3&v9Jk>rz|u^sEaqA*_VKFn&X#wP+K*yHHmWx3SokSg?I=q{(51tv7~d`6lI8l z$UJe4+YuTqHboqITMJsPDMmGbbl*xJfdzAr%5k^#%Hw)>_*Q}&m>fQS6J*Ynr=Zr34k>8e>9I0iU4bZmI)SgGxPl&Pwk z1oUg4A3)BJoVeMNNJpWezZVr@3{vhi?C*Ae%ZM-ktb2PHf3&Dc-V^o?u>GR+B+oO8 zjE_u0@{c07(e2)C3|l!;mwj%LI9BCYDh&#KgztQ)gUIRY>lb{Gd*l4G(0CsFbJu#k zn$gKR%iAr(i~(4W>-2ny zV)9F7;PMQ4dZ2MrssC&Ijhh4K3g=*hCB?w&4IkGV3&OqHwRLSYE*{ti8B^BKu`4*< zu;uq%&)k5ySBfO$Hr3ubloHbl4?fioO|M%TsFck5Vvlu*{tZegEq%3N4u z^=zh;;O?)K=wbrcGYi}hA@J^J{>)i6OgEhHk-2L=0*P0RJXph#>qGhLMZm?I@|$~! zrlQ5%xkP2-EK14&*J+9uzS~bo51q|CiYvNlNT6E5>C0yOhI+{1=Z}(`+=o7J%%%G& z;gk|^hcj+uJG9(U^qPHg5Xl~K)>5)P8V-$?iRgO62RM>Zp0LJP_)^3%(;!Z{uls04 z5KwoKe=>CI@WL!7C(rwBXuF9*VwKdQOrye^Z=hMu4eu{(;6U~UJtx&ejb3SRxGhhP z+H;larKU;3nPnA}_KfbxpPqmH1Jf=Rj6t%8x0#!peF7!iaKY_h=ofKdcsLuBb}Uwd zRHvJI?7r`ewt7=|;AFLB)-Cr;@Oz~w0X>8OgH2hU&a6ZwR-nbf1gLjTS~j`Mv~p-L z`F7a)CXacPwYUyq_}bdU3b9r#d|dF{ew*4h-b>)8n6c;N=VzlNC2o0P%j68V+y~Rj zJXg!xV$HU^Y|k}wu}n?(hJaK*xEe&52!k2~k2n?HhEt98)rR%4^-xaMeSMSonSEyo zlN7E1PpD)8hcLbDDy)8;KP-*7GwIN$bt2<46{L6zksGrQwKlrwaPw{ZSr zMTG{QpC!hh=${KKj^kR-*#S8QO+KE8Vp|yB9;F#1ZR$MxjgJcVFSVQIKq~&9ivPmC zj}xi!MG3;zzW6A>P0Zty@rZS|HZfFH;>Jh@0cQnZ@&o=95|%GX#%7$*bxu^zz_>}Q zSXS2F&G)?>5R5BO6Fl7%k&SI*lQvTa`&W+4B3Fh9s!-$F_Bb|FP?0kJ`y|?M99&(J zw_~3LrP5%4A`O%>XFSvr5raj6OYB!DRHdv_4h-+f8qiEWXJIpxluuflBd4g!xcZ^2 z+gy)vqWf)%Gf>K@U3X3{+X<+O__NwYJeawa%P=Lxh4j$BArbIjjbL5%wG7Q4=F!#Db(vbT z!6)SZ^bPn+9RVMrX`Qy{KjfD!I$>$Gp~!_5chmzZRCtbpFF)YLP1ODshu3~|qI!QF z{UXDNh17q}rsfy~C_Z~3aE;t_uaX*O!uh*Ey$_%h_K2f5-mt9OCN>-MSAS5##evq= zb#4n-(C;}R@yp=4+M^7C31Y&At5Q|FKtBjlHHL=gbA+Ug#_ww|36EGK`h+vxTbdp5hW?%Qv^%AZnU+B{hU=-fWalxtV z%u4wfEjXTNk=Z-!wKbWi-^OR`u5G_w5NA{39IGN6s19H6IO&G}&zKCs#1(12`HY6W z7WWO4!bS8esu?L1;_4P+cx@$c+;jMayA-O%17X5nL__M67X=mn`m5L!{v!_b$tKve zuE+DE*!(XrHungCbVUvcN|dd;_f@>?HO_W^`7Wu^MJ5?l5Z(P-Q=`41j@gaxcNWOt zb43Hi0UXsiP_a+H({o$y^r^9zr`t7Z1y)X3^Kx=ZB5pBmY979_k7h~ zl1ilUj;p@XCF<%$7PRoBw`O(-W_+9`Lc(-ZU-IpNpgUh3a6rD}0vk~kW9Wp0X5G&U z%%xLqwDzmjVX?T-*l!BPWm{rBU-zOsY+Ru6zePf}doamEK)}O&gF+^JWE|h)9`yZ) z_IvkY6~!l>6MiY4C4J@@6RU*rFSEZ>_2z^I78WmUQ}z|;W&RrF$7m#}X5E8+&#a8( zv@~<~^8IgP|LV$xl=ScJ!DKcneEjb2e~+m_Z}g-5kXbA}UO-nY%Fu(?I7hLo>&sU0 z>a#$!te()}i9ZBwqxL1eVI$o0vpfi}i$D}f8>K#h9F4=j6`HnIb! zS>P%Eub4hj+>cPto6dQB6MSk^apmvo_SsX)GADXdb`S}ApI-`=R(UU93V6M)XI^>H zu#nK3FDY3W@!%HSxgHF6CZL?ay=`Weytgds=wMetD`Ulq$il)x`-WFdRv2$+)=`x_ z{#|d0?JC0@ewI8H8s(4X?fx$RKN#1yKJhie>_%Su*=G+ouh;p{YEQ+l2NZRqp1!-6 zmzU|;ZJjDivI`!#i`8WCUljZmpi-0&1bR5sQr-?{&=|yZBe1kZHZ5$LVCC)Fn>U)Z;eJA<3TQyjlN}Ro3kJ zovS9E^5f`^q>3?jw%1=TPU3s09=@Dpv5OlXRQuIroBc?mZAF7WPfzQ}>um6wp?SR1 zR9!vx|w*aRqTPRA! zCC1t`EdN;D@51n%1$@s=TG(?Z&!5%>JWrP`oo6vzq0~q?$QSQ! z1>-0q;jn1r(g`-S8D>7wm*?45afw;ouNy1^7q{`YJ6jg<=G$+g3~<|+u^;v0S*gM# zmeq}8cOP!DfiR+_l{MEzgjwDB`pU=!VgbF?l4@I_TzNAB#O}n;M?X&wi%+%>i!u#e zjh>Ec{us(OCMw77ykt9OU?^*2llKgKWaD49P0B0QwHwaG#j10$+dw!fhe_C1;{ z{-l#swge8Fk*)GX&M1|Dz4LU&^@(a~);`(a_nf?(D=EWy6K-y8!B;(A<-ghtPN2u> zllDArgD$e3(2&6hKy6cY$z&E;bVNI}bv(>s83RKuz36n{a=CnL1{_>Gxc#|)vi?BT z=-w@vm3L+ngu5Ea&lKsjIXFAdIiHGw%~&44PpqM$#KXop_g9)s1i&M9(|8&QCXZq!kK&u_2&OU=HAy+LJ4z9OEtgi7d#m)OjRRiWmNmS^KZsf@=u>}9qJ*MX zmB1(T#k~aGrB+o{)u~pd>D{f=1Z15F)Tn2aC_Qbw*?p)G?H(SR!;Cv&cngtR-$s14j&8GF zh`wGppc?`axD(FZ2=!5lX3>&ISmYGfX?I)T!@+M-)vzF#flcs0u7`=GnL@(zO&@Ip zxxwr~_2wGHOg~LtbZ2!*6dSOZXLJi$_1|^QZ>FFBz~Z^3iZ7L3 z_Fj|Ee(?opF96+!(87O6+^-@Jivh0ZE4H_W)su!%**sz)N! zbR+xL0zjkyx8IpyJtr3vu1~f8S4HMrc1-bIU9B`LX2f^eVpzMRr8h7KJ4*3D5VYEo zt8JS#wGXk`%h&ns|9b(lSP?<4e!BvmcnGCfSD_hHB?W2N$TOg)JitGT z?cN#P|Iwlbv9b?|l%>d?bvoyRqzZxY$S58@)tjEo%pFE^x_M@Mu?!WVie;eE&hblmBIWpQ?xo|&wv?bLUhmoeu-|}dhmg<`LJ$^Uyr&ZjbTcE> z!@gaCxP4Pp;CfDkeN0(vR^M4&nrLb!g7>GJ0eAqWA1Eiqnt1}};!|gXt&2TRQbp;# z^>Y%$`cTF40@=cghlev1VZ7Zr#{8KDHY6Mpgy{8z#@womm}ZD6+gs;2ev5?_AC#x+ zcs~IBu~wgAxmrM#gM+<^rO$MEyj-D^vvU-!f~YO>NAmfraSZ0rnUuQO-j^3vq1UGv z3Z9mQPA?z2}S+o7FSfEtR?L8Inm~x>RRm_<&Pi45V9oS7;y!fQHBBBx+<+jS&Z9)1+2V#*cfL*u4ULLp@3`BJ zEa4p|O=Ihd*GA0V-;2+?=ZBP`l+AgV<|+l%A0Sj;EyAaB-ykci0tiin;#p*1WlxF( z`BOsCh}jJ=OAAkg@3*rOH)rJiE^lm2_u9BGUoA_*kxGk(T8iWMW|D8i`wpjdKdW3P ze8{vvX0Y$oK)Wpd@z9u6D?_XFNz1I2lWQ>3`Ji<}CyT1vk0ca_i2#F?jI1~#yRR&) z@AMQqGCX2>;x?m@y&O|kIuN{6-0~)N{NjCOTOaEnS`z2QnMK7-8d#o(9ga5}EKeYh{A*A#;FG zZ0oaXd?$lE6g!`1i#P_{@~*Mf$FtXD&D=br(*Zkp4}gWO3@CDZ$t7no0FMivU%=Jn z&ZW_WMT3af_C0LV|F|k5SoNi_mf7il<_dZb&f6nb{?31gv%7>8Lf(yhR)>2rF#J=Rsd|C=K=Wk<%La*3&Phs zZQXIKeT8xg`HWS0bZ51%$U(~gJit61^_5P}UI(S4K#|v$5u&#(xtJM5-$Ezfusk6m zt-th*1e0I9G=J}-dzF-l&MjF=68JM;5v0dBF^B`33aPoJxvsrEhL`=$XY+O|mL$(9 zZ|CmrE$|KN?PV2wp2IUJo6iK!YzVbXb3sBLp*S2ljT@^v20k7_pcg7g$yZr{>NX!B zF-u&g7+GWn5rj5iGz|Dy0X}!Q6#YXJ zN=JKFNFYrl%``jDk|PRptgKUWhB&IV>JS>6tP7`KLc{3$ctxf2q1&#Awn~*0q(5U@ zf0P|w-WHr7HPTT^h%p9@kN!Gk@}96z%gHrbA+(vgxMJ-Loe&NTOEmr^m?H{F(Zqok zS=(IqA){fyG$xXI5i z)TykP_F@8=3)sbIR6ka;TP$69M@~Vu?)7wcvA%3az#-LiQWn`B2vmhLI$_Bqig2Pi zp#@qU-ejz9z$h$cELx$mQUW~ij~5Ig@sW&_kw^O(!NJYbk_aPOQS>x7?#4yL$SB0Q z&BL=WFpQtou0fd31P>NAaJp6UO~uJ=+ITV=KM@1FZ8#aARl(^++D(zs_oWgv?@@!a z@HRTU=IJA>s&IzUs!xpiDJkyYEehaiipx`0r0b{*y^kaX{eAZ~#l^|?7&Bgza~lO% ztEH7J0hrt=adZh8I%AazK46%C*tkqWfH0^mHhFls2w-{WtD;IDHjPw&-(V>dCBbYb z6aq#KK#yD&-rCU65Lag1F+zt;6KN<42TXx_h7M47$K@LIcEaB%rTlZCRV+v@EvrDl zCxn?f`j>zxQG3t|MC&ThbMo?ctA-tS51-)6VU|`8*b4Jd83Z&*6+{cKD=4uzgEG96 z@khM^M;4rL(&D(cjdQ^DTHDZIt|OpVVLN}n=+;SqD~dWedc=SnLJF98fHGxhVTxNw zP*6f+@$O3G)kT*HI3(RLriE^EvZi4dpM@ViNrzuYeT7A=vksIzns3WMjf`_=<{po` zh7_JbF930@?%#bq2N&T}_dU<+g0IbMh{^hEOT~sCsw-^j#N+w(du3H6M{|Ot4(0S^ z?`{i4w=3X~T54uy7$55t(_PtUt+f4|B8mgghL?a(U*}b?hApX&ob6J?p_x8~S!S!S zI0_l2q^Kf`Q6IY_Tw-RjBt?mcSQzd%-st?L4E5{=R>P}E@_HGwhopmJibQn?GSb8G zIvxtNnP-4(u9wZ0mX<}Q{Zi)g^VicYB3Xtc+KcOIk6=!J?TV1vPsq>u} z*6pEfE{J*TLo#hIV8HLHwU7xNb&Wom#KNq{hssV6xY*g-1BuQ8Ak6Enlqj7vG54}n z>>nyJ z;P`whpl*-A_9wZyX(8~J6~H806lXw_B}!3;#Gsq2n0zF9jKKJPAPjVWD)>bZ3{rAZ z)3YrcKeG+F_uirID1%^>@-iL37nS7{Th4)Cd5ye)4vl9kNgU%Ox!v%@ONb}mJt-cB zWD!Jz6zD-n%Gk=}qCrsY15}VzDGtP#h9Xck+|prV;9w!GwQL7RZ*?{AYzizn&zYfU z$;-#r3zYvUAJ=^~e)D$tM;`MyY^^j2)l!O%AgD_Q#l*;UIKR5t*_{9sz2~MHKdjr+ z&N3cusZo023yl1yJ^I%LM_}Kw!aB?G+js&MK@_@% z4plU@ot;DAa?b`OYRBHD7bKh30hs_XvZzN~$$k~eXn#q7u$uxS{hN~?vp_5>eFlS~ z-V`E0rR8B9Y-3MbE!M>6fgvBUhkjy_vMp631|153@S)b%b1NvQQHs)n{!icG4b(+>#UI*gMSfA z8kh*?0uz8D%7I(~4`(N*z=@sbEbz$DZ!IG(qz;FI)S>=}&3>M)3oIw{#OG(*hx7Bc z=pv`@kg;i`-n;FCf2Xd3pG!R4-QxyAXhy#V}I0?NicKC4K^$918E;JP(3s>5{ zR;6mOblPowDSOb9mzF_~q=;E0ODmNQ?dSd|zif&sdQppki=%I>4{X1%>Eb3=UPbf$ zpSFKepQPB!IzKhNoyc?$kXM_(U~kj3(!vv6X}&3X2eRc(I=HFL_x!rCOujuxXxNk6 z?xAo^XpYlIs+LBN3V$HUsmti(FeMNf^}culzXBL-F54Ysvepe+Stfrwqs+WHcMmaC z!_-nw8WXBWlU$j-6)gL)hns{e6pGL7_x@ZNITcr(-PIt$5Dik;6Q%MFIgMGuj4;yH zb3zQi;4I8X4K9O>q!wEUDK^;Upl+pzDUlW#S#};%!^8qd44iQg=$ugKVSrK!Ds0^J z$}^f$@OT(P5EK@=J&=h7`>0o8F7i1oN7#8iiz0|wJqhHn0FzP#JvQVqB2O@UO2Lt? z`~gR(NhHuucHC^iDNawZficf7lmbY39M*bF>qP01=&p#O2m9tF$<~tqdr5;FaB(F8 zgsz>3n`2$s|N76$lr}Yd0i!Jw-@+z`P@MAo=f9Ti&Gz{aN|909CvlB}&C&edu2Ul3 zdU%zK0!~tKs$+I$GUt{6x1^=(rb^2}U4w{Cit54eiu1j$ZB;5=ii(p-?MgLUfGj416AL&6Qtl zvD8Yx@02nm*WGBA8}Ow6G3mDSU0gBZwQKXn&_d>{F|Rqq8wgIkcv^3lo}X}?(hs%* z09K!!|48yHYVZ7zp9HBFRWt7CAXjk#+F?guvZ`rB)Ik#;ci3v{&)-cqYSXEVbJfPo zxoGJ|-%Bp>KYg-|*_}V+V8=B7-K^Cn0H-W6y^M#O>+C))uFmhygXE|rj z&t)N}c0A5_pI;6B8O%!ur0pr>2uRKLF}zXAJXin*`eGE|L9@rlCji7)VDHQ6c*?$( zt;dy}=Z*F^!BXcs?JZzf7M`AG4qVrLFE4IRLu{nj8fj&1M?N3Ie(4@VqKlOFyk6b_ z_*{1KgjZAU?A$@;wV%h=!-G=ZEjMPYGiQTl76a1iL_CIX2kri&+!p0zS0f<4_Mg45 zgdOsF%ERGYV`VCoyVhwVUfm0hG>~TNW&7p9gbLMrYGGWU`+%3Lfa;tMceW7~{8B>v zJ8B4RiF%}q%l4Nc=QDvCY$L!@+*y&bMu8m>dL>FY2p@`5Rid))rV-Ix73UGCk?Y)7 z3jhg^T+z)P`5PvIUA$@?OyGOyf`umE~a~OUGt1J#w zNa7NhHUi;loNfrRsL}P;NWbt&PEVi=<^|lNgZ7(EO|!1U4S%Y(wTY|eT|RJvHfHEC z#b29FgS-9=*R^fLNfzJCttO~qATUtMU0=tG}ld=MKJjc>dhNJm5V`X)To9lIYHlRZd5ABF@X%}e^avI zVM~BCUBPS%fuFg?MF$lQwE%%D`8a#z)_{$^-yGXez5yTbe|e>uv9a+ssuDZr7z;Bx zxqAa+Q8{3x;ojEqbp_60y)7(m@+~l(esqV0!2PN0J6a|(40v{Pl63|UVP^1L#3m_v zN<>mXvG*y<{CetSb!TB+Ad6j?k~rUR;(%TZN6=x_J*&)m96ax!{PN7t{8D?2a8~eW z7|1c-YG|l$%n2^4WR&~r_4QVv^Es8(|KeXr%f`?5p=$-9NV2vcN>Q8U?p^s6fUpT? zLpYUB0+v61pE0h$lu6TZv@v=B zWyB}om>vcb7#Rv}Xqd16F7k0Rz{+|yNe@=}21iWd6$}hK0NxtSxT=+jdZ26;i<5A! zmm)7crnyehS^Cl5>C*a)E07|{pDo4!_FF{?8WznHkJa;_0(75ce7k)Q>D{QetC%Px((?lY9?S8Bxk1Ha zm6tP!yO>3Uat~h(B>9YrU(CIbP4B184R#Lq5EBv-#8Ab5b5?xlm&%;9y#{G!-iCry zJ{QEY#o8|oTo%d`-5^-fAJe7W<%R_DA|F0Zu^CDv6c?NQXHuzV9B>W>{5?AhRhGaT z3u9I*h5*B{J}2G*Js>!9+~^*?vVP!dS|s5ZB|?r-6Wa65*)BHjmhZm|<8Oeb2iYeD z#J)X%=FNk0zXfZ#bw3L=xg#6WMiXr-+oi|a^#dV!Kf`0eI~XI$*0nZ8by;6rx_>IKZipWbz8&0<^4MqS=n#u$)(O{ z1tAPGgg~V;4D>5&A+S83(;K6wK_lOou&JS;^QYf!YrTWOe-UzejHOIN zW#{W>{`8cgYyL;23G4r{f%<_da2H{gi&R@R&G(ENju_`MF=Sn~H-T*0+o`JX#xm_L zj$hQ8$(1Yvd6rR(GeHv)aLd1VN)WWA;_ zk#vY+kMFP|Y8YK@`1P;VNPg`Q)rU}5?|w=5W%CN9r*C2nn`hK%RXA)r2#DC#ClA~C zDd9z)9_j~HY50DycQPu)_g>E=Km<&W@D{n){cMQk_(g=m z;Jfn&x01|MC_O`{ez{k4wOCTg%Qm1(($f;eAeF`NDNeCE*|d(h>6vje&mNb~cJ^Gx z``4`3C!u$q`Z<@SP;Uhd-ICtE9f8Q|piE@_Qrz&Y2UGP6u`y!J6Up^t-wA zuF%EP^?sn_Ja6rO^tf1anWjQt@Nk`&!)34>V6g6f_+69KW`FbVUm7_!Pah=OL5@KL zNQVAyuH&wPuaTnq7O_{!*Xl0FV+J_ae7&N8c#w|sIl0gNe4{Vx`7f)4)6>%d$5lKV zfa=h3@i1IAf5bhD3YS;}f%`UrW!(;l0EDb&J+l`Ve`Nlitp{|zt}J$GhKhOqd%~Ee z2sm}=_D(AsJp%Icu5KP3yMWK6TMCvGA;sg8T(VZzjVwo|VqI%%t5(`zIZ(ysVf81% zDMPPA*=0lVS6pY4er`tzAXmMMKPC=UKKtI@_8xi5ghWYacfvTC;9x6FK!Kqju)VBF z&9(2nYccRZYWo2bHdB__$EZKfXyDW{p<)ZfJqFMkY$yixQn7GCS9*LNIq{!-G{!pH z_Gt$2Rm)jYRE4>cFHl;g0IYmnOJ^Jzm` zz$!Q}Oa(QX=`VJ6b~`66-ImC*ZU|6JquWeN2NV8GY8kvlKCvV^KxwBOz|``&-+OFt z(`<*`>S}qYut>PwSZ2{dy$Si@Ew;Imzg3hLT1b60kq2@C*kn7kEnkftpVL2_pe)mw z=oM7T$rHLv#2{rgOU`E&0@3X_E6Qo>RMv7Xh!e`noMey_N^g!kGp+DHew(Z@4H)#z zaq_FpyaN1Uiynr&Zca{-K%23&wgyjyXq{Ea6t{nD#R*+)zPr@w3f?WIv8uYb-+WSd z>Z2D1+#_WAhK9jbp7}0Qe4pu6(%zL_F^pCA9p9eeRdMZb&O)zIJtbJ2>fYkVOsAQ9 zrI-_q*8c^#ZwpNEyBiEq0jkHJ3=57@VTU63^slQcFgPtpLvpRe$%t4``8{ijbVi#L%wqH3~YjRU?8MY-W5H0!r?L(qh6qm60aliR8| zY6CN1L%drW7C}~quc~@qRD}G!*~?Q_24Wf$UiyaN{aaoWwD%c`ahdIniq7`7m-|^# zg)Qe}_xGg{!Vg^l*|Zv_fCt5llgEX85W|O?{WqW;EMl_OPqOxaNoXFW=&o5J*2@q^ zfP2;ERWGOecK3(rM75qB>T}2o&cFS@Z(~&N#gs8Z1j470!?4>ofuG> z>H(6TD46Z@=#03mYDPv41XT!V-7UCVXXU=R=f*Gu&MhRlm$j8; zQCzwMTl;OoG?ks58L(bJ#GmFtPi`bEFz5TFwH3~fcN4U&KdH(WhNk&2IZ=0k8YQ?9mqE<0K5Kk;%NaLdSo4_Vp%63PAZL`= z-qpWwK+xRm@gI(~w%f6gh9i-M;Jqh~F}L2<&Enba-@k~uK!m`K+}&SGk(iT7g<|jA ziQXReY~~)K7EYn4>SL_--OIkESxv4a+Ck&QWLgqrmlX(Z|?Cw+2iueYze`C%|v`6AG2r%rcW43WIf9^almU-}An zs^Obs2Bz#oW4g2!|D7cbx=JNMkT*FAsdhu1(0>_xPt`0yMkx`)IqW)XGPlG5Q4&ko zP7=-&88H!zE-x=5mtHRb@6Gt+ONUmt%pZ?Dh3v-O-et#k} zW$u?HH?E=T#^KNWlACV+7~^+yKa6bS1jpm3Cx+iJh#>C83PlC2SW%UGmn``7W5M;a z1>(>l20Fil2C!`ub6^H8Gigxx>`G*S$7DL^4~V>;<7V${#+Q}^|0pE0Uez=*)SsEGQt*F1_g=dVKCwH)m&qcyy6@QB6uHw0V7$USv?mB0IIGR;0z<|zWd|x^3YIDUmjqo!ep3Z7>@#VEjjZMBie6q z5EKU{Pm@WZY(+PtyELC=5J4q`WSn8xd?ANESdwToATX6*4eIY1L|L_Qlv3h0t@6!C0h7Eb(S` zt0(mf#6Z&&G-#s*L()puTp3o*jG#q8i#+pBE&U|>c#a9bi&g(X4kv2t!C$Ss&{U@x z=LIB=$ePRF66W=9^62(3&7r8Xt3)^0Y5F^FBMz^%GSB?ly{^cv^O*9OqM(T~Lo`8U7+AT@ zTCCb4wylaY4^#`sg#zA}0LPq5rRz?fKOQ)7K7nn8KX%L2u&f*)VJi4yR%lh}0>!_3 znP5Z7Auf0xrH#lc2feEJ;kJajgo0WHmJJN?39)b7R{y=|cWsuYDCm2k2m=MgxiznK z7B#kfdd@(Za#rx#3Yayhl4-H)_52(JJd)o3J}{i)l%YXVV@0AW1Q|+`2%R6|-ifIY zbjd_P3`p4EdyLKIrvpk<_qNUxfq|FWnZatz9Bu0$#E+nd=WMgvXbR@?`obpLU2}CA zQcd9#R6ULq?uFhXuNv^|5+Lw=>d|$z+(O>*Z!)zvnzIn~J|s{om`UrmZc zqD6%eVMpBE4I9n?@mv9lUH6k(*N#trYQ7phHceAaa|}4cTSeD@8wo*iJYw}blJh+7 z6)$ndWbm#^q1N?Grf3nHSHb^UeT-I0ENhMHY?=Wk_U6w1T17bk9A%ON&hk7wEh9%q zXvTorAIPn@p7(Q0xu>%1ud@6&AEb22(g%zke#rkx3y*TeGwSD#d2h$VYiV&xeoF4Kr{b|VE995NAwIPXjvDtt`NiVFaDgEvhH~w7qa;1E z*^|&NhZ@WlJRq(gIDk&%WzVkCB4sr`C8Q^)hO#*L1o3D(He z*xwOUk%@dEpEHlUp*ZdyPtN{QIYO#;D*cZkaCFIN0I1wPo2$*gj&xC;~1aroeyF>JL|)BG1R z8Ck^RO)JG&)5lNrt%y@3w+V7G+$D&P^z{@zL|CU4r82L~<1w|0uEpg3OpS=K=zY7I zUgaAy_W@Y&%O@J@ub|9VBkf0}tQx_4vsj~p-~c~f@XK|kW!_i$bAmty z9ulwP1^ac^4!-Z$RF3!l|Fe@k7F6$kQV5YdMc@)#i@} z%ToQi1o`&Yh)p-ywXyr-&o<3@HXrz=$mB0dSzpof+Ps(TVb<-r*N7~>&y0VcdZ}I} zyYCr+po7PX<1Dz83)D%XDDHs})t$arCHY>u$xcPVuT8rE;ps@`Iv}>f?XnIAE7-Y^ z@1*!~o2MC7=sdYf0#lG{MAH-$4YRIbNG%IBM@YRMePrv{Oa*+K`txr z^%EukwK@*1ZH5}RM8Uo}y#2uSR%m!04KVhG_lx21UaIDix18>lEqc{0@Rvfv?ng;O zUO<_8sG#^Fri%@qGm};Z%Abt3zOj|+gpa3g1D!sx#XgqQ?hn_ zmW!9|N2c+sSvl6u>)+Cm^RzN~2|J$TpJq=CYi_yC{&J4j)8|1&E->4yiD}bzJ^UX% z9%?!+`yJIK?>9ScH+;I)G=RQ?M30%Ix~cK80d1wSRzu~Z1=i0}>GOZtA`!oFSv&6p z^ZXu=K?uyuKd5f1BQYwZb}maX?w$iKl`g6r{V)KJ1a=C$qPCQn1SZr4Or!l7|A%pf z9tur}^9)@Cmj?3>I9<8SI*M?(1-tTZ-5fg;17zmFE8&F>o6awu@~h}1?!n=ha^)Dq zj+xPo(M(2mS#3@X&vKEKEwOHseCK4E2`Bp5?_{Zf3sFf`mkM|F?RVqP>mzKI^X$SLdi|uoo%AKtudJM$Hi03Rt-rtWQOf(M-)t*pt zb_k%DAEo6TOSG$)mx!kZmqLvj!!vTc@=3*gTMHl~)lAV9aQmCXkEGF&p%H+M^vRQ4 z+sETHbRQQ_mwC^Jgtp$+Ry}i8MU?lPO%pU&5 zqYxrEJ?dOh&A^V17Kx4V)-3e-U?EBBlRQ6}p=G;(cc(yMgNCC0b2Oq1ALD|ZlyFdmM%Oe7P8-`s6U;b&tN|S zV{=PrP?iMX7G10{_{18e{9^$JyL&uC^mht&=ge@!^jZ(0$m{rw>Q3hyVSwZv%+7{P zOI;>2b>v9nKy}0Nwa>C-yRWt?me#U>x%Sy<3z|dAYml>JDMHh~cm>Xb+z`{qsWnzf=%kE1N+@1rxt7=ReliO2e^uN#BLvx9CWh`iCrpzTyza2Rn8IL8g{eNB+M?D`XMSgo z{p}u(etym$UmcBJkG^+z>gUEs|DMb1b{fg3`}gdzF>K5`@OxZq`6}OsJmwzPO+!o$ z$ZG%JTxokf+i`o`=6#g@!(+-pKdD~CPl@sLja*@&??caiNT~P*zIG?^N)xd zUBEgdSp<$W#g$J_sT)}91JfUvSPNM2_xSew-dZ~xvN@&vJ4L0PV`GCn&f|hFA0hQ1T&)CsC)Kw2E#7cAlw(o7uX*#+lorb$RVKJ*dU*}KW z(__d@F=x*O{rfg_L{{Mk;thBqJzZ~)m@E^;|7tO4p|&%%-mWNZXskvk#u41^-EubJ zqqb_Vy!U2MNaTan?G9pJ)S;F}*!(>^XzSdGqWgL$CL?x;>P`aN<=A-)it02}xALRl zCe3-FnK>h5Y7%x8Xa^aGUop3*j%EX2k9M|)po#GF_pxp~Be58^h1zP>Y{%tyirIKl zo>*;OUoB4eleDispT3z3f zCE(fgM`;nh1Nl5Y232pkojH7lBOjCoqu{-jSfz}nPD1cKY19S1SxiS_#fGc$j-+ws$w0#qNMdiFPnJWULaspIQlJD=Tdx zj)(`@A3DJR{NbnP1^gUm|3+^s$FR~52@v-g3=_1unV+lw)AOY~oyEZSc=KiT^>Osm z{*>omB3Gv>oVR%a+pTwTzzNc-6>zz7mOqu?Z`Nt3q#-Wq^jrGJ9AXJ!{0C!6fLzTm>avdT7_IAix!jQfgSaOVOC>`A;q|3~8g(R7Yc zmHlrU&-P?8B>ul<9IxUs;$pj9>hj%tp}xz$EGA@rZmp$Yg2wQdF>8BI34;^xiPMy<8lNL{yBUvo0e|xSmM!4!r__vGJJI&KX zqXCB-dIK|egbl<49k((rudd22o+S4~g_hstd@W{8Ov021r<0d69;%$OZ4dUbd&gxK z&#y0`reLTaVA7|Pw@53qZP2ZU_M!Qc=nCl=SAC)$kf)0q82Bi(je%(>n20+gBiSyH z6FHUjCQMysT@F5JRn7^sd+>D=S7rgcr^BxDMfXPCB|wP1DDihU^%MJ5+=q*lFMTsJ zn0B@j#QT@>qs5Bq)3Qg9-T1ic_BwyN@8;cHQ^Yb&ugYX!S@am-$^PV2 z(!Ws6dwO8}EVOt6H6?sQY~;Hw{p-4zY-e@zou|YBLt3~-8Mnjd<}*yiYE@c9pjb#6 z^a_ULNT>g4dCLSRd2aNbFKQ{%Qx!q%f>k`Ve4|eN^hQ^>o`_IISlM0X$JsX!Yk)gI z`4e0Ggs(yid`0;Q+sIE4IHD}96<~_lgC(f{ee6r;@RjSgoY`2bsuyK=h+)`BVmo6- z=Ms`w>t}xsS~K!mnzOI={Lux{VUj4WOh%2tp+AH~s1cYFh%3eyDm#rmE!-iYGvw6} zcmnriPmOnR>vaQVHIUfaF z1=Jms-d{L{psX^w(UgMFs&K%jyAto6hH{2cO11O&q~!qk?g&HWQ%nM%3lx9dWLUfj z@d8gg(~mJ1U0mquR^#^fey}u6%|9UyS&(q&;Gkp^QX#9o?e5)c~l|Rfi94fR4X~Y{H z02&!Xb;B8LEmnEw_Hl;Gm(?RN*m_SQl5AA^Uyv{ZjAJ1+X*tMn5V95I=|UY_6|L{f zN+ai&cXqvV(ZnT=LZs$Egsc#$nGorm)6SPmBvc;r5ZJF7Y9?PJ6sXk_FGsVhP@MKs zN2t@xQOZfun@UR0@c4Q^S;UD;L0PJqxpW0bNd?DXp7p#->9(-i4$5OSw74irQKGZ& z=17|0@t#Yk3gK*YV5L|w)%1*WUv`PJCGeMM!kDLGm5+J+AuW~@V^B{>CBy*x?;PGV zkgtJw*VV&&HwBjlpk_rGowir>+B!)HX}?m^{I`T9vs-`>P20}GJQwsrZeQgW42Ajd z1-BLHN?ejuLP6l)zQnn8jpn!+fPCW(e|eh%6YdM7Pijae%>nf)i~3JoyH`K>a;gV_ zR{%#=K5@`CaPqQZpJ++kfj;57!1WcZq{XqrEwp&QoMm_Ty`b?0-=)O7j{o-#;2-b3 z=Jx-1*^I<<|Ld^my&Ioz%9Bkw*0cp-phdHyZ3<$MN60}YJ|`oeNJ$cg7OR&XOkS`H zEiR_IokMY4Cs*|KKAyFNATx34LMmbdiyxClW8LgykhT*U$@X?|tww6YoOJg7-7@(` zCND8jUu0m;MOd(OLwN-S;)__s)f>Cq=OVD7tmQqKHkko$J-&k=2J~5eL{T*{UF%HU z`Gx}Z7(N<%_9U@5tqh}njke4g;&X;r&SqIA} z5253g^~w2KUC3W|C`!?K`$C>hBSKxs$JG1m5S-&=pih;oqwwM9P&`&Ci7ca}P$;k< zgkZeUckRP0(JfSo=*KA5q7^<#fdkmgsnh4wp1xdsmhF z_t)gM;yQha^x-%NR4y+t+ zM{h~zNLLDJtx!$!Oe-_k2ff`H`@P*Qed~F> zUJ3+uR*S$YAjq-$Sd;@BzP-<#>%O(XbbLr7cJ2vg6rnm!X=jj-8S(fS+}{uRGSqzm zSQYS_kFdizzu%n>05L^d8z4U&7M1BKw|UFZqGd7rMA8C>?{+T43JPC7e=_KHf%XxV z&AQ0oODnV*_3!BeHr()J{t)V)_kPCH0+GOvGb%>?ziimzs4BDrPHT2d4-=kpZo`IC zF^l*j(f}kIg_1^&pcm7$l1OZQY9xL;Ss2Tc z3K(Bvmh^Ol-hhY6^=TWR(gQ^6x-@i*5-9kxq=*M*?fF9ZOcVi$b{^`BW+^GfyV-clKAbwFU0{Q@bX6NLJYqK zQYTc>EusU>giByQ?RwsuTTk}d5(<`*;AZFNH1s}Y_p)azu>)~QABUHhmy2Vpy}(fG z$@pz4n+|L7#Y1G|N-8U?_eHRGtoH%byQ!G+56POzzO`vwFPj>%nsIZ`b=?;7bqBAv zPbKi0>UHtk+x?>WO8C&&4_0%IToVlkOU98pxp17nFTEwt*3roOK^co@L+=do#8Mza=4U|4+136 zoWIKcLvg{D943tWB)qbe`4+k*ikEACm=MX0Dq1u1kEDK%tCakYJl4Fu&0_+1y9^I!N(xU`?rmX zJsBfQj~6AJVlG4)Ije#&3;v|8Nmm#pN8aXAL92fT)38=*cXbuwhMlZ=>I;&Y)?{?u53GET9S~>2q;p*Bg+-}ow{4{85XC~W zz4_)GnMF)Ue`n_GXzZ|?()+9t%JkNxP*PuF{@9~LYmG)qwcCN)$O$!8-H zFZ%(#&xQ*LoF5r^K=HV!U%yFkgWqO6i^g$Uk7Oh`NsWFywV1hDfH_lvC`1^zZmNiz*CY$Jkow%9 zlWHG|c2ikmw$FbCsVe&s;+7yZ<>KuPsNo~t-k<@p z4xqp-kw?OGu_l}9UpxM?Y7+}6+Xx~}#4_$NqVeah!VHqrrPkZFBnl2br=~H-X|+s? z;H!B0d7~duGblMU+;vImaswUSFlYV?@uaa(B40GcYJzh@Ym!1C9db?XqoP(j-G7lR zh3Tk-^lI(gRaw-Z{6O=WQTObGs6go;Z|^mYE?(%VEiK(BzA!K6izu_p{&^0O4|<17 zCg&ESAs0T+la7Apr_EjV#Ag!&fCy#@ONLK|8}=q?w~i!rGu*{Wem3Nk%r57L`0Rtr zaR1IHDYA|7gORAMhvD6WOHk|zn zPzeKEW&dK^tYj$=voyF)Cg0CalkepeS1F`vMN=!2>m#!8t(4ImeU+y}+HJOi&%D(w z;Z9>8RwLHDlxq)9L2;~j&`TFhNi#poex~1Wctuco}!7K^;C#*SUAD{Oi zc@ctAHAT9(R%)K2R(i$B=ZaI^Htx$3hqvM}qIHVWwb|1ti$#c#YOE0(H99gsr{{Kim(zOMD2OM4>c7%cCFbrK>fn{}X7|O|AcrMFp0!C0aQkjSShkwd z(z?Cw*MGpV;V|Sr(W<;p6dpaDRILpVcg&J5K{?0GBNc5t!vj?Y_Q_1alDk(53qHkQl&<_E;$W?b=DJe5OVe`dWu$Ftfv~qhE zdEM#a{L~T~vg(JPy_y4$)Nhv>c6;W>%$lVJ&MwNj$>H_>{0ZJ)2~d{>gNFkGtLtd* z0}iLd{vrGysn{l+KRGTSX0l(o$~+f_lBujQ2;B7wk^ z6Q1s+lDPA8R6B!<-wfXP_6<8RNgj(sSZ3_^fo*M}B{TyBro(N`Z-bq~?Y!%{y|!<2 zAZ4Qf)`U+osPlgqN|_GUjJkc(X(vQe|6dCLx}9Z>XEp9|SF#f%jh7*+y@NiNP%-o0 zhsZr3fH`=?``GEV-h5tczXsBMkwHcmd*~vMTcf}Tt*Fcv-#ji}hKiVEb6|U$BJhUy z12eD7KimS6*B(%8o;=P4-POCi+!F`Av$kH{J|HvTFsm5@F+?XP#OlYfR7oC_n8ER0BRTAHD+r7dcyF=3Q zfSNQcyJGhWUxbjyN+w0X`>ABz;k@l%(C5TMBxMlB%zC*6bJPDC!Q2HY%=Tbj=iL#tB-kr~=%5s+^;k3MC~g zdj+D8QcH>*e!C+q8s+Jb5H8sT$+fHDbO?oH9YACON`9tB@V?WAbB{-Oq7)2_EKb*^ zy1es*X`E}#NaR{-F8#yEz7((iIcYsv5B*`Uzf#~<93)mb%!^fEm?KpZIFaob_ja-{ivt4$PO3kibr;7I5`7=5X5LtFCAxk|Q9>Bsc_>z4aRp!9hPyjUT{illMb#tYWcsA1;Yf+<`TgOW@&aF#V; zQ%C_v^KgKUeIpCwA=z4~V?nEfKysKZlcEAggSOldF}Q zGQyp$S$k&#)LoIYlKq1Mb!hANQMyo;!V)A4ghhT9mHG>` zpl`EGsK`0)$f@lyD@G~_kqa)+Zj(pea`b?^B(BYoJy(f6^9u#vaMxM^6Qicq-F6pE zuCXj;B^s8)6ii7d_j*@-aO}qzvo)P-_@PCT-VGLr>bfTcwCV^40kKXzOw&;gFt8>s})zv_&E-K z3>AHa&dDP!u3`A63)~UlU3TD23ACoFS~ym_x;EZ}E)t~vMk8PBZBFbb-TlFhsBe?? zwt70Xg?b@cd-Rx^HH~u3D7N*H#ZTiuOpvR#EzO~H_gRy$W%_humK+mSy?lYsHPQw^4#)A*IrG# z#Gx!+T=W9oM$Zd|!ovo?`g_7lr~pU;sjzu zs44Ax(+w7}mYL08{kAd!ihy9E$tm=?=lhy3L6hrh8GFjLdIe+TIO4`MzdkaDZZ2Ot z`yyZ~rV3hJ<8Nacwpebo6}qiXwb@x?ib*1vm+Pv?A#eq=o=n&V0Z&>D1^{UW!jpZh zMNiP{{I`*f4>`ff2i<0x|2qMc%nlNc=H#kZw6(M>GsbA_vtm$RxVC{#p*90c)bGp# z9Q2W2R#CEX|{7E zJz?%ucss9O3XJ&jyh->LpDn)B&NZ_sL@u!_{^f;-#p4)C%eSHZ!?(Z?Thup^&1>2s zzA?p~X=4FeM=4;c3Y5!-$fVF&V;~om^$NNX$)ws1G*uVn0P(3v9{&6mC zn1?6v{S8}8#VBdDF9+gmCVa$OzlUx*oW0SA*KF?=lTtznzIvSr{ruNJ5(%6Mm95(6 z+ZO$}BSC?NOWr?;E%yF!8^XkRO!G|Qr)gp&i)EE2*+(~3u{k3ko5HMUcjd;pak)$w zI*JgUo5#7JNUIb4a(iHrNo9u%6?s-pt5e>E-#Y`6h?(@B5oty>_nSl1C%g3qp+BvXU{KQB;AulvMR)anpwy+u^EY$MsZo$(-X?Wh;FL3TUCRoNu}0 z6alioE?2Ear$q$BIDd5dthnlGRjk5E&kQ^3z{-`N^YwgeWjmmwBY<)4P$9OV&|s<6 z&-`5b|K@9W3B8kp{I+0pX};dcNy+8p>Jtx{;S%)RL%pxGBU z^wnzrhj+f(tM?Dz3c_75nPz=|o%&dNmBlRBrH1sX)?OX;6v$mCjEDbb?Q`)pn`bm; zB4%8_)3ThFcDiY(z4y)WbtCBBk1iI=mQ}{ko^H4jsB(eJ_~VgAj-EX?p|Q6;((Pb! zdu^NI*RSvQdXpicw$MWcTMdIEv$@Qa4XBF>g4&sjs-p#V*-7GlIgPG$pY?2^+63{_ z8#Nzd!-BP~mLlFIBW6|^L3*{*Uf?>?X8HQUPh&SdpPCx`1=SSz=!ifv^ztN5wO%2d z$(p3&If$|+H2lR$cMgK@WI;JNTjX-Ny9GtN9>8Z0 zo88?8d3pAwag^YATYVr~0iDIzqFuy0@$K+sbKpnMEsfpuQSHF@B`|Co$tsX(4)oVd zQ)<`?+UHHXa%b(CanU5MBcC1Ij#}kY02qB$vJGMMgm36VjB}<1Qf488VohvJn>0#; zvmQc(6grGKhJ%+QdgJ+*X*6MvVo9F@y8ppD6l@K;oLR&W_z&1pvJB)?_@2gR|9(0O z#w^`Z%53n0IXa+jz>cOvxQ5V7)Ku@c_d!tpscuh@))eIn<*_ayANpR9D4qdZ)u5f# z_JZc|8$VQSzU8(eV$swfG^5|sZ2AEDk1u=wJd>&uQqHA0ekEI89J}#(RWv)8%^B5% zhNi3-8>s7Cu!@2GPX(g*S5epR8@o-hF`i=bIc6N0+unge2R$uKU^~kK_Y;oAb^iI$ z41W~aw_q2eTI~vk^5V07>)_)hSmC}lYFpQn3N8erzo2KVw{em*V{Qj;!s8%@W%9WomzGcZLXm+G@?iJ1lHz#8T?2DjD55P|fiQGgo&5qwnF- zHaeR~dG0nr3>q^EL=?%Vd0tRSntq~~&OA<`r9YciApHKQh{y;+DKgkA2n~ZP@$B5W;N$r&*`e{GWEkPunq67G?Zd;Ui32xJcXx}iCZ?T|2c!BQ8?XBpZ>bCDJs$x#KZ2fuM9#-LIYr#y zgjZJwTssSt-7~hY_r_drejlIvHv6lLwfSGHXA}H{Y>sg8hQn9Yf(^V*CEMQ5=C|@| zE@+W)*A5jA3O-q?-+hj+7F@kIs&C)T`$GBZ-t3vhT_!2djT>0H&a+)n0_bTP_39f8 z)INg@Sm;%yP|7HN(LXTqphUmuL*LV%huuxcAdA^M@WArCp|TiuA#4+izN#t|R#i>M z2kPuYLD*)burx1QvHZHhNOEh{|5X!?`b^-CN>u)XXc#I7I(vda$OJuf#K-PiDWmnT z=j|73G`)hdX7>NIjc5v4%A?T$E>%BYniEX7%bk(e;Y=E#5bFeaYsro281GtZ zigtgvzn5V3>I4S8<%+7tDo@%$W?jI;!!u2}fsE>}9yZ_3w_Q6s5Vn-(xKwgZ-gH{{ z0Q(G3Cgw_W&ybOsB(uwJB-GMXQiO^Zn`I79T!GsDk@axkyVC6>(&baG4Sn}i15Nqs7T zWj^HYRSA{cZ<5rcx_nKJ0wRboW@8P%!*mobYjc~ug_W&a_wQwns<>(Lo1H=EV?%^v zdnsYMFo?DGs8W+j>3<#J^K3(o5yG5N8z#H__92{#^|W0A$!zPsT~nrq-vAYU5! zt5@X)6HCt%kKgnR1PtGr@X5wN2)hM(ZFF{=7{hxnu=qM|O!db>{v2}WlI~=2c~~?A z-lt?gB?E=!|wMp zE~N`L@Gan2|9EdS7(*vYG@LjWeFF13P!4A4zTLa}Jl}%^$%LS-z-xqHNY9SmgP%U; zP`*S&P`3`>(0{NRqY(%63U69EdHi(F^-a5I;b~o4gjlyoQlGuRS@8H;jkAAa&V;L| zsYG%cAb*EOA-S6qnKDA9NSIGab!Ewlx>7b=C;tb3CQDeLZ%$XfCMwJQ(5}_jfqz|7j~NGZ_Bm?$vFNG4#)ZnF3RmeYA=4cLI&@KPIKZG_=+kIx}>do*WQM z;MbW?|KVjW8I2z;ohJ)h2B`^(@RCb^d@Tsw`*R()FDdiWr;@seFGQPAx)bfrHj%$A z1A8+JqhclEG{K-x)k@Jt+x2U8<}|5(3*rH>mTq`f?=0aO_j^^7gqAi28h0`^Vv`W^ z(v0;iDXLkVxR#dp!M+lpdxZQSn}p)z0C1dZ_Ogz_=d?k>xGS$xZaE7JX0V@s5#0&q zI@}n$^Nnv}N-m=ZT<#EK&>(+np(@!&`iOe|mkYzU1NbQ=NBf(}h`Q>bWK`K{z3;YY zU>h%HL-Ge2#l#wpl`#Z|0XwfCYo@!{xX+q8)G$*2=-~rEUOYG1 z9#`QF&&&au!GN|U#R%J!2BX=5@S8~dc(8*&F2JcZmu0hHJk|@U?6^GQyKJZDx%pq~wEu&w`HKt#<8fzq_b@@P^PTs%7f5yZ zA2dYMxQax>Eu3(RHgv@~90UuzwJsx3sSoDXS>LyHrd|`Cn6eznz^V*eIZ;?4RPqQn zC(yCzE4C{DXJF8T&HYYilxZ}EBcaS`TH#4`R?e$LH-c-TfLor+uGYEhC-fra(NIa} z+WfpGCm`y~&p9PmXz6wmJU}MjMo}>gKmu4AOeV}(5&rn8bm0CCag1rT7!*<3R7AK? zalWrA{uDuDuES}I_DJo_3*@m)&VMbiNuBy;T2~{W(o3n#<6sp$9%sYWD(op4qUFe= zN6@Nk7^*5m&eLUAybDR^)Us}n++&AAex~>&l>8_-IH%waxBTNv_LJ6AvG|92Cr2b2 zrS5H3ZF}CuCqR{t4ZGdCbb@o7wVYyUSbQcyMnG!se822qym1(l=`o^6iurF(zuR~E zpTE>-uzRoGyjJ+igyr5VVLAt!)k~bqHZFTVIiK5|x6Gf6m zGM=^y_&rthS;ufXDm|7TbUZ{kIZSHUL_kj&xvxIQrAn&fXowgdw9FLvD_Gs08Q7da zqrgMAI4Wjdnc%lTr-Z>AboT?>G?N2iK647UbGw6cf93XsNrJyi!cuZPNy%VyDzlV+^qOeaEP&0!|v}J=h^WrFQ zU_ZJxKxLFzg1XLZD$c_TCwC1SH7+Oj%%>CgNvN*3zQVJq@^hU3GS7q{Y*?G20C2EDZhR(}Ak8ptL~Te!;QgKyXxZTdea>_BfP ztmbM_9TDexcCE4RQR%~v*y7#Pxnd&BgB_D^5poDJ+?p!_50O-Q(Wx-4^HIg5_^}~9 zzyAum6Wd_lV(gN0CEv-+#6h@O~99oIL z*rb5fLYR)k*s4C!%QyCF@OXfr(rxVJ!r9s>voP9Qdmr^Iml=iD!h)!>>q zxQ-!{`Qh5`_O?0-7bwdS%TVM5p`&7^rG^4^sYWBJF-}d(y^wFHU^?>*1vAjb)@!F* zVav?ah?fi15}SD5|r z^8FDL66CnL#eZl&23S=oq`Ms*p!MN>J_H~H1tI85HExPw)#;-SQJ+OZ^yirhbAGwkx2?7XB)zl-YX{@tf=4+OqS1OU+Ir=&^h>$mLMZ^aWe-o# zdnevUndsrio)zf*>5hmu;ijfH5V+~sfpz-tNaKoOF5sQPOuTr1d1>JBah}`lf;|O$ zu!4^xPmk%*LMDQSa#&*?KBM2t-kXcW%>d+}uHs6|V*jeLmmsAJulgJhU98ks=$lPC z30u`9m2rTN#-U@cs(3`&#f*@D?1(G>yYQI#-()^2{a(OrYm=3Jv*kFyowHs?OKJx- zyK6poOu@{wKr;S^$@Is;Pv!Eu4OvZ3^x;_cx)8qcK~KsCN)Kd1_vzY|1=RVGV{dE z+-oxY#(BYlKtc9!=TI#@)eVl45E0W*$_n``rg_m(>>wxJpdaelYAY+UZO{Q;aAIjS zV5y`{u?9@I)8K--%I&Y(IJQ`_m@s&Mt{v=sXlUFIYGG(yXZ=NJ&+wD`4GRBS)(=jCy0t6&21bCYM?4tLs!fAVoQyr zjSh%ry;|bpsxZ%0i*vTDus}JJ8tIgKwp``pQu;>1bV`zAYH?lM4&doO=8{fvNJ>Z4 zmL{kPO`)cs3|qGv%a>vP!dAp%bM<5I)|7t(y@UIrt&k zYj_X20&h(QLnOP%E<-i?!pEPh0cSWJTBr|fEJ#4Pb--zcNsFku5XE1p53CL<(%5sw z=)={5zN%HB{J$0ea1wExF!z-7G0~N#a{;=3c3Uts`4T^rGHIy71;0&q3$c+ z^*T>yL{EEqbOFHI=knvf?lDYLB%#{Hwb`nqQRbxY%2Dt~e|pMJ{6r)WE;(JB&`H*x zZ_E)`1BZ(R1-t8#oq5gA?II#clKdti%-{gsfI*Kt!NANPam47B{o22;=V1v!eo%{8 zy!}gqz}o~3em>HUF+_lYb<;$mKzjwMfP9?>6*8E6F$5a?a|Qp!bG7YTJnh`XL(dHv zQ|Drkj8~`%U!EKsbE%X-rY@;$sa(;gN$J{nf>s6H8w$=r!WXgC>lzpPxj(rmggLNx zoVC~)W0nY$>BZ!n;E?d{gEKc}t8`t_a;9&5VXbh$s9||?HBu9)-D&-|l?Hi?LLc|> zXqkt$jKfLr6+v?<^K=leA6!K>F_-I5=pZH~tp&>oKCnaI5XY8Q&U3G}+oxSrc6K7H zdg6y9r=c00fZMYQ{k?!S$MxToT4E%eJ)*qMKs?I|h-Q$Y-pD~%mJ!xp$Rrp zbdo0t3O5?+g%-i*WhqHsQ~R3Mh;4T=g552s1_cQsxc&X_>PVx94RkM4Yrb!PAy%)i z3;Wt8t4olU*b}HUaXdZUdPWW#x0*r1OK)|CL>NS^=%Z^T{9#E3}fby3C34VR;e6Dd5$_?m}f1sDm`&M7xYh}p4*4%B* zs`gTG_3AcN478Ly*?{SryhMs&HD#Csb4Ufw~8xI1$cMFzu5>|L803S?`J}p z$(KGIIGqH*dmd-TZ=T>IGl2y$ZH*oMI$F#1^k{1vqTLudt!0S=<-KvyT?Wlf2Dn19 z%3NA&iCKSL3IRdrGHBU?xk|ZZA%pHx5iJ1t9PCH7_WRW$;Y7u7$QJ~THlT>6EU}g1 z({{XKGoELODYpN<7kO2WNgOlZOgz^ZoW_u(if=9WNtBII!xceg2PS(04seUPeoAgi z162B60nCdh+*MV}{CPz>bKHr(IylHJ9;gc~heOnQcj2soq`XcB!{Il0hc^Q8t4Z`- zk#h8?0UhYo!k*cZQP?JMjwcrU`g>icEi^oYh2J0`B0RcYzq8ws&`VRD)37P@)4?)F zJ05X|9o$d>XKtYAfE|u`r_d0{4+-#Bn2Z+lt)zG{i3`0!9o~s%X^S)es7q_{D9y}g zYT(T-@O+?ld5|PJ({V20F8t|=?Z+Wyl0y|Q_u9*Z1O%M}ywNLfV!9phVF75Cs>^^ zL^{Lg<$-3xvpVqpPCA(@n0S!?u{QbQ<1GF6AtvdTW(^H`{Ov>U~JACgLdLD<2!4@2-?xz*S zjN*5aGTbD?QrN#G8t}C-++sOCA=iFM`q!cWzf5e7Vjv|Kl9Yr7#SgX|X`wq)-vVW2 zE`cto;YzuW7mz@t%z8?5TZe}TE>h$3fxU@Ebe^6R$pyg^@nY0}TEpp4Yb#%OYTIfk z9<_E0yd@B46B-r?k_3LId8N0_a(e_sfCtQ~Q9FNq;~_!-OKfhNV%u&;E>^HJr z5wKb3YZs=gu#DYU{zNanhv!hUW~tL=JVr z6dkr}l~7A-=)wNyi*+)Qwcq_0Yq6`CVPu5~tK@<`R~ZswQI)=>is3*)(lS$=M=H-6 zALY=Gb>!5Y#}Z_O{x!dAG?jW=&_T7$vExHBZmP~|X##^eX`f)WBy#T>8^G{XZ1^@m zlPlfm8(jXVX>CjyZByW=r$R9=+`;8J>UV{VK7*y5`LPbM&LD5BSGa%_{;7>Mma?J! zOU2keP|I*VfdYi_y#K=#uQg9mOsIePoSF+KL+lg#jH}T8rx_s278!i&V}4rbfBd2< z$pJeb62e7Xv`Yp4+hNa~8Ox&-+Qr1~vAPK8sAsU2WA;0Gk%Ejf28I0b5hWCkIIN2r zkX<}o2@sUKz|{*-wlW@T+ete9sUsL*hBPfmBhKNi(y zp7`*lwIfr)jvTDh$3#{+m3E}$<<17P44Cy8rI){zs?LYK%cZ~+&mhSDr^JL(BR1v8 zJl}u^_nG%-eg21%{3WPUZ8!jjDjLV4#j@zwz98Qk67o z{C`ApWIUD~aQq2y1%WC*%A8WpLpJMtwmiEEMgw;diOnkcfPM?XsDz@qwx1I`JxZw1 zF3vTs-}5v?;~HX{gZYoeEZKZdCaUP?9Xzz#(JT!QF^b>8WIoYn`4r%$va0p$&tzLz zB?p~AK6MP6PZZRSv5huKu;TK0ZA-i~^9K3)aS`+aDV;r@0-~eWfe9^h^Pl319qD85 z$pgtsis^j&_?O^4KePnHWOTK}seWfUN;UxY(Tg~FKw=blbkiFLc&r0AA{(t_9hue! ze?s}@9W+!9ISBN(o-6^>v`cXHH?ejsrL5VuF?pqojqLMJSWy1Bj*u;Srls0|rzff? z=N72-}D>j=LF`^ zyREB|Cgvdx{c~mIRQRW)4M&I4Lu zd@dIB&pq#jGWmln_B#(Ysw5cX#RPF!jX>ou=faA4fP4Em=yZ=VxXDxkU?he_#ILAq!N~zFd@Ys$cdprmx!a8E|s9 z`a087XsN9$0vuA1QLFt<4pqW|p_+x`Io;Q`>yHd|N;h2n9@|6br>Npbq*XU03Ek2l zsDdKaPo)JA7MVFz6!e_=(yZs+!i5oTwAxZ^v_^ZfdrX1p8DBu+hcm=I;A59fb=wkT znq*qaN%z_T>nYOO?ZnFWkCVsSXD>f=0Y2Ybx&$)Oa}13Pg6dY8rY+xHFQmY)YWX){ ze8tE}X$2hV@Ao&3MKeGZdNQYSgpED+fLK$okzdMkS&Px+-rW_;lr(R+r2WJDxOX@ zz#6BiBoNfz&RV!&CmlBVI0GR#QcNe4f~|85_lURo zFg0^>2LbWY{ewKrO~VStGWk2Erig3AB$sMb>P*dPM@s;Nk}Z)nm=3>IjY+D7TAo4p z$f`M7ol&k9LIHTu?l5^I3BA0JI%ala9C~&yuWvRlt=Y)cGI8rvRb3sDjZ5JE7x-Ad zR81IF%A}UjWryH}4Z*JaTd27<;U z0r3QcWKCmQkI4}vEU~0|r(>)?wXkTfVT-U@w+_l2IVJPv7@&oF z?|D8sa#`!q)CFy@yB6YvkoU#&k`7$$4mbAnAep21PHMObY{+I&i3OdN zlRQhWeV=l|suZ=9xvC%bK)E})(uC@P4Uu+R$#nD zROi;OiW1M#?M$1gz)3{^C9i-V9-{dgQ`tYxs24)a#JE%mKR#*`hH4(qNezTg9_=0L z-E$-I_}8t-4w2~@?<9J+7F)F;Vp}kBjQ6+RrJV1K;L_CKl(_M;Z9Bc+tP(XLipDlH zF!s2}xSF`!(D)rA-}bcHPN1J#*8uowDWb;GE};LEu4MdEO6%@DsOj-7Z-4yB&Hxs@ z`bO90jr)5;7KL~p8$Oe%hsQ#)2b47<9)%*ORHLP>)5R(9UjRRb1?ACj-@OD_=!O6R zXiTiERLV@_?1>s&ekc)yY|1kT9jW@Q2C$QSgi4D3cF`HF+*EB`yCVws1j*;Gw`+IM z!Q1a5(V=}`cA{X!Z^U}ruh*yi_nB!|L3b)2-48w1kM$pSg5$@dkZJ0|6hALDNL2X6 zUJe>XcWE20Q+BBuq@+&nr>IPT0Yfej^cxe1Ug!g|2M~AK_}#W1Rg<7@mPJOG&{68RJe$J3&`Fzwm!Fon=E*Z5M@y zZXD?jB?jpZX#}Jj1f*+dknWTmKuPHwk?!v9?k?#T3CZ_7AKqWUaOTW?@4fcg>yn3a zq``7cDrY~*Orm#cVkoKRs+U_p?NyVdrT<=}`o+_!3VDpJBTLhM7i5j^gZ(?CxXw(b zHstOTV~$pm(s~yWm^*X0*%^ex!um?QsKzcqa67WElu-`GGsY3q4-S?*7L8b0GiY|j z&`SXpSmzZRYb}(i7Ml*Z9pD1;X0%S#Jew?mPNCexZN`bm>`j70f)yxGZsHvKX_Idj zq_lEBnP_9m#uV6nH;->E`2)7u^~D~093M{{pY|Tu+ku_SH%u7cEEfFZD%^Y(xS%-E zYO^2Sp8Wk|x#$o3;#{HK7>n+X55p9O;a1Lj(xz$wG1%XU+_8@4em^3Q&WyTW7@X=P zSK~ciT3}FT^th8Ngdp5MwSVOi{1CEM++3EXp*A)Dd)zWYbnqZ;7xyIedgY~iE5gG) zbS4Rx6XOk39%N&igtH71Kea+kB3t1nHx%o#nrg>*V-c(FMSPZO67();da(HBOzRMI zTx|jv63P}A#%*@s>^@9cF2^;%fzPqJ(cm8eC&a+~5Xh5R;k-P-tMhc`hihd{NBM($iSY<`t8{Cr{X zkNgj17mL2~LJrFojQ4tF+Pl{}g>DbP!y;Zfb)9nX0Hbdm&68QE(Zs$z_D!H0tj1Po z6BRNc&rlU77ry930>0h@_myweo$Kr6ZsXRNwPYhdVgVdXcAEcw`DnH%9SHNfdHIvv z(0Y9w@K@Hu^2!plk#<>&ajpUlHt;X2$R!n0`16(w)`1j#O|`^8nNf$gja$5ey7*o-{4)I z!ZOKA&*&Bo<9FuW0=j*D*BgEuZSsar(o-~yYc|B4H`q02PWLtON#(IKuTWR)h$W1N zG)z_u&v_&%7(ecy%b9-XQ%~Lu&BG>JTwm?(+3-Z~CkY(`J$OX{>BFVvWsU98GK&uR zGuHVmZ7bN{EKnj41hzmm7!B>2MAk;^`r%fX7)k7vO(FHp##* zgVTn(HezITcsaDVbO?~%HjlKt9J4=9H{Eu;Jf#@S6_U?fvJT}O@AObVSNgB$ZwQH2 zwm;9+6skmqpZRQpP_)zD9Hhvk3s1-~V8#Dr3d=VkIjN~>@-8>)k#f{jWmAfk^k$KmsfNw|mQ#q3 z3FI01CUE(V2pzdRHg#WcS{TJc7n&-kSa_MCxog^~In6c+Jpb|0Ip!rMt@(?d*j-tU z!n4BbNA90>X;QdjDT#XxkMoAb2)_lVS&+h{YFAE+6H!5e)lG^sFLmL5T%s;-O<)F= zAIQRJe`(Ov-lq5`2)ce{o#u^gR?l2`TfsgYZJyZoZ~4@{s=dlEQq+s$FAv#&i`t`D zR+XE)mC^4G)s_8SZC$Ve*LH!|^y4-%jq>|U=fX~C-Fw9%=AwlqEe_>`e9$k@K6bF} zh^c|N;p~Wq{0d99I;Npe;g2wmU@WCyU@x{;l!Cr%WwNoK8=gBC&N~ER`d@fhD%zL8 z!ky<&XVeF`Pk(&+g;ITOOLhwoqf%D8q&>H((;_ht|ER9$@X6n^m`tH%|Rdc~Fpi>#*G;0!@&plVeZY9!dUz>L3`)O%MEna#T?$pS{Gc?u1+sdBSewa+DTub3UPPp)%k8-7S~5}T4CYmxu~l( z?Ihv-Fij8q!LIDewQ?>iv4-Fr&fBcjxir6TH=5^15ha~#GA(OeP@XVOK7y5%r{9yL zI^?1*H`&J(eoqf?{+9Xs>6H;RXR?KYNn*ml|3SD40?L|m=lDGQ2vI&L-_nB-)OC${ zC=fuX3P`H*#n^h}ND{hQrfS8lijQIHM~Xxd_T#p?)(cJ!(mf}!8abb!F&v zjGHQ$Ld2WE*4FmpOl{tGq^qvcR~p4OSo@CVnV6-nx>K;E3R?1`TCrM}IU;}x`pL*h z*85VJg}C>A9yl^Bry!%>DUUe!{-9+GqBN7bj5Ny~Ft@jh+Id+M71)ESWHMmR=>1N= z2Vc7`Q|c@vIhejnoW_uEijQA7tbF#?F4SS(B@5?XZYo^Ams7zAan<~t2LZc#C*8Fs z;sF|Uajc2}zwHZ<7%(Z+2XeL}H@&VRp|EqA6}3y7fb0jdULrfRL(1NHBr4y~b+&>oI(=NM+mT3(XT{jvS{k1w6o^ES4wj@Qn?(6@X4 z!d%8+W2w1`SgZf@!cP0NaKR5bm^>3FWen%1quiwvt?Os+7%Gr@s*c6`^<9o-%|*+6 zoay2F;WJ!9Vl7E{9iq|2=vv0li=lL+1 zA_(>zpq2-5WH?hvUtUXp7vWcmXK&k~JpcG#pvt};NN+(n>r0@h`&v~~HnHxPj+>6Q ziS4`|hUXpXr@}ui9S^(uZQ&i4byz;>6#@-zCQU3{N8CSol;rZadQE-D9Qa;igR1MA zVk}EAm=r$DFx`i+0hIwzTvc{-#2w>O7eU6DOG;{TPUOjxAzSN{i{xgu1@0?w1?Eme z$V%cBOSL-rtp{=-0x!X5C)f@XgccfZ@47diGwrk9xDZw4+f~Y$~tlMgs zNG1!b)Zcv5(8W5Y9{yrKIzB)GmMZaPFrFl!s7|Em>oIvUk$8zid2OVUzFS0gVVMZ-AB z`zFoF_Isa`G=@2s$>`?NfkiZ*AvBP~=Cz{C+qkzJjP8W!CeB;2-=s*zBQnE#S@y<7 z2@JGD-Cu5pv3%Aj;mQXWlTz8d3v#|9^CFxpC={Zf*DM%7Bl0+e4bB@ioq_62OAcT> z@6bm)5WV==Bwd&>CF8JjU6nqEOxxjZ)vh@>Vy13H0weS@}&-%f7IjSvuy;=8?< zDfV&@&Xpgu1vR%of)rsBq0`=dr+&D+w{P?nR(5?!wwer-Hinw9-w$aN_Q%;9-c9H4 zv#)+6!AJ%3%czY)=w%{6^0ub1BAYSz+JIK!0;WE2BZY!XOUt)=mH170sCKGc_Gyp@ za*@!O$(bj3@j^A&|I!ldt#wCYDatcJi5Eru7t_-8 z6ev47H4&uIp&FyTc0^$s?@JjJlbX~qBL-5EVF@HABbYn3WdL=qs4h4qkRamJin+dE^oPAra6hXpp!YBeXoMgcQo^e062 zxkno-S5Be@u_#Dn{*Ac(N^C3*X0X#OV48x^m#O&`qWHlmiN= z+1Gue&bf-aaOr|Xt~IGOs*~VrRC+~=uwb&2zivGzeM&I6ZWGeUY5rl)hfck z>Z#|5bq3s*`(}HF`WtFSXIdX=;lW_M+Qd+GhvicaRlTPg0cE47!9(ti#+}&rRR50S z0#;pxGKY<3&nt-@$W<(T$q`-4Dy$*E4s7&7>wO*LLUQuUT`ro6j8997zb_ZX+6N}W zFuXi@L67J`NxEpp*NvONNj{Jp5?<+dh?fVAa&L)=iNUcY(yy7g{PR5&4DHX6upv!M zx-Qj-@k3=zDjU+)_u8qpHhal}phdrPxz$B6|95A~o52Z@-&z~=vpjHKg4bGr*-onT zSJ~Vw@G#3xieJeilu2Oh1&dfwS7lO+0B zQ)=TmAAX%x1C+&>nVRC;ix~^+Sm&-n^&>`$mb3U6@1B?SVz6=h=|Z=^O&9NZp^+b# z16GTU$JwbhYr+D1eC}WK>T&*63>~bujGW~5qn zE6-ph5d~CBg!{6xr>aBw)| z7-y7JMV|`R?B80-&ieDWfj*@CRT(dp*YEF-IsrTURQF;5FRw)Ji#i@waNb_un{(-| zt*!9}V}de2e_<2KXl+4SU3e5gkTa0nUQIGPhpRWH4R_EMx}@0sjasB`+}}Bh z0@awy@^jK=3*o~x6VdT0K%Q2UF2QbQ$<eVjUXvlRlT%+BPL` zVt?Xo0%neIID%dbYE<|3DtQcQE$84gg>)Kin(}L z2%O{%_gKFnZ<~64UOhf;!IK|c-T&7oBagu#NHP+cNKfUtiBMkazxTZUOrGVla>ZwK z5lrlR20%@|6xShQyG(4=zYnERV`=Ls9l#}8SovPzwIUS*fj^cdtI-IN2rdC#H>hg5f z!S0LF9b%vz?BkMS043IB6ITS>RsY_L zKsvdb5}Ali_Fsk>W^T{r@269_jSCp z^9C)Lrjp2L?B|Sko~ z)=pl1@%WnS_PTMRq~$F7W2$#@(_NN}(T}ZCj6jEq=zQ6@?fbW~lTg0zg-il)P$^@< z6y`qF`)E(0zSD+{FpuZ%_m?B*UhG+Z$2FC1&iE%ka)l)J_x=>^tYre!+lO<^^OE~2pck#5k++?dv=-IQr4Q<4$sMIV*_qoD zUSsHSk#voOCidOpFlX?$vt$e-cR3CL3X9cFF$!6GJ;W<+}xGSiagW0$L|8eL}H+ zF_EiqA`n#Wq1&zj*H#l*nLSP1pd$Ib*zif_3F7SEiNj~A zerp@Y=XdLJc#M4ihF!o79NwqIWo~o6XrGA`EwNQV=2zPc-fdY^@*!C3%u(Au?(Xj6 znXNC+Yy9n7F;)PIE?^P8i*o3+C`GWnj29{e@it)gO6`CBTp`x1A$I<+A+yD4YukvT z{R~>$(eQ$#MzGc|-W&$a7YF4>j+UC$sbO-dD7CC1yn=i$=E0Sc5AGDgNf~c1fLQ$*k6K@pX7l2LY%E>EG00;CuD(h0u%CUjbPT!v08Em$3BL$cV&j86}FA@KJFI zmf?bA1Zxt4ulV8%M4RVBVu@<58Ha_`r)1X)Dvv}K=3$hEaW0aNuSk+||q zo}H9$I`x7vOpt&=j9OeB>yumXM>iPngs2(MuPl*G(RA%`#Xu6hIj<+;{QA#bUis6e zH_twa>gZ_Eno(nijdu@+HTI5wn_FA|8^8m3_-~cCDTKa|80?qFGyI2~_&LK=P+j}N z9OHdLr^3hE<2!xvq2{#jOUQAH&Re^NN}fu0!~9E8vNz&sKNr{9Lo27cFNr(QD_(LJ zc6b58eJHxqdE4#g`FT4z_0yHu01ufCedN&-&lYB^WWj{7Li_&lU#r*AT@Ge5M zPkCIklnT*+D<(CGw=v0MxnVzkuEG+K%tG$|j z@~2+@#EGQIf5hfHVcwqR&z~-sEI<~S@y}!8padB(4T;*WY-eSzh$i0Af5L*Q!vF= zmh^U8w#|^(gv1m`8*p*K51ks$s9$q1^Yf#$8qaW6=I5Rbij(y(7B*<>X8x}HShWxk z00$|9*ye%2*0GOr*GvKPJCW%cD=02)P7Knr{@{r!gGq< zg=_T)$|e>V-em^jA(t`0s%q6~ktN}*tFjHM$@5=^xCJvkCaD(Cf-G z4*zy_O4|JwH((}2AA(otC4r8r;0IKcAOZyi1`1sj@yunr#gQ;{10cJSW4wdhyjz4Ix|nY60<21xnc|_$=PWTG{m6=$j9kS{RL(^Tjb1?`8LD! za|Zp?aDWTLLX9_2*fa;SD><2e@HLlE=F9tZOJhnyWa3!*Cg zg4~|v3x=llEXSIaRC(Gmn;z^i(hq!ZtNU?a;;L%b6pwyY@4V&u+zDdc$C|`@7FLsj z!Da74N^I3uysSr@h{hS5Hak(b1-kxW5m%o4tz>Zm#9;XH%XLC zqQ7zXC|R%vYCeESSUD#dZ*_3vLj!x`ENP&lUtsC<*(X>%i9=4Yma_nJTs|F8U2ei3 zChi{h#co5?4{N-#0&b+J?^VCRQJ(Y$8Yue^a?;Gn#KDW3_X-_%(Wss4KyG}jivRC? zYCx3y&J8p!2X7rA3jbDRdTJs0{UlO}oMEpec@Q8!)bz;rRjl@-=9MF31XGC42)dC; zQe3W8UfIuB9QLl*^Vui%A?p`fFa!NQX`VFl8rMyL}Vxy5}JJp zI*t4s`>*iAnYu|x`EfG02fc?VmP#ZlX_t_M75L^C*Vd#d7)j30wfT(wQ=EAZ@aPNh zvZjaU&+Aew>78`x-TF)T?s$6Y+xW(77d%c5P^-uG%}xEvslc_Aq)Ft- znP;(-3&P=H)M%YED-;7W1h3}bX@}3qJFVoLv7edjq1!vuFSf$>2c(J&Z#l**o0~D& zkmt4ei#tf;1_rMvGPr*`NbvXHe+V0^KfV+&_*O!3Y>KnyLiQVKj*miL(%i!CJSR)p zBCHXU@icxuxym#%WNs?7R&L1kvyU`jK7>(4^tcZIt_Q#q>7pAS7`fZI5t{jYZ{}?3 zzV8c)UPg9|1?&gBtW~@mqP>_uRJ?4&W&2%pq4|Fi%50ZRt|q51BE?Rw4i3 zlj8|2tg)`(#np_jkvAn~sypQ|ehU2lTrX<^qYq9j{!o-;08a|iB$FpqwfVM7`cn-C zC8Lefpp&z!DzXlaWCM>-s3p=U;g2l7sX;r6oWFgf6 zKP{Ya*y%Gf%icw(N4Kzr;tzeFrqu;W6GlwCSkPdpRMV44Vx%dhNW77js&oo8zQGjWT*NdSo zhtM!!Z#4BR`+5J>dB-8+%dSSd*TyBNt*SkCs#pGbX*935W#gKyM{uLH+JJdP508id35%MN@h=2U;}1#wdQ?p^iMP@CP2yQAbJN2y^5{(O;M|=ms^l3K z@IDie#bI52dl5&ZDR2hHvq-BK{P>A+!vK&_n7%;G<=?1a5%j@G)DA!5W0B>}y63R& z&8fJej55;td(Vda;a?lQKY3m?+Xo2g-{3&x6@uY)vCh_Rg(pgPSY3~h*B?63r$ZGp zTiX)6`=*mNbTBfabWl_mG!fN|EC-otW#|XO0)?J6F%%mZYIE3`d3j-|5ts?A%Bm5} zv$oZe@~~zI+NgDUvRXCf$@+I&-n3wyXD6@F^Ffx*L;0es#BH9U%is4f;3~%K{PKp*bJ9OUqb7 zz`@U*TuP+-#))q{lsR>iwaWLeC*CA#(pTp}HhsFI2etyv+*{_J%Fkh~dkx*Ae`3Ih zmgtEOi{3fqM%jAt7OUqU)d&bG--qQv2B89P)Cl-fp?}F@WRUbsd>*DP&OOR@-c#kw zu!KyxW63dvqlyFVFPVON%67oNgqNNDv*u&`1nxo=6_qUEe<8YQMreUwXvK4<4sX8o zrZyGapo2nB`A8B5KSZkPrtH&AOhVB=$f=8f6bSESH$0e(Xi%D z&Nn}Q>MX#p=ql8=)e{c%a=NzfRX)yHD9_Y#*{uOwRaYVDlX5~NiH4QF=|6bMs3B>T z$!-q^h;uhajV_p9~Cw67fu+et+@? zbB0K6Zfl%usRL*j3*_q6Q+g=uQQS1ru9tV9^ahh%|5z|MLUo#HTHW0Rec<;Xsz(PZP|FL z)1JHw1WWkd=Y~H&Kw`7i*#-u>7I{p3EQfO=9k6}CobcbQ} z*UGFdabQ!VLVRELnEJh1u7PzY^FIG=V1I|k+5NT}VjRKerJbWmALL$AAA}I0v7bNL ztEp+slr$v|SU(XUYI=w2L#0#bH}_@pmRb8dtG{)@$jIXPkYURb!caB!Qe}pOIsc9o zOo75T;GZlC!0mSsiO)EA8*qNRP0#Ly;oXJ{=e(d{kD3 zD2M;BmyO<@zOceejrfNJ_9bW_#_xVFYLEgK(kZ3X;o+_k#YsoGv}}oFZ-jom{E58=UD*E{RS~BUn+3-wmWPER=rfyXcmj9kTMCdJE{i(g=i$ z_7(DO^yV`_?QcO!7KAk#`;pFuS7+synTx(rhr!s)Y%(R8gcjnV`}>HU!889=ia#-h z%7q%IBzmmT^}iDAPTEo{&L1X<7pj>oa98Z8+dFr|L_Y$(oNJ2#HY$>-~AbubHS1A4Zi3yVas9TLSxqKf!&#`)<{1#u_FI1LABkW zqYu@>N*EKzK@1*tHbf3u%M8?{qtBMU&$Kag`Xnvt6I)VJ@^Kn@$~EdguAI5);j%=a zwYe5kz&4{lB01WtO*85Tf%*pby>t&t?eeRimEEt?Kr~!B#?tC~r0VHpsW#3*+4`J~I_KX1NanE!6*NvAaG00i_!

!*14F^ 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 literal 0 HcmV?d00001 diff --git a/icons/famfamfam/arrow_inout.png b/icons/famfamfam/arrow_inout.png new file mode 100644 index 0000000000000000000000000000000000000000..1b763672ab45b357e12b5e80783d1eac19aa429c GIT binary patch literal 551 zcmV+?0@(eDP)(HWsOpaN*gR#GpYXhHKL|EB8l4*TSU_vTR+aX-(Oi?S;8XyR2It;Uw(aI)9^S|=&95eX@({k9USGy;sUSUzeJ^< zMds$`SXy48v$4bI@E9?)it=aq5A%!jd|dcIDK=`4J{pRP&HSggJxd`56RH!pk4D8J p8dUC|epvAzhprq*3?{^oguj5GN{z3E7kmH!002ovPDHLkV1kL#`6U1V literal 0 HcmV?d00001 diff --git a/icons/famfamfam/calculator.png b/icons/famfamfam/calculator.png new file mode 100644 index 0000000000000000000000000000000000000000..701a60a5a4d5673d0e3dd3fc8f316a2ebdd7fad9 GIT binary patch literal 543 zcmV+)0^t3LP)@VozFAzEvI&~0#LAwY>5FK39Rg@@bp>BeO zw$McyP2NlT?u|(Uk#_LH<=ljK?mhP;k2#J5heX6H%H{HXCX=~NBoZlARe>=^i32c& z5WqPH!!SOV%jHw0Qn@9fcc5CW>Jq=4|6^OL)m9$QSCC95(-PFn^7EgPn-5p9Xf%2j zT0v11s^jrE9G#rvGccKoT*Is1-&Wq)um?di)g6Ha$O`*a;Q$Laz(Aw!N@+sNvdAvNPK8Qq^wr_gSuSaWLG&M-o9;vBq+hGMlxGxKZ0_1Wz znv69PFh5E+M2titU>*W4;JO)kE$QxbPq19@+D+v)+U|OcH05hn- z^9B<522?CW@PXKACkTpQB_fKD)<(q6!a}sL(AX*3`zS0F zw6d`gQ6nNMK~Z8t%sab#@63NJ?$yLsPBCXV|NLj>KQK-b|H7&B_YQ%s0xN|BLAfl% zK+1oi+h>k$?dokba4tnaZVoGI#E^0B%H#h38c1|CdK&a!zQu;VzF&Ic9iQI5;=<{E zOk$B2fcGhV>({Ym=PnYT;FAj8dn$>?49pfWFbM-XI%?E9m%txc2@y@C?;dP_QCqrs zvvdCUvJMaop1&SuR6~Utiv&Ku`O2}q5X?xO{KmC=Zd9CGkhF8ehj);`CslmXQ3g;_ zrG|hIjFg}jmUXm;2Z&h$eksn?3DH0>GBo(tcq2oDp#9|0NXea-WyGwCOjz?1`Rq5& zZX2Qb>=8GQ7%)_3U|1H(c2}F=Izu#4oN5-DWOJZwmVA1O`o?2a8>?8cdKu2SVl1iP zq|WCjCz6WKVvL$h$vtUjFUvNa1PmmEu_XV<`@sjqFpI?*6lRb$srDY{%ZD*8-Mv39 zIGmD8iY;vJC5n?MPNOhEx5ioCJqcl=)TdCKrE^V6r8aC2uN`dwq_mMNVEHHtlf~gM zQSQf4m@1nK11UgzKG2j*azqrqmyP9(zs#oRo2^xh85S5Qv+*!D)|Jmx>sZ}O6|g#} z2gNp!Az!fbk=SZUnYHH)TJ4J;uOHlj*oULO*xx{adzxXo{Zsk@(!pF(RdX`D00000 LNkvXXu0mjftamTb literal 0 HcmV?d00001 From a287ddaee7f62d25898d5d9e3504c6ef877b5d6e Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Fri, 23 May 2025 16:40:44 +0300 Subject: [PATCH 15/29] Bugs fixed: - Improper bytes count for 16 or 32 bit numbers export - Exception on Code Shift when nothing is selected in Symbols List --- McBitFont/CodeShift.Designer.cs | 10 +++++----- McBitFont/Export.cs | 17 +++++++++-------- McBitFont/Form1.cs | 7 ++++++- TODO.txt | 4 ++++ 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/McBitFont/CodeShift.Designer.cs b/McBitFont/CodeShift.Designer.cs index 9051363..1ded990 100644 --- a/McBitFont/CodeShift.Designer.cs +++ b/McBitFont/CodeShift.Designer.cs @@ -76,17 +76,17 @@ // lblValue // lblValue.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; - lblValue.AutoSize = true; - lblValue.Location = new System.Drawing.Point(206, 8); + lblValue.Location = new System.Drawing.Point(156, 8); lblValue.Name = "lblValue"; - lblValue.Size = new System.Drawing.Size(50, 15); + lblValue.Size = new System.Drawing.Size(110, 15); lblValue.TabIndex = 3; lblValue.Text = "Shift by:"; + lblValue.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // nudValue // nudValue.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; - nudValue.Location = new System.Drawing.Point(206, 27); + nudValue.Location = new System.Drawing.Point(185, 27); nudValue.Maximum = new decimal(new int[] { 254, 0, 0, 0 }); nudValue.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); nudValue.Name = "nudValue"; @@ -130,7 +130,7 @@ // lblRange // lblRange.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; - lblRange.Location = new System.Drawing.Point(204, 53); + lblRange.Location = new System.Drawing.Point(183, 53); lblRange.Name = "lblRange"; lblRange.Size = new System.Drawing.Size(62, 31); lblRange.TabIndex = 9; diff --git a/McBitFont/Export.cs b/McBitFont/Export.cs index f4c593e..11f5fcb 100644 --- a/McBitFont/Export.cs +++ b/McBitFont/Export.cs @@ -33,7 +33,7 @@ namespace McBitFont { } } comments.Add("header", - "// File generated by McBitFont " + MainForm.version + "\n" + + "// File generated by McBitFont v" + MainForm.version + "\n" + "// made by Anton Mukhin (mcfly@mcflyer.ru)\n" + "//\n" + "//\n" @@ -51,7 +51,8 @@ namespace McBitFont { comments.Add("font_header_map", "// Font header map:\n" + - "// width; // Font width in pixels\n" + + "// packed; // Flag for packed font" + + "// width; // Font width in pixels (0 - variable width)\n" + "// height; // Font height in pixels\n" + "// space; // Font space in pixels\n" + "// first; // First character code\n" + @@ -212,7 +213,7 @@ namespace McBitFont { " " + mainForm.frames.First().code.ToString() + ", // First character code\n" + " " + mainForm.frames.Last().code.ToString() + ", // Last character code\n" ; - bTotal += 6; // Count bytes total + bTotal += 6*bits / 8; // Count bytes total } // Brackets for 2D array definition @@ -245,7 +246,7 @@ namespace McBitFont { // Should we post a prefix to the number? pref = (!cbZeroes.Checked && ((f.width < 10 && nbase == 16) || (f.width < 2 && nbase == 2))) ? "" : prefix; output += (lines != 1 ? " " : "") + pref + Convert.ToString(f.width, nbase).PadLeft(pad, '0') + (lines != 0 ? (lines == 1 ? ", " : "") : ",\n"); - bTotal++; // Count bytes total + bTotal += bits / 8; // Count bytes total // Count posted numbers numcount++; if (lines != 2) numcount = 0; @@ -336,7 +337,7 @@ namespace McBitFont { // should we post a prefix to the number? pref = (!cbZeroes.Checked && ((b < 10 && nbase == 16) || (b < 2 && nbase == 2))) ? "" : prefix; output += pref + Convert.ToString(b, nbase).PadLeft(pad, '0'); - bTotal++; // Count bytes total + bTotal += bits / 8; // Count bytes total // count posted numbers numcount++; @@ -353,12 +354,12 @@ namespace McBitFont { } } if (packed && (f.width * f.height / 8) % bits > 0) { - // post leftovers in last byte + // post leftovers in last number // should we post a prefix to the number? pref = (!cbZeroes.Checked && ((b < 10 && nbase == 16) || (b < 2 && nbase == 2))) ? "" : prefix; output += (numcount > 0? ", " : "") + pref + Convert.ToString(b, nbase).PadLeft(pad, '0'); - bTotal++; // Count bytes total + bTotal += bits / 8; // Count bytes total // count posted numbers numcount++; @@ -384,7 +385,7 @@ namespace McBitFont { // Add header and bytes total counter if (com) { - output = "// Bytes total: " + bTotal.ToString() + "\n" + output; + output = "// Bytes total: " + bTotal.ToString() + "\n" + output; output = comments["header"] + output; } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index efceba7..e083773 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -776,6 +776,9 @@ namespace McBitFont { prjFileName = filename; prjName = Path.GetFileNameWithoutExtension(filename); this.Text = "McBitFont " + version + " - " + prjName; + + miniList.Items[0].Selected = true; + CheckForAdd(); fbuffer = false; @@ -1019,7 +1022,9 @@ namespace McBitFont { Cursor.Current = Cursors.WaitCursor; FrameMiniature ff; - var sel = miniList.SelectedItems[0].Index; + int sel; + if (miniList.SelectedItems.Count > 0) sel = miniList.SelectedItems[0].Index; + else sel = 0; var val = Convert.ToInt32(csform.nudValue.Value); if (csform.rbSpecify.Checked) val -= csform.sc; if (csform.rbShiftLeft.Checked) val *= -1; diff --git a/TODO.txt b/TODO.txt index 7596bc0..6fda64c 100644 --- a/TODO.txt +++ b/TODO.txt @@ -5,6 +5,8 @@ V Better quality pictures in symbol list V Spinning cursor when application is busy V Change Menu icons V Re-arranged menu items +- Option to display codes in Hex numbers +- Make symbol list wider to display 8 characters instead of 7 Functionality: V Context menu in symbol navigator @@ -20,3 +22,5 @@ V "Packed" fonts export V "Bytes total comment in export Bugs: +V Improper bytes count for 16 or 32 bit numbers export +V Exception on Code Shift when nothing is selected in Symbols List From 6c97aa32d153865e46b9c4bfbdb3c49153f4c903 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Fri, 23 May 2025 16:41:38 +0300 Subject: [PATCH 16/29] Little Form designes changes --- McBitFont/About.Designer.cs | 29 ++++++----------------------- McBitFont/ImageImporter.Designer.cs | 6 +++--- McBitFont/ImageImporter.cs | 2 +- 3 files changed, 10 insertions(+), 27 deletions(-) diff --git a/McBitFont/About.Designer.cs b/McBitFont/About.Designer.cs index 9c4a9ea..e7fe392 100644 --- a/McBitFont/About.Designer.cs +++ b/McBitFont/About.Designer.cs @@ -30,14 +30,13 @@ pictureBox1 = new System.Windows.Forms.PictureBox(); linkLabel1 = new System.Windows.Forms.LinkLabel(); button1 = new System.Windows.Forms.Button(); - linkLabel2 = new System.Windows.Forms.LinkLabel(); ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit(); SuspendLayout(); // // lblVersion // lblVersion.AutoSize = true; - lblVersion.Location = new System.Drawing.Point(14, 218); + lblVersion.Location = new System.Drawing.Point(14, 210); lblVersion.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); lblVersion.Name = "lblVersion"; lblVersion.Size = new System.Drawing.Size(66, 15); @@ -59,7 +58,7 @@ // label2 // label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); - label2.Location = new System.Drawing.Point(0, 111); + label2.Location = new System.Drawing.Point(0, 118); label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); label2.Name = "label2"; label2.Size = new System.Drawing.Size(448, 29); @@ -84,7 +83,7 @@ linkLabel1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; linkLabel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 204); linkLabel1.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; - linkLabel1.Location = new System.Drawing.Point(0, 140); + linkLabel1.Location = new System.Drawing.Point(0, 155); linkLabel1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); linkLabel1.Name = "linkLabel1"; linkLabel1.Size = new System.Drawing.Size(448, 24); @@ -98,7 +97,7 @@ // button1.DialogResult = System.Windows.Forms.DialogResult.OK; button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); - button1.Location = new System.Drawing.Point(170, 202); + button1.Location = new System.Drawing.Point(170, 194); button1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); button1.Name = "button1"; button1.Size = new System.Drawing.Size(104, 31); @@ -106,27 +105,12 @@ button1.Text = "OK"; button1.UseVisualStyleBackColor = true; // - // linkLabel2 - // - linkLabel2.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; - linkLabel2.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 204); - linkLabel2.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; - linkLabel2.Location = new System.Drawing.Point(0, 164); - linkLabel2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - linkLabel2.Name = "linkLabel2"; - linkLabel2.Size = new System.Drawing.Size(448, 24); - linkLabel2.TabIndex = 6; - linkLabel2.TabStop = true; - linkLabel2.Text = "https://gitea.mcflyer.ru/McFLY/McBitFont"; - linkLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // // About // AcceptButton = button1; AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - ClientSize = new System.Drawing.Size(448, 243); - Controls.Add(linkLabel2); + ClientSize = new System.Drawing.Size(448, 236); Controls.Add(button1); Controls.Add(linkLabel1); Controls.Add(pictureBox1); @@ -141,7 +125,7 @@ Name = "About"; ShowInTaskbar = false; StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - Text = "About"; + Text = "About McBitFont"; Load += About_Load; ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit(); ResumeLayout(false); @@ -157,6 +141,5 @@ private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.LinkLabel linkLabel1; private System.Windows.Forms.Button button1; - private System.Windows.Forms.LinkLabel linkLabel2; } } \ No newline at end of file diff --git a/McBitFont/ImageImporter.Designer.cs b/McBitFont/ImageImporter.Designer.cs index 17477ed..d27cd77 100644 --- a/McBitFont/ImageImporter.Designer.cs +++ b/McBitFont/ImageImporter.Designer.cs @@ -285,11 +285,11 @@ // // lblTransparency // - lblTransparency.Location = new System.Drawing.Point(457, 323); + lblTransparency.Location = new System.Drawing.Point(438, 323); lblTransparency.Name = "lblTransparency"; - lblTransparency.Size = new System.Drawing.Size(144, 15); + lblTransparency.Size = new System.Drawing.Size(184, 15); lblTransparency.TabIndex = 22; - lblTransparency.Text = "Transp. threshold: 32"; + lblTransparency.Text = "Transparency threshold: 32"; lblTransparency.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // tbTransparency diff --git a/McBitFont/ImageImporter.cs b/McBitFont/ImageImporter.cs index 3e0adfc..527cca4 100644 --- a/McBitFont/ImageImporter.cs +++ b/McBitFont/ImageImporter.cs @@ -218,7 +218,7 @@ namespace McBitFont { } private void tbTransparency_ValueChanged(object sender, EventArgs e) { - lblTransparency.Text = "Transp. threshold: " + tbTransparency.Value.ToString(); + lblTransparency.Text = "Transparency threshold: " + tbTransparency.Value.ToString(); } private void tbTransparency_KeyDown(object sender, KeyEventArgs e) { From 6e48acc3bf2be08b8b01feb16142916912e2be65 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Fri, 23 May 2025 16:41:58 +0300 Subject: [PATCH 17/29] Screenshots and README.md updates --- README.md | 23 ++++++++++++++++------- images/Screenshot_01.png | Bin 32354 -> 0 bytes images/Screenshot_02.png | Bin 17400 -> 0 bytes images/Screenshot_03.png | Bin 44190 -> 0 bytes images/Screenshot_Code-shift.png | Bin 0 -> 12239 bytes images/Screenshot_Export.png | Bin 0 -> 59098 bytes images/Screenshot_Import-image.png | Bin 0 -> 55310 bytes images/Screenshot_Main.png | Bin 0 -> 46724 bytes images/Screenshot_New.png | Bin 0 -> 18197 bytes 9 files changed, 16 insertions(+), 7 deletions(-) delete mode 100644 images/Screenshot_01.png delete mode 100644 images/Screenshot_02.png delete mode 100644 images/Screenshot_03.png create mode 100644 images/Screenshot_Code-shift.png create mode 100644 images/Screenshot_Export.png create mode 100644 images/Screenshot_Import-image.png create mode 100644 images/Screenshot_Main.png create mode 100644 images/Screenshot_New.png diff --git a/README.md b/README.md index 595106b..117bdb3 100644 --- a/README.md +++ b/README.md @@ -5,32 +5,41 @@ McFLY's Bit Font and Image Editor Features: - Generate a project based on a font installed in the system - Basic pixel manipulations: shift, flip, invert, etc... +- Import an image - Save / Load your project for later edits - Export as a C array in different formats Requires .Net Framework 4.7+ Some basic hints on the interface: -- Mouse 1 to mark a puxel black -- Mouse 2 to mark a puxel white +- Mouse 1 to mark a pixel black +- Mouse 2 to mark a pixel white - Drag the mouse holding a button to draw pixels - Mouse Scroll to scroll up and down -- Crtl + scroll to zoom - Shift + scroll to scroll left and right +- Crtl + scroll to zoom -Download in the Releases section! +Download in the [Releases](https://gitea.mcflyer.ru/McFLY/McBitFont/releases) section! ### Screenshots: Main window -![Main window](/images/Screenshot_01.png) +![Main window](/images/Screenshot_Main.png) New project dialog -![New project](/images/Screenshot_02.png) +![New project](/images/Screenshot_New.png) Export dialog -![Export](/images/Screenshot_03.png) +![Export](/images/Screenshot_Export.png) + +Import Image dialog + +![Import Image](/images/Screenshot_Import-image.png) + +Code Shift dialog + +![Code Shift](/images/Screenshot_Code-shift.png) diff --git a/images/Screenshot_01.png b/images/Screenshot_01.png deleted file mode 100644 index a24d31f0643b6bb15f019ef063bb4223ff742b29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32354 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

Hit-Gn>sJPWs8&d-wQJoSkmx*emJA%G@!nh! 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 Fe*v=bK!gAQ literal 0 HcmV?d00001 diff --git a/images/Screenshot_Export.png b/images/Screenshot_Export.png new file mode 100644 index 0000000000000000000000000000000000000000..03114e46160c340ae189dbc0ee2d66d36d082076 GIT binary patch literal 59098 zcma%j1yoeu+b$uXNJvR{qev>f+AV+1%YaPFXEj!ALQ$*pmI6HLZ=EDrs`j{EG*SAerzX)o zCt-5rt+ozbm^Hfl`H8wPD<{E+TcG5MZ<_bXT;rX0^Lkp$NnRx;e$zK<8LJ9$Z&#r;K+}Obz zB|uD%p17%RxXciQ%HIx^KQENIWR*N$4)NNr>T^0fFu9t^MN$WBhX>rwy;|p7IY01( zL`!%cyn6R;!~{NN@@q^m_Cn_xjKV^u7hv(0*DT2c>sxzu;K(g-M|;B>#*l{I0PkZbu_wYh(Eef&N2~ z%de2me1-7lT?cP(YG3&N_juHHybt`Re?R~VDVma+dK4ma9&)}1LD^p|6Qh`>g2A^$a^oqFOS<4bs6gF)JrkA7%oBo;y6TU= z$~{z&`J(`3+qk+odBa8C*(ZZ?p1;T>K1x?`J^#))zqLfHF*JqT3bo;%gT$WXYR$ei zI%$Z3hzWDmCqoY$QJaqzUn0?~i%W}LB{E3c2Ow_*v|;#c(U%zP3wx9!c}0zWBCKO{ zl1ovr@)qqe0+zO|aTs0_L~V}c{eJEdCGyS>kJ!)ee!S%IZI6XEUrO*rDmaLf$Zr#V4>x=``#32(aJF=tg=S<4;ahY53#GL(Rc`cLYk*j?|HqM{V%P5s%J;xh4SW1h z48{HKQT^ z^$rfgV>s-Kj8LwXLJOD&%L{YQojBsgW(s93BJ!c@L3kc(i*3HYH;C_%L|&kSwojQ^ zSY~fud0I^maY_8awQna6R^@mjxvK7{RvkVbV|g+ zK=;K?AAS#qt%VRT^`Xy)WRAl*S8G-n`-U6dT~a#Aq4N1Ba-n4ImM!coEH5h&XRx(r zxtFlRNG-pDt*uCGtz{Gvff|0YpoLl|xk3$YR4Dd+4$D?^KN_5&_yO}#RJ8j^u>|NHrh zdF*9w(;m|9a#|uRPAm&54IFp#)zQph{93ulQm2gQm0q87afpbRd4asd_mQ_-PcMdbJ3%CE-P0gnmU2Os%l}QlnpYdH` zRzoiK&X>E+j_~-<3;{Ywx>uY}M3$O&h-eWZsbFGY-5Y&lmLP|CrAP?mJs;W;{h)pF zYU${lEPf5$ctq2F1wmFGh%45Pr{&!v8F#zrUS!-o+R2G|cSPK@l#Z@&U{_%0UKHcb z4Y-=X2t+F(a*z0O5UJ<0xqgH@L$;m^W}+8-_jFK|7|R@wfSDsJkw2zCAcxI7r%!sb zpjrM}d{5raf_^VXM%Y~X9j<_(M^zQi+Hz6oxKkrdq*u7tX-1)-X3JC8wf4NcbyhBA z#mv`hDCwuP@Pc~|Vc7_g@ZMM{j7<{7mBnCs@ZmA6sjHn10$w4W zM^8stA9a((V`BvDS_j~VqIbX^mS#SugYU{xIdi<|&>N5|^i_1E&8o)%qX!39t%(?M zP};$hc2_if4BlWr{pf1?4D}UUwdcEp;QL)?zdm?Ub;8LN2jbvSm<;yR9JrqH`YzA= z?Qx*`tWgOP`-338fR%NK(=_rb8nQ9M?YvnfT6G0MWp`X~$eaqvgj%XtJ`;A%0ZZDp z%*}Y_6eCt+ZID+EbLbPdnI>?EjV~hgvsp(x7|z+eIV_s1;A(y~_>1pcWKOTxb~RNd zbw^E`PP5=xeY6CbpP*Xza`*}skNOC{P`%y?N4aQMdUW*EfxwLPC33|LHGdXO=0G9Q zK&W-5L_2=&5WD1odh?UNh}r1L+%(hEiT7*{#wN%u8KlrY)=Shz?Ypik-FxH0GmSEB zio#jh3oYuxgii$JoCzM!+gm%MxQ>Zgp=@tqii(Q07aWO2qON)o5%s~b5E&pgt!a=K zWLvR-2H-;djJZ_u;vp$SjB{8 zjb~ppMB8w_y8a?+{o>xZM~79Y4G?nVYuBJz;Q92ld+uv690xv$t)*IM90;G}`lXR< zBHIs%Ned+-A#o76YRI&aNU*ERxDb*#5khSMCkec0D@-e08!7)DPYImN^-EYktq6FE zNl3=^%z-JdU(Z7SGbqLXIOx~;c47Q~e#7nm=QsXqSf$JCr3?BK*IYyvSZq8+=j-HE zH1J?Y*d$3J_GJIbAGsg|NfBKGanjhWK704yEi{K3RnjX)8~$C%@`-KGz%G7;l>a@vtlV5LhEYbS zap?8P5jNU|oZKq$YfbiivQlToGFZzRSrWSh*mL2v3tcYk3#Rp>h7k``VG>cUTeAv% zaqxN0aVG+epaN=C&m*0z>mi;@ZG-URG%1Rz@Lj2(eq-?`8nw z=+%UWE%;E3wp}UJx+d6rnQt^w_@0Ux`>s6PY8Z=fBNsH+`&ljXima!_HtH5=_eke7 z?$k|xH~VV)ON+*+Xlw$Jej*chhRj$}h1v%;oTQ7F1TD~WIIK2YZeZJ1;y^_w|BTCV z3C_uHgUB%z*E^#lFWoD}R(O{Gduh^V_d`U4GUd5jC4d1&A^oTQtnufRh9}Q*d@#dJ z+i;*AVs!p?I1p!bh3W0e2e$jZo39b!B}bvt70VZ#6-;fgXwmao3Q6>>{TvF|==Y6$ zXt}j-4UW{p;21fZj$E4-DNEE@Ave$FF1unjP8jYd{&1fkCM>m!matnUrxK*}U#eqt zrJ%%rin#H$KU=bxMd!=ic^&wxVD7oFk{pHkIROOOx#Z1G{sNUYTa6qu6g7!T3&aFonZ zIu*h{QY}h+CneYKa`HWTTUk2x_^aeQLoB$XO;p>{(ABnQum%4PxRWny+1gG<8zW5G zZP>G9uEtX#gayo!JFl&Y}( zbAKwDFDrDU^be@U^nG*T0s8EXo}8pP_UL=RP`IDX;&Y(1xWZZ&#XfEW9GIg#nty)j`B7P!?S@nY%B#;Hu>zDy6-EpP6(!b z$WqaVG&#~<7+$MX0jQnSBPDbzDNGR|!na0T=^hr@+cS1-bH8RgH8^7Rds%ducJT@^ z#yIKI3B|8eM=H1l6n6bn8fnF+pRKpFweeapaPzpmhqhi$!IK}Re0{AL#d|j5G=|!6 zqc69(70dC#-tef$iOhSn=iL|_;~sB1KjkwUtHgf39v$0s{s+$QvrH7Vn2en3D_Psg z?ahh?Y=3Ex^{C=U!%-R&`;F1`etz_J)nSb-X#CYW$pPpv-k2;$ya)9I=U<8N(E2Q8 ze}Pcds*Mzo=8LjpqWL6&a5tiUd)zXHv8ny6Oi|}|0Iqa^<9MRG={w)Jlvj_6?}2#X2OvRV zwy$@*zFM1P45HY95GrSes9~g0NOTc?pInj^d8oA#s!+K)aH56bg*9sCO%ZPTZSzax ziGEy8FXbUt&TIoQ;ui%SO#x@9jni{JP=zC3B-bMg6RXqKdvu}s`7a-_t~U)n47K1& zO%?YQx)c!BOOTy)W3ft&s@~n4oP4Y=k^4>x zsRf4bzcR09qVC$z*S#rNAj8-@XRmQRH?*tr4|1$`F;K%jt0kz^Le%>PhzB^VbFHrM zJo1TKYCy&WWmPa4^ES3wzg$c$5+fkAbGg&xj>&6uC zyvv)uvk1d{&ciDT-x&(RSqkfsA38P-vnN{3U=EtB3H6_AKXIs-q`AaQ7-3nY-b5>^ zRsNW}0lmTj;9to2W+}JQe7lyCK4BdYL4tgY-<9)+g`9gGfhm3Bi6+#anj?L3?{4QG z6N*K>#WJwFz%HcqMKIi@o>3&jS)iGnN*2bP>OSkFtKQ2v`?+1A4s#M`VaaG*x`c%H zCKTP%pj8-CXNhv;*sG{r%`Ooj5R1L_1=_M3hRF+~-xpp*sVpoSC<~GHMt;yg3#-W2 zhBD~h60Uli8zOw0 zjQTj!kFq-5UDRw+3oKz$eZ{a=LIsulzHeo(kh?ErHCe}pJmIrc&tdVNG~vI+;~kUA zA6BXGMLjkv4lJ9D#_JgK8CDl8D`^L{Up&Vsm|>ak#FPqO2NL+Y04U#~Z!9sWjjf64$YXi|Z!&S?d#ZUl&lrKA6T2D zIV+~YNZO2G?cyMpp?0n*ebp*Kn)DA6cO-0l&#v|zvfNu;HF+XAhn>fyMQC(fLE((!FY=(iJ+?y$#I4KP+Kr6Z`yH2L~P z>DtkW%$F2k^U_jnjDP>#uX2yffmiV7Y2GbG@+F2=zV$&qc4eO-L3bC%5ZVWY2_TPC zVE{jkZv&vnLBSTr>Z9JqX+3eNsJ?gyF(jp zWrL3t|NU&P!Ep_-1XOwdepc{Va7yLgQj;ql41$(ESc1TaNt!&Mv!UUP0aO6Ta1`!C zTGutAa?evp80SZz%3;*1Vr>MuG9ux1b<`&yA+ZOHe6ZLS-LU9$7pMx)Zbn{aQwryq{O}mj_E3{NSD5|_ zxq_JPdqXWmh{A;aohp}GJyS(F;;&PuFPxulEK=bLvs<;5jT_0p@8aP}rRIryn7&DS zDICg&@k{^C#l=*2lBI?Y$FV7siT=F@5`1bgOmzmHW}@6ZW%o(BE7q0_$vRkGzNV&zc53d8jkj?0 zOgow?dNqks>4&l6mc+_5-%CNAnDf-QXXNY??`L>eNVzQpj7_F}<%K_;5N^{dC^zdW z-Xhey3oW$2;9yB0zmKP?%~WbBW}@=dY>e}zASW2J?CXN#YeqZ;g?4J?!4s}GB9Rd( zuQE0}PM58X%dmQ)Ox{rM7~>CbxC>V^kv&BJN}A{o6*|1azel3+sR}^O6G|$~WJF#G z`CJDj3dwA$QTX}^OduXNlTZsjSM>1oV~Iy{iR7gjFuRU1i8WMoXk6nhrAhuj>@NqO z;VOk5?01Zn9jhh!8Y?{8KNW^CU{O1rh{;yhiMT7dI_ zJGzZjc=Ayao1BiYr|$|1FM)?;yv%U!FOKl&pMgAM*y@Q@%Y8ajF42OTuS=Obo!6H( zamdYdgjkBn5c8TT^Bfra6aNk{mp%IhDYDU~=+RJi*AFHi$Q$QkT{pC5!mfo(k$w~#`{a7lk&fJLjhDG)nz@9{t2~lxAB=w&WY=`fn8A<><(2Ua@UTu z&a0;!TqB4lT3C=JUgi69-W}ILLZMd1Bo;F=r3BS*vp$-ccK<*eLr7shCS)}aiuVq3 zOxGF9BY8#{5m8K(L_S+wW}0Zc1T2=MEL%`5LBA`8uCwB6CSh14?R8Rz6>Vnbq?sxR zB`E!pDvPmsf_YZmIi}6)dvK^mTBJ>|as0Ex^JUQOsAOTQEh-oCnfD@*11vhcUOoZ% zr5x2%Ui}bL*~fGZ)2SrHFIvLlid@*w=n9XVtob7rYQ~T1`hkp;O{urH2w}}oYNU~G zPnY#rCOfms%lKFp-R;xzFz(l?%?9no6-I}FG8s^6N`6D`mOduq^43y~E3k@l)*K9k zIyO;%zcP*w(R95CKS#!rKPXKtn1X$Ni}t)-=)lS0RVa z5vzM83WWLsx%N$-x(^}`BsTqjxZd`K9X99wq#ERDk-8Iz$s3=a__*!4av_~7U#A5S z;@{!c>i2U^YWz}3lcXam34B91cO>puE%F=B9=xN5HJSE!{;N*gHZk68?XhD&jE`h| zJGAZr0wQ4L1tRFsMz_&-R!KERmOc%zI9@<@D`}t*>XoS8{RGKUI-8r+8d5-%`Ktoo9gSQE)2Od zNIE3FKf4-^BV0#E*-zM5-Z=L_vT~t^7w`ti!eqduzasQ-Bh~B)_=plb?p7N`BBcAa zNd^(Qisa4U?zr`erOqZJnwu<;n!A4Jxqt;0|Fh^RlzAm3h+??MqWcz0v2XuWL3-40 zgk1Mi-dRK}c{asRkDf1MgyN8@-8fxQcQm(sZjaL5*~qN)>qqceFM-!s+^*x0*4z~9 z+=C0R-CHC=8{D3D<6>bZlsV##yv0}p(}K}CNJSQ!db9Z+rU!QP{m!?85t-& zx(9yt)@QGA;|h#8Up@BT8$?va@h%34_C&NXPS7Bs3uC_3n+(ugxTH}> z@hyX7uzjT*53dYoo|5{AqqHp=<=D5CUo#>D=#L9{e zYc@Ckv+A2!KG!nGs$(q)lVt7ac=UphVy)Dzwk4~=#iZlpO25~gU2V_#@@GXOy|ja? zeeSDdnZFVe5_O+}VEGUrk5O;Y=nZ&)rU~xzQ3mHT@9u>$)3g203{@k{wrzuQKrD?+ zHTAhOU1@d}?u5K_Z~gOAofd9NF00(k@G&rAbuRbBK$rWuGHa6Yw6CU3bVQ2wAL86O ztB_h5F%y??9}S~mLDh?rjC|&$hZQG5BtV9+t_I;_DCX=3G{@`-YSIraAAWjVR$gxI z@F{|}Z(4}>Q_v9B;lM1-)T8X~&@~~i`;`WWRyWevrhaJ=4xH{y>wMPx_U&6B9)nk&CGD)_c%rBDj}gt^9>KQi0}Vci zx!sNMEQXz%Q+a(1Qd^5fk%_!`;e?%&lY(7xwE6>gal1uMhJ@TqEEXHX>0w+_1e5bT z1FHw{Q)3W?$WdfoS{?CrY-o<+dZ)A2C_bSjY_W|#GD<{lrp2=o?0!S$=RBfG($poQ zQ(wGmiPUdvDN9N{Oto)ZHnKD(%4&~FwzwrSYr-e|zRmY+btqj( z)OC}9jQo0PnprKW(~+Via*V!_Iaduy7|8p+XaE65+)As6$G52N0dKbrt{f}tH*au- z9xoSxlXXnqX%)+)iN#P}s8+dWW@q>8@0WoEZsj~D;c>3^@YlL_pK>jP>Nh>$<;aB$bQQNLsuwy1}# zJyCMLKEYW7bZR&!(v7b`gMF8sq$lzkBn$BaWsLeSpb!JNOp@_UD*ME0fPtQG^PPsI zm3A$(cvjg@8)TXi|EF};yq+WTb(z*#v+EWSL05+gqyPFfP=+lM8m3fPk1~KuIdvrV zPu=*&$yyYzXD-O*+Wu@zd+JtM>9_GyF$Pl`9@$)1oNLWb-gaQdOLb}K8TJxQl)bJJ&{-d_6PwLgZQP^<9`mU z5%`Py3qE(U{iPC%@snQ21=duE;tXf z2v@FV*|TcHEli~Ro7cALPWmM0823n8VxHj%iTeFm+)^VEi94h9c+E*7B$W2K2b%vn zARFO}qi?(&A@acx!?Y?q=CL4-@qu9l)bZ?K!N9;k_LJ_8s$PW|Bn~J$Lql;S4?D2w z=bpyJxV6QhSeyP?ueX^=MP(JsVIn%B0hqBOFHv=2HO;}aqLGbBlysu8lv+>5d>cGS zt8^9D<%cukR~vvY6IiO@D59(Y5>AQd5qalP+4D~QRPcj^xr99B3pZ4C-tT;LUEb1dk*b@NzE0f&9W#&f2k?9HV6jVSYG z;B0mJK2h_tFKB{q)oF9)z}y^>l^XdfWZ@{MGPg$P-X{1ZssX9C%J zgvti9Uj-0sy@-P$YdBOO*>lFda^ZfK{~YrXkwb zFmC1QQ&QtA7|f8(udD6yDAj%|{lCY+B0p)zYZpT`SPWyi?QF4&HC}SnY<_yq5fZBq zPIN)(Nc`2>d3~AI%h};WcevtzGC8V8DstAm{CSs1`w?N5gy#t3^{Nyw`yGDALn&1( zAs3c#F#HZ&b5FvJuPqaR2#bBjdXuzSeRS)?2SW*H5;&_8DxLC=_=Rzz-kekZ4P-zF zeX4u;vS)@BYHruZm(~3#C!VKxr?~LLox-1I>0Jel@fGrkMI-SA^44)eqFVHVV)I^M z`3lo|Txzh(X>v2f!HE=gGj5OJi}5kjuD}W&sDpl+r37$ta{Qp3Jq%5=Q%V1ruGV@s zg@40>XJpD4kMf6?!sZ!MCCS(ppkc@xCJmjc^wf8S4B#SYA^X?GC=&4dCxH)DNHkKl zM?YOL8{tQL%pIIbQD;PT9@Ftq__q1XBIyNd+3ZdzJP`wa3`5U=*biKc4K3Lz0LDY2 z-*1(n1%$ca^j2G)Lu30b15um3La~AtITDlfl+Iy9ldd90I&GexF*^dMoJ(E?6%eGc z5xV%HQ55Cb9|)@3D!d0OWhbXxL+xaN;``_AANR`Dn@#0^ot*U8QHjA|5&8Mw$W^%M zL+4>HtSf}Zj1LYXflQ2FJt(Y!u6CcRv!?_Ikv+4gzgDi@3U&6!7gg6$kXSdaj&Dq% zii6Y;QLU+2*q$a|^jrRiiJqK5VyA_aLyyM9<&0~?tRW>vtvun3kHquQk^H>+q(61gH6xqi3`UUC4V#Zy-1X;Uz84bP4w7WbQEI_sD=%C^xOwo^Bdg|bGXaULOISk{eQAcaKl!sWfuiE?c$R#1 zFyDmT#eX=i!gv8B5g=nKq`cmrsp(_f1^puOm03^+Se<(!5-|J*0Nqn(1a}&@`J2Dn z)=u&sda?VhqKCjn4bydm-qs|vI!kH6HNTkKPU7ITjkbI`14sow`kkSBsT#p+-%qM+ zp~j!yZ{M2^3hLt<%3n-y$7ufYN^CF7tONcHp3fnabBwu?#g|aEClINo(l&;>JN^jS zJlov%@S`o0?%SC;nz7nw(S-VNKWds^&u15U$MlRPbzJ6%070`Muf)aS*F+m&?LpbJ zg7C-LB4*7i*_7NcA4cKrc&uLKssN@sBZ`{_{)e0z+07x|~cI;$qVe!o()qJXq95Jr@)Bt_)BhOmU4IpA4TaDU&#%g;0Bb%0tSO0_2K*L!jm$u%5 zkhe6!uSBSrfH%|DP$aeX*wMr(zV_kMEUibZ2i`u7U;R-1y2eSvXi_()Up8NXW*|1@fApLr?#%9m;Ll_wCP&B2GG#D@xaKwBOt_asULX*iG8@17c=!j$HO5n%Bl*9eCim5=Yzfap z6auz(?OnN-U=MiPyv|p`Ij;m&uEQ+N^Rf45v00)rQ*0aAo{QfBms%X)$^u99y91WF z*3&7Y-w-fF=2ucFz2FT_qlwR3w_r{BSVeT!3`R?nk&|X*XD^H`K2dmfj)n!R{3 zjB=}M<4y7fIN5su9xnfjhu0i-ObfjD!cw|_`t|q^Ik8K_%wE$*7Fa!E*)V%*lv2S_ zmF3W|FI)Xf zX3K^!7ilNQ$@-tq^7+Q_^~^_$Uo)^&a)o!+UrvcfuW%eI5PTi~$o8SU0rv4)m79%J zyyoYg<|lwyAml2aUU!ytlL)>tQN894H@-5N4i@e&fb+xNwjnzQd_0J7>iiR^TEVk= z9X9rZO`bHejqlz*I4j>cxWlM&zMdo3?wh_v(OMD zx{%a>+-tmLbg*$Fu3c6Lvi9Kbe&Vv4d8v|ux&2s}%<$}Y;9ufz0wDfUNn8$G)c;a{ zy3-5r9E9f&u5^HYx^;#t?aSJ6BFBy9*g zn!-_w0|>Kfg6Z8d=q>a-#EXR^qliud5>{6S6yYYFAVqECs(^N%%Rum?dt=NqA(e0K zekCR;b;&I6=wxu5b5>j7zR-`>gh&hr_ExJ5@6tp8cBds)gBnC6=l2$*N0BRRN@I)g$)V`vS` ztE=7t;I(TwQv@)~i8wBH17PwhnzR3gsgrXnO~leTD`M^y%=p~spTM9bnI-pALb4~P zD}NW>oWQU7zRZ%gIjoaEDMe`=2*ZB9sJj?|rZy5OrzvtR(a9qI0F3V!YtdNu7bZtT zg@%kHpc!%(nkJ{Zlh4LsMEX@*46(BTZ--yoQ=c7nphQ?;ysj3Geya019Qx|q=y>N$DRw{LP9^K4 zE>Oe1h?JMA59`+Qtr$+4QXUH!Y8EEiu#i`WfB6;Y#S-i?lwsg#gD;+DNvAXD5^R9&iF&#LfLE_G1Zm zntaJHz{mXJ=?wHm2o0bX^vk-?D2i>?@3}k;E+F`c>I&RC`MIA=EX zJ5pjx0$u%%M^e4w7)utbtAy6Fb z+zN(01BB>m0dXg~$o{~{+c?J@Jef&=`4HG_&l{Zngo|*4#GLMhJ7Ye!9_igRd}w_5 zM?NoTm%YWv{FL+yp<@~GiZsHY?Y$jqFsB0RJ~r#Sme~D;7E0@ptncYU*4I8pV5sJ| znu)=dq7dEg*fluYNr*n%^VSmq7SXHT8jpt|U8z39lcHhgAXvBixOCe-bpABUn_UjE zEuDkjLd_jK1Z20g?CeuMj+^Y-kE@Zz7zUOXcTh>n6xF)Ep1sEd?>%E|SFffasMF!y zzvKtY?lm*w8&-U)-SQtUA@*@7Xh0y#Y)zYwhLS$?DOGa&DBb-Ye}ZBEJ2{BzrgpxE zbg>m`Mnc}lzkY0QG?+2iKvb()1vgHGk~dELL=sIZ_jvOw>dnr%Kyccc>P3+h-PhP7To@-E>LLH| z(rxLt)T8ml$jiJR6KS?;2*Oo`Xh84dc-a#nQ%$7vaY(7?D!M@y`S#7lWi=$TNAFfo z%AE=Sq^l1Egcon9cqiW5X7CUDs2~`N0)k_j{msTnU-sN)=}9p;xbM=>G{Z`5IC{oe zvWH!Vh|Fdr8Gj-;#r7J2DviEp6<`6K@D@*)#dJm0lQwBZK)^rup&pa;Os7!VYh)Uq z^xzAr`22h{=Bz+zjBI7T{B()rtZe-3e55|gj&U0Nwxxt?f{S%?2HclzZW8jv>mbkG zvVC6g&j=FX$ydr~j`Y}vOlP|l)}+b;m;hhca_sWXqb1d)_`z>JX+@@0BzJaIUa+g? z6VSv8%IAnz*VE?(1QXQyqc3T5Vr=SfKlC>J$bN;AJS_y=PWH$+_tZJ53I%iku$lM| zN_-apg*wc9xiDV(I6T4_xR9`igMev2{svRQeVbGBxm62(p1mvOT8z)<20$hKAh0ei zj2b$DQCsEkFrvpzF=b~Jbrteak4Zoq+CP+;6~cqKth974lSjwM$v5{Uro)KX(^WcM zCC85l0pw28Yw_uQ>083NAETZOD$n$WCe^nW#H>2_ts2UjdGhZ!_@=blpK^ow>A&bI z%sT(YI)O!mBOqOjI^R8_K}3Z)#g5cJeiIRAYkz-XLz!pbuHwoo$puBA`& z^mIGC?g$WzlbGzn+pfzMJ%v^nP8QdqnMxwYUa*1T$SkE4&Bso<-S!7L718prC;oq0 zR9&cPK5A3k8SOb?>LY##;XPy-7|Y`j;+pe*$%ggb)lyB@=i{d(9Oq?}FBDHR`}J75 z1(p*Z+`V)_P|g2QJAKfp<(^@?fWJ)Pu3bElIr8_VA7`B0E~n}e6t7f<Ev}d?)*o*KZ@{ikg{lszg;B?&g0%Zi`Pyi@*INR?o2)9G+;w2D!6iSlDp+7wtG{}#f zwiNBUatg=A9P_l05iw9i`mZc<9VCHW_UYPg4f6NyD2s}EDO*Map*XjqCTox#;vDe* zn8C}1Bc!)f6ctm#Spkv)Ay8}e3gAE)x~X||p)ZTdz70EDjdstr6=6V2CE%EwqEl03I4%-?-o` zW%hB!{y27fSxFK(u{T-|8S}2b7jWsXma=EN{*$VIC)Fq+C@1;u-Bfuk0wA5d(q`WT zD&D#e25QYm+Jf;H#$PQ(jg~G+QXD0hh?mp1r3id=y~_3-WS$$+7hH~$Td(>Rx5dF& zAYdc`hYcd{lI-Us{LF$A?$R7=A@t-G0_(;a1W$kX>d|-rd_HfuITXe6+Ey*<_pv z$#|O)K6Z{nDp!EI;C<2h{hANAq1y35$w|*h=sMh2KTWF8ko$>O3cYvN{_3)Srs3c^w~%$ZA!$dN!{r5@w9TcheDBJ+pt6Y=`i>}HA8 z>Bad0A|YoIllph+8Y6Yd$H-qRm^q36xD*k_32hQrgO3oJC~?UwC9~m?Bx?azJv*Qb zdcD#yyGems>~62rAwEba;Jt=r5}T-L`Ot}oR$0G>|AECd&67}HXvv|7g#m?UHldF zYn8&&2=HPqmXxR(nE0xC)q$eLf?Mein$-i;gNW&4xRYpR-c``4kSr262Tis6 z;@Q9SU60zw_5W^hy$GsY6#*WYPkS6u3AkU>Po~Z+GWholnZ%Zr;25WjZdY>2me5-) zBM4(Vfcwf zCGIpmduOc3JoCs5C_mk;du%EFnlutDT2sXY|~2zC~li-2&_slwH)da}i1 z+?67Gpl(Z6ac#w;gT2rS06E;Wg2H1LN+0@*rJ(w~k=<#Js`13z4eYA2Wz)*(QWBv# zwa)vHN;x=V70UF#tSpAP5fKv7-8C>HnsZgDyl~xSQYbzEryJFZ=UcvXYAQ( z?UBc_8uQ9}52vc+m2$+X*)KDKqNHVS2U&fg{g92 z=YZ$vT-(qq_mXk@TtU!{Jc~1fuoW%6LDqw}C__RLc`arB~feP^|_ zriTQSs9lw3Ko}yllAkKf2E;&)n`lqS2KD}P!q2C|1`uBN|K$KJRds=e14l;qr^-JD z0pweYe|Q;wu)#ssC5YmL6#-x_kc=%c1LK-_|LyG<|Iquf2tx)ecD4#-_9buXN^aop)$l`B?4`LI42H8|}} zZXF&AA@T~|8^K4XO-1cF>Dt}R5Ln9$F#MldNag@koe|ulgK{C*xN8qjz0qC0Yy5%r zQD^>(a`$%&!5+UBfYk$D8bKYYV(mbO1|S}(FnD*PAVAv*f`zEv17}nQb6JfB@rb^U zmoR6e-Cex?PSgb$-WT{_$G_3->V7TumeZfllupCE%z;~`r^#Ih4&J*s%XceRqH4&D z#x8zt+BG!1%jR1w;$>K}FUyYakQ18q-TzF4EF?Sa#|-nc+kAX;9YnEqC6 zhxXb?11x*r(UJlkKC$UuH%!8oi++7zbPygX)Uop zQIkg3%^Hh1UMP{WCJvy}r>kAP!!>8yDW^A|;wz=q(lfs0v9B~`sKmlCQv}vw=d*(% zpcT5|ch~s-`7=JcPRH{wzngU&-y|IYtvJ!nzAfuR zf1(;lU>Wk6Wh{dBE(NeE)$ZDw&57iF23ZXd+9&Jb+l&;NYI!<3mXFmS&ny6fiP|2L z&B9f`o3?94!BRkP@o^o?@~LjG`1~F)_fu_E8xIeUE}uC9-uQpq5-p1AHWaL?yczr& zdlLhgRYjX-WaEi5B68#86wTn3;)s8!?zv~Rw>_`Z~YI)`!3scArEPbdO1VSzvAtgyyM$;@aQ zHPZg61&6(4v0ooOSV;b7M+|{MS4-mK?gt}P*BIoGXn7p}G2maVo~&`@DuqgHd`Fa& zYihm#v>w(S4PE~whgS$j9c_f>Gyrx8^-?#>J*;nV#}BKt2%8q5V{h)`q^Yj!; z6y6Dur+|^zL-yp@rc8UA(lFO-%d>w7=r~61=h}Qq%!5)L>7{zDIDiihq17*7-(8r zVB)h^QCD!<#zuc{tLUwUxE?5I>K)THbl_Q(0hzo&z%29N3$k^~^ucd#?8i%3qySGR zyu$V=9`Lrf&^6WqUX^P$T{4nFggP>>arGhJYOgbAkgbHrVq7J_v5#K9&|*9+2T3I4 zvtwT?2eQpk+Qs7n9A@}EV-M^1z1f@nogXoOw9QMnGqdMzT9$i*5cc$gjO{yAn6Op< zrFI(;A2|@`Rn=QSH}QqeM;@RfO7kMAw8vHTvET=CdsVGkt6`ASsMd9%n5`HIhb=pt zezubN#r*solVyWUNx2X2WFizM)AT+|$X4w)3U4{(d-~kZix!gkc5}kBsL}l8TJukV zP58c-z&6jUYUkYe*X#Ib?bi@ij&V~|+|>%e!#jzg9L^G{Oo zy-#pp@0eK%$_Isqht+g3mH|(NJLw(Ag4OJ#W48O38m+L`?l>Y&q|Tg`Voo%CId7K< zJ-z&H^}N_;eq$m)(*rn`BuFV7gR4DZrs&-paO3Y_k!T^|L{mx5+Ngb^6_4k%EJ~UH zVkiA-(6nNvTzJUA^HlpL{k8#D*5o%eAyFNrK8ees6(&B7891q4`h;bhVt1!Qj;O^oA#hO zq@S*R-P`Y*H4>nZ!+cz(1+p5#_KkyeFZ5->tqrOX#5Ax3FR<&ug1(arXl>VH+d)BL9JRi=74gWw zUcxGlETGfo$$zoM5<6dz!D14h1#02yTSW&VG(^L*ke?U5P;No!1}mmQ$f`eP3DQF8 zY>UtuLg$7RPc}6PhwT`6@4jV00PdtffR*+POHrvwgCd@I>dXV3BR~ein8b3!aA_v0 z(N|>CeJ^(SpaBt`@|2tv^=ZO#c2ETi(911ueO8+AQSht1Jm@`ggbQetAsD5d{c^oNQ@c`obPMgrqYz&MtACnX{EK(n-FtEb7n zOkST&H4)$BMY+UWR8(ABov<&x#Achh{WdfWXzF4=Xd+>>K&ht6vdtE;-{~(5$y=V5m*S*$yzhA579g~*S1ob;$BB@KpZ=p*}sfo~z zi71@3aFX3clyiUUtKvF57DpC3?M>k`As(Kp%tGG@BGlewt}{|^c~J*X-=e1M@f(&^ zB3TuJoEj3{fm9Byu4J%?zTHsqyq*ZliH~L8w?1miXZC#cY?jYG{nc2ez|8pixcrZr zb5^YHh>B@Z@123+s|~3T3FYAK9}OhM{a=pOwz`Inv~s*P3d-m$Mp71cSeA#aLmu%bJ)5T%uuhDSgeXxbq10MQCcNWgf@qLz-fY)> z7YS)7fq)0t$C)65lR?$D(H)OZzdN<|MHV-Gta{-wt~hV;dj(j#PTgsyjPmLBY$4%! z&>NnV-lkzn4NmREm8t*ux7k8dC+t?Hu51lWDUy8*L%^Elcv{C~O)A3uago6Hu`0ZF zBAjmuG!d&?zY>yF6|a3S4*KW zAysAry$m&ax*j%wDYQpW>TzuhCb(-fhJi<*`0Dy5ln7uQRksBq9BeBcJpE1{k-& z#)#@vu>uizqm2Tt?gS*4&? zq(K%VHMHO-aYnZaY@&2@Xn)Q-W@q6kBbJT3Kk$-7OVCAw^%bW#v%@xBt!)YYHgtGMrM;Dj0t%0B*EN1_z-v~jG~w-ydH z9;!8qVfRVF)mikk5se0xTxiq1I(zCGDbs7yyo``EBdUvs=re)s>l4~xXllymcz|7S z-Xua`@w%}5h0g8>;Jo(Y*H_qN1yxB9r>Pyde%;n+ca}=HBlT9Ug5f2H(&=9@;d~#u zTVJJGF!bLe47vRQT`}YEJ!yRTJ9VoN8_(Pe)7C@LNN~!%wP(YkF98k4Skn_4f}otS zrp}eN2GAp>&n49ynl)>Zxw81}mOE<w{DtO0%VaU$${%GkL*XE+(V0xWoX>aCjcA8aTyqFdXGinBbDM0CbcN}E6H*> zZ|zy+7@a)%CT|(H^?64?4)IlvR=s3PH*X@Xg>LX+Td8Orr-HYjM+B6NKO|=}xgayo zcSo8I*=6255i!p*yeGn6QM$OK`1j7~$RBCdKNN`n!dHAdbb{`SDfAwq1&!K6Ut|M~ zx2lbeCJOZ(vrs6u2~}$(x4*tFHDR5n)GoeW?c2fvX9SH-a1Skm)x&K$zZ@c3VU^@G zoV@8V1t;-HyqTws;9G3w8|R84@XT?k;oU1MD}>0hMXWAJRYrbOt-~>-GkDXqb^_h4Z3SRkB6=`R)OiDs4ZD@}?4XZwxq;pd!dU`0X#_y*Fq}f_`K6 zxm3LHKId4lCcb66yBsyd9(WRx9^Ef7Eq1jcp?^qKdO&g)>O^LLpU*GvqIevOq~AeX zlOVc*TDt)#$!>B%LVJ`7#|zIeKJhH`W@2Y#^};<);)wJ=!cW?8hZu6Ocg1-ncF(UQ zt=uF6*b=A6U|}DvYml}w%N6emWHf}jnC0=umaW7GXVp9u*WYb#+VG1=!#H!VavH7_ zbm*HW*j{xVvP(^cUjG6Ejnb_T8n?f1qxbf;L0N$ba7#|SfqzDvw|&kf66Nt3oYZs1 z?FYpFXc*kPmG5(xx%EMw_{3Ar(1*od*9##2z-p{zdUBGS>~o`^;w``-ip2@&p-zvO z-6-M6*%mEH6kpuD#;`VM+z7O(u^&b>D7-%^R2}6j$OB0^pQSLDm^4F3V&^G$f*>|o z4K12zDmkvDhE>50R7_uX0x00poLgNV5>kDWMjZh*zw{u-Q`M{C_)<$}lwP3=YNt0w zmao?Rt8ouegbSJRvMeAoUeZ_K!u%z0Ytk?P^6LF-_$cMqY#NBI3NvNa-Qgf+%dj;n zzp6||rpyy2|DJr$`urck1GmuD-}Exx7qKO0>Rk`wkpoVB#vDqb5_Rx~UXQbjaG=k6 z8alPIl-ki^_6iNmBX4(Y#`;d1r8zr7Syp|}4Bp$mY>pfr{T(8%JIQh)nojF7<CRz6GvNd$4^g zOZ`)NPh_!t4O@bp`sqZT{j}0gMbzYo%)pn550%bFW*WgjYVHe^26|a)7ksQSeD$LMkLn zib?~slSxz>%-G?4Hs^#c55>>orvBUANaQ9baoXLc`+hD0X>^*M5U=X`}j&PYis zLMqC{#Dd3@+h|T8k|c}$w49Ue6;ubu_5hcj837x8@8O&uXo!}XLXE7$e1t&X;^b_b z0)Njo46xbk7rHNYMRbVV`22!f=SY&e_7|i$PjwVNT@mtWnK$Wo!y~Ev7-fGqQrI zikbm?0!;-1Sx`kR%K-+!-T;&> zm^sAJ1;|{mw)JO9SBXvOIvB}7p<|=dae)=<>RHv#sD4Fh;t@BSa@3ac?5kZNlW>m6LKRK`(>Vm%#Z#(A2tYC|eidq*@o*^wf9kNY8&In~9wK|?j%o3;81@6uCPcZhE zGkgzTzA~{-l*bR8Mc#x&LKk%HBiPFt$JDwQUNGG|6)B_Ceh zf!h>1%y`0VOsYDNgrbGlJUdNdLarH#xTL%BvHF0tS)`d9zh!x-?ScE3#&u+H|6pG9Cl zMQmt3i};zep0l0WfBRWiGFpL>o-q;lYCqdfeHwdYPddMPzy@H5Zs!7#c7@5PI?|~Z zlI!nljv@uWm`WZ-KmT`61=kVqe*s^a6OdX$OgbnI=L4@6^c`Dz!+*0*nW$<)Gz3uj zJfx#`211&vE~^aIeeBR5J~#behOnP~HBdJC%_K6*;mI5IJqGKDTSCO35R9$(T1Y@m z)o&bTF_!Uv5VR5+g??;y{+2T_(Eizo_@mDI2jAhJ3c{Cq=cO_3g74b)WALy}(at1s zHw=2u9&_vkq{yYf;wEvl(c~G&4r;wUk@UaNT<7~>n#cQL7`N*Gxg{~hvb%(sfA1gv z6_GFs5D6qSKQ{PX{>Y)RMlTj@4qdWBF%0%7ejj8aGMQNj`l9C-a?0~av?l5ZSLIKf zB0>F0i6Df-#~x@c$dx|N$XMmgAv7>Sv9qO5LmjRkf9+IifGHpJRUthUaEEXOQDPou zfFduuK_5NC){kosKWIz!+97M8f*mXdxbtQX1_e>E*x0$YpfIVa6+N(1ycN7#3UAU3p2C#H`yQlG0(_&pP=Asl}xDM9`r9shnJ-!;epE z72>XaX>z3)gqSpKfNriAy4KYDov?Jit0+(VU7{%w(FKH>!7Wq$^cCLWhY85%hwFW&RIlF@=#`MWi-`l z+5bpE{%nKiX&DPyV0sq=JW*rhJI&YIcr@yQKa7vbYQ(t3@S2;{c=M^ugC!fhE>fhpD z8+`b3;FIFnesA2d`Nx~}=rKv9x5gdM-#Jtom+Ew3&tdZCyU32LYl4EladGsFqE$;_ zxL6@@w_pjd4<9xM;6l3~<{IX68lFj@Wn7#^Bp1PoEeemiIzZVwW6nil&Fr98?^2)P z%gNnHT$V^?1X`SC1w_c!ouZc>yd-*MgZ8$eihtKCZzq$51oLo=&8OIU7~{Ru5KxVM zO8ni(CHB;qIs(ZX6pUo~fn^&QLTrO){y=&03|kTw^TunA!itxtzkhDxWF%6XT^iL+ zlzK5`>et$`$hqkH9>AL5Z_j0ga_(4{%Y!D^;H z02q4X-bnsj#NDA*xqKCrN>lr% zaDZ?U_=e9v{)+Sb%Kxok&iLfPNrMpa;Fr69wjD1xUunn_1P)kr zzmgH&cSmSDNu5p5sXv}L@w}q*`3{TQjUtrAE>9O2NF=#cgFC|JW!z)h*i%qr zrz>zNGnezvAq4<8pRq16vPyWButMK(@GbcgJ+6dIMv+kboQe_>oEVKNJE~2Sic&`Q>lQ<+*+{#J7^TyM13l<@D9^P$5dL!W%6Hgv#&9y!n-}c1gNo?y8n{ z8PP$ni%chG6Mq;l5Dxp_;5U@z>BC_#>wk!|!_ZEa`gZZImfFw8LAz^8x3WooK78*p z-)RvfXfM@w)pwrcx2vxfG zXpmz$+yH4x7QoHM(;~*wb6HAy@<%L&jgcVIiIeO*Z98revG#Q%!3?fq#jo zgvBf|?}?NS{jpprUSAElWGKuxXg8pePt-AHelSiGPB3uM~ z?ZC|mJ{ck|o_CzCQsfoEK(#EcXRdzVVac#pS-#{x@G9ulXc17g1l+4bncAfiiTWs3Ree6a#23lshjA^l%WgbeeE#G|R$n9og$Q4kS}6W97ty zC@pAX*6Z#x&okK9AY$)*_~Tzo!S7TxaTrCsXswZnk)>;T+rXWE1nyaBgkfP#Jgwta zyve*TQVx0<`LTwtze8^N6DaOAntcuMr5IgSWLk-_^r-VUbh;r@d!OEq+~9s1&vHHsUi^|feRj?*dqYCe^r8~X zsj-%RhEGS&5b`Ax(DR;zI4{KD)gY9D3fH;&l&KG2kb_R($trz~$m6}sCs6afK4YZJ zln!#t!06QUbk2ADGt08k837+uvgb9AyJdiZ{QW@?Dt1!YbF!|zGUPp)Vp!_K;EP}8 zD6aHX8&G-xWeEu6jWJFqcU_-sE-)~8?%@@Hwf9gFvm!F)zb@+8-%66?2i>Tbnb|-D z8j*QxNSg;){8z!)>fZ{+sP$KTcnIPl8kAc3XCoMbN!Us8Dk1=PO`iFOm?sfv}O{k2!uE7^Jj=tW5R&p5-x=~ z=t_vY`>l=#wV9T2p+kpZ$V-a^vbFtKzZ;g3)c8(atV^3Uf;V-68yn=@=<8H0eSO_0*Q*;rg7PMU$wb>LEIV zFNi`OxJ|Ot?Rr>ZSs|fTPZCAR+CB^l5?+$sYYSryl)nu)l9xwRD4Y3ew_ z@C)E^B6UaTXf0Xa^*$@hoxIfzFw3 znbPj7ERUyV&Uci5A-sZ7OL~_s7e!++sl*1Egxuy8Y=na4OL0{BQsd7fpUTL9(hi8N z29ENez^?Y@c=?$Lii<6t5bQ9={xvw)(EP{}; zJ7CHWO(~-?H+F4ty*A}b&8U)$Wao?tU-l?Y8c2v}bAxH@fR*eoU|!X>#>+ZP!zUoA zRK)`_(U05!F5{>PuK8l?yY2}*YHT&%R;Zono2uXZsK;KdJdR5BKox^-1*!1WYx4Fa z>EMnd%jLElu39eEWs%wGhIKOe;A2`C~$=Z_?@lAIF5jA{hFiKn_U07sS3o;->nOe5mV8(yV@C7rr< zphJiL3H>*@@L$#7|EH4ipAVuJRr(S!>FwM093B7w=)Mk_9l@fPVvl&?mzO(&{Ig$lY^MjK=C6M@Y+=s^ z#3tyVZP>YaFU(ppN=zBu#{Oii$MjvKaMyIUIR51jJ~!(5P!GSC21+J~o(z%7b^7Wz z)^5`uy@q3IXGR)mGbOLPR)wP11Ydd$rM(E;w#R#tn|j6k3f>nw zG1Yy3R-%1A9#=u|DA*uf1kyh}&m-pI)d}}rqS)LaR= zNd84q;N~A>sVIpOA^Ac5*)QBc_7JGY7PMh?g90$AsbBoPobM> z%pw+DoYQscr8;!pZhT}TaDMYbmqAl| z&gaIy{R5N9I6n2+Gn}xi9X+#dofo7%7`vvOOA_&0;!^9tJGwF=$A5e{WnP@JD^Ma4 z-+cM-Ju7hJE>;E_bG%mQd$s5ZtfEJJp)&Wi^0>P|4Zb93_Hy7I8cs(_UW_qRZlJ{H z;>Fnju;iU1(mBy;kB-Hp*sbIM@F^|`e(FFm)NYi(U#mf{;gGV6O<|4K?p+rR@!(y$ z{QAQ~Nd_QK(hw4!w(}69(SAL%Q}0Gi^(Qdc!_se!Uat(P3 zM&9wshZPu$wpU+bZ?V6V_vQ^%?s%ma$lf2tv#+3GMN4TZblvEB&n4WVSnV)i6}D2N z$7{FUeR<=aL40|r^>5YFE8r-Izk5}wLBj%Eux``5U8XyZBCb31)yJ>w%AxLF~jR_^QAwXQ1Be|RP&`3J90 z|En@vrQZX{zRM`)!lwxMdiFhzl*#Q;XG@0yzcsDa$7Y^GtsqV$+B?0#w%`7XQ{A=` z>JPisj!ZIQMc5OWZm2K(iE1K+83RwtO4~*y2}C8M zUUJjv2-H765MJtal7r55k``kuKE52+td(R`fpk$(_-&S2RI0C5Ot??XH*<;RH1Cxe zZ@7wR1J)z?$J^h$NP(#;scqdQF44J?3$d3eM+PcOrlVo7t1aW(ms&WouV@@#^-`t& zuXqW*YadBUf;bJrgoTMx3g&43$6c;jBl6*}5vJ8eW%&&1(x$(9@{Bl5@fC(2T|3X% z2hNmCSOzt&gTKrUqmbIKue0F!O@>h%?b4|`)JA4@yRfqxP*md3Hd~5+_Gn;eeYKCP z4AvscZ=izd@}^|Ir}ZfysY4KnNNAn_^zXmH{k7t$p^w$RvpEbbo#v& zHrw>>lJy?@=VBi8ob_xH?$W0A<~x(8h5#w~~`cuLUQNq8=LNUzDe z7B#URTAjiVKj@g#^@mN=!C9bQFp!WuH8&T|EB{+MsGf0>_Ej4GwulM`WFISR8umJ4 z!R4J9eyY?@b5EDIW3$4+{Y&<4etw>UZ=xT46H`tqtVR@nNcU2!@V)_vuSUbZ+328| zcQjYx@OH>|3NYUD{8`HhDA)}S4Rr8K&1uZ>8`-);mMlwK7T+ja2QHVRkfS{%owvmE zVu%Y_xydXy5r31!?okBtNJ*#y=q!m4s3<9coh#__3QF)TGH5k}4y@J>%=|b&{C-ZsNtyqjYHUXIVTAN@J`EowAa4 zzwm5~Nv(da(^wkfElhVA410wCN0<|}S6aG%TLVSg>~HQ>N5!G;lZc!d^sy<``Dm0t zmV=S)f{#2b%stk>u(_uouZ01v*Y!H-3j@cM&y$dptf`)jht%g+)=e<8;`8gtpQ{Sy z*E1H@Q^E_;*(8z9wXwP#F>ixhkE^nW;+dpvZ(@bIYcB(5mY+;0Sf^GBg(-KqTRuK_ z$K&|kZK!IBm=57@7CR1DhSWvxz32)Ah=fM%3(qwM$ZP68)8prkJY@kYyU8)<1|cnO zC(Ctg?1CL(+4Qw&8+_swgPq?Aw4^7HwaRFTFHwF7T}vFMWB)vT@WA_kMC$ zSV4Z5KZs}C8-f z!@UWdF5l4H_{DSIAELhv8hp}6oKe*9q=Dj6>so<~7KGoc_P$l1R}}NupAxj!kJns90g5LmxE5}XWoKj$ zbef{-@J7g29g~1}NUOkL4ol6y3oQz}LB`Av46K6sU}mXH7gt*p+`O;hq@kEvSiTbALGMW088Spk~X(2?Pp?IQ9uOeqGU7eg zt)au4SY&LyX_2ygqwMgx@yMh`3SH%4TnrQ@AMeQt+T-@Pogc8GotABJBGt#p z&P%@tJocib1Pi>>OEOD%Lzz5kSnCv=h3GNxEdX_%wqi{(-qyvgaoPq%-6>$v9yq`? zrH{p9n-;}b83QJ>%)BZGPS3NRa?^Jq01uBiMwWYpB^VSjx43R)x>IrgP+8kjnNyPg zJ`=QO9xLMhaoN7q+S+<nY#_Ga$e0D7e>Wh@yZTajdxf~CXg^GeorO_Cmt_psNh7|W?8cy+p0fk8^-q6F>z zBlLdln6Xv%7SdDRvPDo-ybf~**s$}B4*cCS=UpsPWN&{oTK|%D4kb-qQW`73ZgWtz z%%3d@D9F~dKLSu*rQaj#Ru7j67c4No{qVYNmXc$xgWt>Uoeczwd!;Z$RZWx)9q39vr{GmWgIl}vbKRMGDe;G{8 zDxff_<@(+{fy5UF+ANCU+&rLI@wJ^&aAj%%q-N0oVMG0rvpi3ENHu z_U0g8%aGtCK6wB2P8jdRov{orH9;sey1rEUeSxcujfA35=dYwKuy~7@ec)CirgC?f z;y(K~giqU5-3#X<#tBP5FdAFXLMdyn$@l9=<!M60A``9ZH znd#Xc5qUa!B`QQ{av^@aZ|K*3m#|iQ{e{!=;Ua6Q{GQT#qicYI!r#9_i~(&Y4SAP( z=A@*j|A5M^1!tiL;3c!y$PcS{56SSB&2}$`G7?>dn842ojuj*K23)Hk?ZM;el}iu0 zu1?*a5rJvox>3{qR;U|dB|&5OG4@N33H|vGxPRcikX%`+u=Q?T(o5XszM3!GZRh8g zZ+NTaouDuNGuJ6M-0XArvKxn}GyshbET35N z-B=1iC~8Rh?+S>GR7qahF(!b^q%f*~-Nav(B7fTl>=~g63r2UL4Y*J^nKBT+d$we} z4x2uT7u4_~v$jrFq}+3y5-RX0|1xTgi#nB9yY#hd_DI{juEnl)_WW@Q>iLk1Lw8GX zPycnH=52xZHt8a&(O~I^V78;)H+hss8Xt5S`%ur7Ujtozktxce^nGab6vqLgwnnP* z5}B91ROhTMDYPS*s174q+rKOO{>?Tj4v8#E-U{ja8oFM6#UQ@>I56P!;|Qv+9_sDi z8!k~5?ktt2<=12T`(7-RpbD&_Hq^tgA4t}a&gr;7hfnU|3BZr1hCbecZY`J+P$csk6yT14Z^R( zQ{pet&UA2S*X3B033P`ZMuf3Ib-1hl_4Hc56?SV^>ctuS%ZmQ3aqet^Jz}=Qvj4|g zGU48#7ao)*Q9Ly;^%s~3+wa4+^Ox%c{Ns%c0>mWALb$jd!oBKJR=cHsA6-nI&r+|% zB_#5x=+ZS=t+~v>877ci(#eF&^06nE8Px31;l(NK|wFh_P z<=OrZSg)8tL&O(XghQwOiZro*W~eYaJT$a)#m4SiRzBHc#K)5 zBQNG5I!yZ7h&RdxCOvzy2diuaEr%OIT1{U%g;(04g1r8YK6jQw#-P!sT0~bgcDLls ze#f*gd}96Hw?KL7QlCq$N?H!teqfJxi7FZ2?B^lT-zD?Kf|G`-@2evt#|w5)mn>1z1yJ4gugVoDvsnAt5v|lW6sYJ z9*FEp2vcb2XRaRrx=LfB`9h2W)R)Q+9#9%G+Bhy(M=j{po(f};zfY4oqjcG0Rd8w_ z=kda&TSZ)Kl&p!lsXw32un*RyJgKkHmB|*PaD3rKMX3sAfc|^(Ub_|bZ{l?uWK}Cw zvtplf!_TVIecA*E2aHRLQyF_zr3|P+vi*XyD{6QN zh2D4XdJ!>6Ymu20Y2MNr1RW$H$z8$FL!&JYDXa|MmGc{LQCppuJGmsGUJ%e11AO;9 z!6m|gu*N?n;9o#91561D6n>b)S{`Xj!L32VlVhXaIgmEmAs0soeph1%`|eel+@#q% zc~h@mKV34>JbV_fK2U#{VU11cG%&N}ZsTedMxDy+j<0_m1+8n8s+(#@$h!e$@3Efs z;Y8qBf0z0udAD<(#pnT*YwU&u@h)5SAt=9Q%&;K-V41GXXdVpga!;VP`&}onS{d=<#pjf) zf6F1EK{Y!L8h8`Lf4F78w!wEv%w~9rL91L?#wX{1-=AzD8La}`O&X)9YffEAFrZIv z5B<35YA{KSc!ex<48ipA#uH>f(;buE+1t6U*fajBsXOmi(C7iW0`VeE_Jn{UQ6tpk z-23b`R8z>3g;L`rIH)Ng!ca*S%b}Y`c(uSX$iQ+^KWGe|SvLD^ZF1e@12S`$@0A@0 z8D~r8sOW9Y%FE$9`mK-%%iiPEQUItYTz!d!U-qtXW`A#x#Q8nurVbi&vtuBC5+*n) z)81qmKl?q5P74}FcSie9Fy_ko@6ml>md~(W*ee!kF86>dfq&Mzucw+%JlNTMF_@u z{^Mg%GiAKV1?-DpxOSG^NZq(Sl(s%yQLp!qgD{JVb}j>T`ldBwWF3x)z;Ii9v1Ob- zv1$WtV;4M=0r-;RAD@@rQ^G0wnd)lgjMa8s*;BLS?D1-;Sog9#!Hv*Opd-1Q3YOVH zfx+{hL#0%l`x*8ps92#4Z8oIgt8W`a;w?RrfKn^kvh&^Ixg*peL-c@RVvxRXeA>Y}H)?!O6yQhv%-taDkE z+;0G7XPn)1qv+Xs6QqqFmA<|)LbYmgpCA!~1K2}66qn1EvWFaHq<+R#2^<~-*FjgW zKQT8ik=@}E!(e9%+NW&rf`xpteCxqMy=9`*;1?3rawz8lfc)d;f&^jP86Y@1Zl*S| zXsd_LW}y*Sg~+*yfBEPS!b(n4ZGJ(9GXZOGkQcYkA4tlGeynXMPjXZEq1DBrpCfPx zN!5`=NBLVS_L&Dr#nvkV2CdC-cuV}^?q27@X0k%f;zbjJPe!8)bY8qPpK)}c-}GP@ zwBR8~yNmZL)_leph{L|Y(jZhy{vAc*naT2&1JgY5-%uV zfhIU3f;klycALKR98Qg&10GWgg%oBA{YW0c0wz~0T#XU@dv&_J4*lHm`Sbji`3P*L zZ_tr+{yQK_ety<``S#=F>YsY+y-L(?)4vqEv`GX8=v8Y8vA-bJUCyUr=UPb_LoFGW z&x-J^{_6A=D|@u4Jt(_3pIBJ>qwO7KSFvHs;wGl~on+@ng#FF+ZDIJf@Z4fw)(>gS zw)A=s`XB}K#r<%{avMlvm^$jvtG2GCDc&p^;+_Y;VtyEbqPWnNE1%B?#x_TzP3SZ{ zw{D{LKa2?6AI=kicD{&Xw_|bCQDDH$1dN#Va2FU4Kk;^N`#rx`TcVwMJ1eBABB2`a zjg5Ah#bsV>Sm-dv|h$3%mdRFdX@A=q#F2aVBOA>T%Y~zg*K1X17ip%1h_dY;6SOrf;PZCH=cCEZnjP5Q<)31uPfD! zaCi2}*~FKjpGE&oV($%H*+6a&63!_wfqh~4se@_ea&lm?f&6A$@!FPfII&)s-vpxr zjBVGC8U&}>8dXKqu!J}ooL}~Hk_eg-|JV66_Olg9*^I%nKVQego*06xarc3 z3H*?Q?G9r(wfg>4x}S9WS0{SnwLfh#=!x=G;S9KMO`>H%h*_7Hw7;PBz@x2Zgp*TH$Wp;h2RO7Oa4=sSA3wTnYgTMGWq#^56*j1#1)mNw1%as!C@V~ev!1w9)c7N+BkDJ*cT5{<=!v_=jzTY#DJX6}T|KA29 z$bIob-2@X&qwmH(e z3XSd&=XxrCqq#rigCJKq>ir~@gBN+BuEsu)4$%mUwv8>If-kShl1NB5Aboya_<2M&@fl7Wl+ysSYTP0wi0le= z^@IlvepwIQa^8Cp)DGwyv)BI*Y-zH*>oinXk6sbqduzN-*9T$BKd&=w{$~f@)QA|Q z5(5W`V=DIp{d??gMq_s}#K(q-maHHSOT;?AWo)mw(RcILZXrZxi*gzJ_&v=FM@97W ztKYH$m|*Mzu_@mwbM?Mv-t4VMPTuLOcpbv^2iDl0%uQ@hW|hNGSIVb;>r^*3;|?U6y*Oq zEk*P^>f2+pSH@39;n=^G?Udd)pYQ-PsNhnTyf)@blb8vBKoWCwe0Rq5?hhRrjJXAt z(Zx{s%=6!2WAy3(%43{3nslj|b z2<2JFKaKQ_E<_wax(d)waHOY`J-`yZ=Z~1NSWsem8Av!V6_;fOz-^L}-0!Xe@|x(M zLlZ`rUG1-=?`I1&$BCp^s!uu>POT`$k8X29d1x1UqnAX4 z|F2qte&4C1S7SsmU6fA8SO#2mRZS+C&QK%C&5`YicQ%UuFCn~5mkK02D9tpu$s71k z!e5JhR_chY;s_+8R~gq7?yL8ci~Gaq2fq$0Gu7CB4W1GAIi;;^Tw6--4BbG`ta&cW z$R`h{z<3335ME{JD$@7WSTjs*9xy>01`xc`lK}YwESq5c`3Gs-^w$GbmtTBFd;Fss zp~vIuhjh-ML2tN@H9w_KhX_nFnIwvIahSa`IA|Xts=S8?C6sj45dT*r5;XlGq7GG6 z*947d0F$i9cYty5;KI=a0-XdGrZ%$(+9eN^lK-7rf-JNI4OF3Tk5&=KSC~CFWF>aG zxY3LJy`L!cCtEHM`3l4swC_ zuR7RZFZko>pexiLP+Xgv@mlDP#Y6eA9~F0(j)V>Wlzojl-PQci)|=b<%K`k~FNYuM z94|!M&weA*ukoN2wi(~>zZr`yA6^7A80^=OeD`i(ekGq$EnUl20j_H8R1sH?zn1Xp z&=M|lAA*2*SyfR%8EavmUqAdTUZpuEB3)LS#>uJj%A=N|nc7z}_q+{CJM!tfZw!ov zxw5>3*1pz*3*doNG^L+~Rdl7&UTlqQhOVpki0w^iNWDi@QAa{Z48nJjAB$e;V9-WW zaFHZMDNNS}JA8+wh;}KaBA>P*y(pdx<|jls%`4v$04k3UdbgaY)imxxOWNt1 zna8LeC`sP(<^{-(&*bYLKb#vwJc80))~j{wnt7>)LARpwO{sz4 zS0Mi*X}))r-+4E3=ZX=l>;aa*`8m%4q=K|`WH?xn*tYmZAQG!*dMqq|05JN+TrruR zOO{7peO2~5_f}GD`Dew;=Qnr8eQRlnaWY^rkkf${K-Z!w)ZQ@qSi5 zw(Rm%qQkn>`jZ$u4{cP1)P{{bzYHJHYY}@;c=7o%QU@LcN3r<8Bf8jAx@I>*7!3`! z3WbttF=#NlFHT5Kg>dpUz+an4_i91>PXPB=dBTqT`WQ>(xYx?8tc5odc)I=i`d7rY zdn%Ppst~nf_3|oEw`s#z(k_KtM~ThZER+hopn2GIH+q;AO04ll+Vt|qWxf@#%va&u zEI0;39RN{O0;N6&X78ralzMn#2S=dNAL(3dZU<9;250kL|0*9#sR?l;6>d0d!=f*x z*nOa=Li;m%YYhp(OLvip;i+3>GFr8NN$;xE-Gfi2O1SMC=5OBZ^Dk@;xyMt|+W zRpxk%=+Vl!uOxC-Zx1O@dl==qnO()wb-mV=%%}!U4}SL?-0RfkH7MAgM(!J%p29R_ zl7F6;N2kU4&PPL-C3Vb|WA#pyl@4GyfiHeA|Rh<2=!OYWa#_Sj2ElDwAU!LUh5MN`Of{4;EdKi;<9J$0xz#CBFuY6R2h8NY8d z%yW1*`i+z10xoD@lmBes7PA$B_WV!;rM`Pp>0t7P=QdJ8YJ1208bue!q3XQ)OXgH>A60t^J!<$2zpf@LkB!JA?DCs!wg z;q38%_CAj+XCzi7!0*1jWmoh#X+F!d0a+?X1jjU>U>-L^Go|2^I8)%8;nLtAp^#JH zaCU$##1yQ%`+z)CWjH*%z76(7GqWt13b-(~`hOMdQX;~^AR8mfRn1 zk(xu0L3_2g!Ad0gW86}kfp4X-e^IlsXqd3lu2Z{aRFVO{hJM)hho#*(;uf@3jLU>T zw;?Sjs2aNpI_R1HaoYzzOToe8lveQX%RL&tTIQuLQDP#SNYGR~2 zT&_eyqW;$9SI)jG(>JdKU*Sw84d5p~oloZy^OH4xCiKhsk){c<3VPMXuX!40OYhX( zNpPoph5G=X&DpZQ&Fo#ml>*b0bElv0?tJREHs`L|RA9c(H!K+U=EItT_SzjU=AuOIKbsA z_;}C?OuHUTU~G2ddzF|YZRq@kUJ+3+?+5#BZA{BCir78Qb2*-T1Q96q^`#Isu-&2XNHZ94Sl+B!ZKsRCS#)3_ni)f zKdIJWs)uicFQWb-j0_>N@CdL;!N26w)TcFX+ApT$P3_RyKDIxL;He|@TxJ{epu-Mx zVIvXp4lj1c)2V|qw9t9}A_|-S8RPwGkgIYeqEtn9fu6jK(0PsK!G@RT@&@Bve`$VP z)Q>eWaD4Z~HNrlRzhArd*=Fu3b*YaAsW_pjoZ_!T!nei&wWC!oUH}PY;Y3ac(DuSamXwB%c)!iSHYd38i z==z|Vi4;*sKTT^fpu(aO*=N>=jMihLq0ej(UUImgZ#cpoTo2- zob$$4kAB+WVbo|npV2vg3EbEG$B z_{ll5;UA)9y=qB1iXZEp%h`UN=IfV=^p)4b%hzlKv)^L7f8x&Rs0=%lI1$kQe0=`g z<&GDWd`M4tFL^~kI%@|fFbFETz2 ztA=9I9cDj{_Ls-ciMAh-@szsEi336g<@rpUdT;}vyv4|wo7(vErz+uh2Ik20(Z_UW zSH(|xQ|GfBfZ@4Q!k-3hGDyuj?D#R>8-l2m>D@`*Xj8JFm6{6{x3FHuQJvx-Q;x`v9 z?%XsBl6CtI?|#*PzOgxcrpk zmiT~V(?(W>71r9#M_EM<%DZ!^;tjxSwTW3p)aYHG;1o_~SO!Y`yB9K)+$_T6dgeT8nUn9^& zEc}IIy%!RV)&>1%-b|Ix=;gaJI<|}!lP^)?=trtBbP*rS7lnIJ{j+aR%P2_3)pDv> zHOELYl4(C2AIXk3m})XJQ05d4&aB2^^>(4fACQG)F=l#SSvy4~QY9lT*tAThYEZ!bK-JV?AS773a*#|C3$t@jOMl@)jL`QK45k)LUlIr|<@9TBwPc*VY;P8e zf)iocbNTZYA;%Bz_YSHL0$37=n^+glKkm1=6l0k<>9$5H3GCi)2#s}`JwbP#o3cHB zqt|40=+dEl=ibQ&%GK}dw{_`5%7hG?M^(bs-GVrzV&vM*YSu0u)_>+`wV;a+bz(^h z`{iswsJc#|p9Lw<*u^c-A{_O4V29B~#fgU-s48RWS-(DM9`s|(8<9An(r3TlbT^@X z%rPxSmhG`b=y=pACbMqHOHvtukH&a(14yNftLCOtG+H0~f!JJeOs3z8=dt(vDuBwS zes>oh`C&MRmB5Ki`xwsHYx2V^ScXCFB}u>uPu!(m@!11@Pe@eX105Duu7}d2zXi^h zC!0I1m;xrjB*Y6L0yRnek2#h|I>H>6c}0RwCF=R-MlTfM11YTz3>0<$Q>9 z_=(4EC~9~iX0_)pvHG=?-;`hw@4LNBN`G_eI@d`Ji#tNpWph06rF7l#N80g)()R?~ z-6$D*#*5GTA&`QAd*=9E|G+bTx+iICjp*}F1V5V;x@Aw6sVG|2`#yc+z!N1-hgMJ> zxDPupGfy>~vb$0H>e;)GV@_nXJ|}VOsgOI74hXAn`x9=RGt8ZkJ}VqLUrd_Do1?-> zJKt~$AuE!4i-Um+a9pCjE04E|k7J2cdvoHvTl%h?LV~jlY(bt?kfS3Vq+7n1Vl@4} zg7lualyt4u#yv61X(!p%xz8hp6rp=OcS0afXcvFptl(WFIO5~QD*KM-V6Z$u$mxLp z=Uuy=2$~;^EP21agpV(QoQsTj5~10L&qHjJ6g;gLmutp6?%Fy1Eg{?lP1AycGhA3D zn84<%+RtCiva7MdfMIW8imNUUu@iG+jEucFwGjwheTy^$+67Hqwl zLE#o&C1m-AH&1++`%s|V=W{yUlJ3F>svK5VMqLh#p)OYr`(<(Hh$mXtx+_Py(#rCw z^~2}SDzI1H82Q%+MkIAT)D07~D1NA?{l~l!c0OoQ%fWLT2Gus%f-TuoM z$+hkBIjE)=M*=3{50A{r$x0khp~s0AjC#SOqE*4fUbmg8Dp3z+HfH{A8ed+o*xbuJ zL$^yhVp4#Kqi?Dg2(8Gn(`m5X_DC;c!3cDdR$o!sF|Xs)JLwl7a&N2+46n1YCG4V5 z3ED{7IG@@vfAMsCFeCVr-ob?!{IUeb=e=-+U+!_!Q!g*Nv)0YhC^Yy-eQUi`Cz$5! z_}^H}`>1AaIHgF6MF3x7LH2-=tksKhpy*h7Rl% zWzfdbBg=EUyD$rw@=^uW{HXi?JZY0sJ6LGO@ETURFX|qQaf2XyY+!ntk{k37&q&8I z7*gRIWKG&Gsu`DUYqYA(vGqtgE0CG4TI(QJ<*!_Mya=+lr zD*N#K4x!?xrbN#+-(35;?giSK?q#M=>R|mJjHJd(Vr1SmCYSPvp#J{r4@|6M`?AjY z03nOWyMKEQd9&B+VBHzsQHQw3yL1_BG6XLXC%Z62hB)dW1YIO=j-A~%wTUZIhL z=C?$l&{ajR{+jVLr5`#9KP{$}vKVhP;Hjuz?^tN15RfA@Qn|YS3)!W&VuvZacNg|{ zw0LppVg}J7N=`Dwv%&mf87=aFWXvsoAXCC4@_3Zg?cFY(aLoAV&Q}u4`Ce$!*WUi7 z22|tO4!M9F&T>8n!of>5O)|(k-|8|WymDJpz=JZ|O+KV5AeVHAbroB*MNNI41-(-H z89M%GD3n>8g(q5$)xaTG_P6OD`xFuqRs4zihXiaXXqO zVoAKzPJmj_ix4WIm#E1;*B)Tk=@!?z#`S5S-@ww6z|QXRc*!+zwWeCX?GzMIn7ha2 z7ZigA*>ji?+EQ#cpZa8>Uzf5P$qoxd9$WMdAab^bQ%*l>1eeigT%yIjkmK8Sj509I zX+M&4+g7|6x^84%mXU7vR3K8IA0V7#;kgQ?qja;B6C>v7n~Qyc>o$1^Z{{4Yo2BrS zlhr~kDhb$LFT|+dzvz*p7~BKw*2vJYpp$s9bztmrVN0_T zH^uU2pBV_pZr}AwxN$21r(RQ1cnqfhvQSfY0LE4I7EijJf?!p6t>Uw0OWyinmXQ^4 zH*wc1s31n}NqeD>w>U%HC-+{<_q=mb&D^4FC0=(d^nzk?ACBb~)4k$I`>pe4((@X( zJbRcZVIUG<+UxsD@j=f=32;?MMucEKvP-?BN32fhLOO1#nB%UqFId`8Btpj7Q##XU zwT|1E6B+kvDPn&L^d)OI??$-IG1QK$Guhen5Obd2YYylgczXBKGS6PiEQxuxULAPy z{h!`;O5be`%!`Di*mBsYo4ew*>-g!FbF?XkZF ze4LMFer51EHdqQGm4svfUukEH6u2a-5iE%18L`gPtC2=t4R3S^|G808+pAwctHPI{ zd(vLTBQ?Jr%PF9J&m;Sds70`he+t!Dw>65BdsK1T)_F{4#IJsMj$QArsLpX$VyZ-+ z+|-JZkw{Wlm2z3y8f0SpqYDjVsHv;3oq|7{$`00Y3Kr#TJm-w2#ZpT9(?0*S16KtC zxnc9v>E^m}@(m@=pL}8HkQ)#A{YeL{bJ6xJ7EYtdQ~bEiS^F?reqmb}tJHx9?P0>~ zf|6rTzlK3sd()~+Wa52ULvlQ+pMPKC?LxRvzu_re#Ixc;CE3ZNr~k>L9^4N2?b?~f z{f9R%nWjCt0-OtP)(drGyOsv-5&2$!un)^^E@ddxBYMrPy#-GBnotGcIr6`rdwva>`^~ zhtmg6Y$+CE%NyWo%&&=kqJCdK!hHQno6l}tB&*})3On~s5*3PNuy`q&TCMAOVdN$7 zm-7MiPa`?x;4;GLu=YNJ?T@h+e8PH>CH0Jq7zZmk2%=IvVY5BX_O{l(TaOo=I3Wow z5Brkoh13Zu*4It=-MD=vE$MQ8@PL4tpHo8!^cZCtztk0Qgn$<+KJCwO-gR3ec3z!C z!)C6KmrA3QKnu=ELDl#jyta%1CUwCBt=%84nU9pW%ZB2dxbgpNwE3tX^_Sz}4v_e( z|Min#U(eZ);!z|2erK0cEmmlsc2o8`9URvfL_He~%6$}NgcHNF3z3k0LM7|4z#Sod z@@6v>mLWB0e9KB`l=Ndy=ZB|LoqV&sPui2dstIzGQ3n=vrR;0Yjgx6_C7@4DRTY?s za8QEVg!1b(FH$u`Y8d5bpjpC-AydF#i7T$glBU%&WfitBsXng^0!A4t2>J9c*fis? z@{^7^o>m!7`97g_{%we*CTJ+cu2rS-;#^+#i`0~MdrYHd+o+03$8g!s{&X3h!XFlb zD}+5(zzGRnudh*Ml+4}uZYk8bje8&myC1s}ZxW}3?Sq2x#OJH|`#VO@rA{)r(p~mi zdPDJCz6o8_{??iBvN1J{V!)Y_!3s-J7*LT&DUyg5p+IN5>Pd)&{}y(-WYF5|cfC2o z=T=TqhAq99D)6LoZdC!o>7Wer;KCOF*k_h;_(bl(t<0Z`92AMn@^pDLU#=@cr@fZfYBoGq zxLD8QgyIv}=pN(sK6_N^KQ^G_X;xErg^I>?6uzL)+rV`hD^YpDqw*$IwsN(?V8uIp z{n^{0h9W~16 zk*OS3QqgNw=~upxqkjPvr8LdfjpY^}*syG*l!W4>(dGGQJo1qt?h@)WMg{(eCYf_Y zpBb;d=oV@(FeR=ZNya?`^r-MsW&426xdNJIp(BT_QxYo9p0RtTZ|Z@$ z$@WUp-|aT&_@gZ|V)1az^7LPY7=&{cx`y>{kEv<_Vsf zA8RjjM;=BH9H55?(*oMn6RQ0syW%T|9S3~4X%L0H2K3+|UavAJ#wP_`8SWpEhIjVI z;MGd7<20kcg8~7rU<*m%g!gkaF`51`#nq zi}#21I|&KsS}&jJoVU)3a}#!k)QF6&M)>EeCQCV$-md`iWqzk);U%ZG%# zIx5N~=RRt@djPK4cnT0m5)!~sczM7Y8kvXw&|Lj&%!yQFrAcm`O*#^&4Oc|cNsZi9 zjg~AGqBd!$HBxBMEr!UYeWpSnYW@anSHd&GwqbLO2=fYMPSP7&@dF5HTyfE3PyWch zlWL9=QT#0_(NEf=T1BAdS+%w^qkEjU$(S)v`%l2$5d*dt%-^}1PI6!0N)>Dway_d^ zWv!0VJ)=%lKm!SKoqC8AM~f+MXq%LWQcFtYHlbWxepfM>;I@1jp4M=3*cE-x7|B-h z;s=URH5XRivUD2Bg6_Sx3v(x`l>OJ&rJ0Q=D9yO_Iz|np%JJ3jCa1~2rey=wnT*?g zUs?oW_DKKRKH!3xg&(C3zTs%RDg&d?zz|T6o%zOjJv_)ax6Q~a>1Vrqh^)pOGdl{| z+o_%DEEXoX(6UuGW1DgKS>GE!!Pind1Byu^8^xKb|5sXIVB`@9)vo1jNj4lwnS6UP zXk#6+^;{~}=sxi9W)O-vA2fksVnBshYVyH&Uuk!=)<4Ys$iV%iy>X9&QlGfj*d6T_ zgnCvH?Uu-sKC>L&I2r0sq&}vYI^tnlkAfNHyPi^Z$-pC5QQ!q?Xe!auGqD6=^|J9w zv|8HQ9pS%E5@pW5oFjy1Zb`6}@TL@CXy&+y+LJBHlArDs;)*&2db#KK z5axr8uN&@mdO5?4&*$EFjjP??ki#3i=oK7K6O?S8-hDdl#J;eXo4L_JTy4{E^DT-u zwxwjrUbDvjx@&~OxJP8kkoVt=Cep4+pd<@jw9sVyxsHp7*jpV*o34=f~NADIAk$>~$ZPiV{iV6I*9*#*SQX^{Dny$1Q8jJO@I(esy zlOUzN-;wI8P2fN3!m|XqD0C*3izO?n)*H+aZ$JLT@*v%lw_R53?_Kblnr{*`6StYO zXV%btYvp1$PJ}+t%@lGzW!!tq?_1|F!ghVID>3vRk7iI(1JncpHZ1rOp|GcF5x zraV;B_D5hn$MM-LP%?UgwO{I-E6ah3{hr;6^aRp12*ttCs$%evgi!0g52w%im=1bMF=`IJ48rn*Kg1T% z`cdPx`WjJizH85gtMXK$C;XUgsxA%Nf~n%;{%9l8fXW_f-!0Ir<92 zGY@dq`aoo4Mk?R%TLK=IgRT9en>xfAo|uwrA*KZ+AYvgU$(fG%c_qqKn0y@D&BnN7 z1cG|;)N0+cQHlo!ign0B%WKh~)L#g`AGpf|&}2 zRHUq~WjqEPbV6G92XCE14F;j=!^!$;LBG52cGu4k%rxS={bYlY$%rHUJC&P6MY(ti zo!}|`nCA0P8K_*&fQb@Q2L)Hg2?w3alGp+Bq-Z@Ywdo+D_&<~ay=Dc@r~l2Q&| z3v4tr&j3Y+=r_2mXoAH#OWHL%UdAfJ8(3?ums8{Pm`ag$zHIyTvLeZBSVZux*6D=Y z%{DRgywcDgQaEwO0ftj8TQAXnyw{p-Gw6=Vh-q)wU@>L@8f&DSwiO zhKhBO_l+EL1~tliG+MtN)WkoJe18aI$k6cv zjOVA4a{3D&Eh5$WV7RPjZ-8%Z`rSb%c1<)$H2up%$|4uU0LN;toM11#+M#9pWX!it zLHo0!f`VrM5La%3{r)4LW5I;Yx7k+WnB8w(H`2}J^GBw|W}G`YQ245?JQDEG{z{Be z>g0vOrm8qED*`K+#C`r2z(3{Lq{&osC+DA&6Y@qnTa=E-04BVaEC>1{jq)yQz8iH_ z5O=3RFVmH@yHp{aE{kIsu6BBe{eayUb6v?NBNlZ-I~pzwFJ6(aeus<5Bq8x7CmZhF zv7Zj3kH&TL42Q$TC>r(X67T{3t}@ZDUu6mHbjMn@DW?ZB_A@R^=<*2Py*)n-ZBLx! zbSTL59|PE}!px*Y?cs;;9Gdc1vKTn@L`|-}#2zy5f|*_<3yngRU4re{Ldx8j8vfGO zEzpqL#!2&fM5}DDr#lGgD0x2B(cN_UdWm`h2JKe&hOv)z3HMKlgt|V@q&A%mf-BL2 z3=}@1-EVOwH*_aA+bNeG&8J!e86mFux52mT@)wVgbn`>H(8#cS$>eSoq;FJ@~Wi925T~g0W#5`&qH*cX#OhW>T+P z8l>aQq5q7lQb8YJM~;l{xsdEPG_Uh0U!`rtpC?U;_oxusa9E?zjR4E7_NkE=xsMC%iaXal#@E-+$w%--XV{+g&B?&q9MN3mEwud`}&upH)SRKe}x=dsJ8Q$-V0cqh(*rUk47( z4pgdV{b;kcP>Nfy47+IlyAuBkxu)aa3XzPY)aah{5pO)m%kE5O z?5(?k@ukaA^tr9K+#wt;I{e@1W=Zbi^l?o}8-5MUJVN_JM)0@sAn?#q;Uj(Pridk` zmIS~UfMrlr^ArT%dLJB;C1o(B+-57f_s|N^I4R=)aSZ&opP;O>jMYoa1QZ8kscx$` zP_Po)Q}nFowl!i)8RQ6*mxIv4Kx=#>{{O$QxJCgL?OhT*jSU|2dL$;G=9tx6`HSlK z;H%4jD(ZfQXR1wM58KBlP@fY(R7Jo`4_kuNPS=xmF5--gZZvVbCmfczo5=4rq$e@j z%j2*Cs*gBq-K#{UdU{16@gdc|4%K_-!mm}~8VNfMa{Xr%i@OW4A52f>8JUJjbttaj z_*~t)Vd1|UpC?S8LaY1b)l7jgHRa~R8~=f>bO|oeazxK7@g6p=6qjw@;_7PVWYvsA zd#I5#EnWDRF>dJBQJ;@QiIs6BTcTUzWvEK^oQ&F!(QRJkzOEGS&|}3crtUJ{jn z+n-^y-jS-`*UB{eUdEBhcxS!gt}KdX4RZ(#1$fx#te=CCr+t7KEUQK3?iI@{2@R4i zOY9D}X3PH~9$5Q_BxVDl197KlO{3|~WfFjOUiYj&P--yt(DEso>OEr>GJ(ZTHlk8o zv3D{l7`yN>UM?y|@MtJt0G z6Y}76@SwgL0j4uJ|DP=s6~SO^?@*quf|eSZ!=i*#;%+; zyH=ttE2K`AeIdyX&FjFNARAiC_G!VlZlT2{sYB;mVrvyzK`xNBDeuy5aC}-=`I?OL z1TfZ1JfG@(I-1M7k{co-+|Vq9$y%eosMS-@xQ0(@#auN3kfhtz&^2e9Zi><%l5t-` z#OXuSe}Qcl+bciZ0Zkom_;{}HThxy+wB1BX(=WF&Qdk2?bfkWi-DjWCH_dr~KV~6J zV`gyF^Wi=yNnmzc=ncRjzSvG!mXHg}4;q!cRz(a&XRd+(DTFp|g>G9_N z&}D_q0jp)zOieg9^J`Qx!e7)I-(n!`7g&E z^{BHRe^!*J)ecf}!B{kR%IXEUZO5!25*WeQEt1*@-pS`A%6GVO8a)SWC!pf*?I_ww znab%*mKUZHYwQ+p?j^vtKVJSNVXQ~~k}y0@tVoqu(zjW(C|*wTT8&O_)!)kD8#z#F zB{Xv+hz1-fgHe|YuHU5AJuRx$8bMf4g0W`+PNB*n8%amSsTC1r4k_=qWPlA*m5f7c=*3f6vmg187vx$tkixvNLu z$$Hpee0mw?E-aZONIXUMmpGpllJHohW?v8{80%%5+;Ch5RRFu@w^T=(Ao1cPT zJ-^Y~0$g|{zNAUEFb8{zM8C_rfcjY-V=B9#;-!^)#$A(XPX$|N)~wI39;}?RuI3Jt z8k6_F!-_B;jd$PqIYNbEbGT=JaOy$1m?Vl{L+Dj{0)BBFbN&lj%%|WC6O84cOAofK z^YbEgpPLPKD5Hl7m%<5w#axX?wJYf^?* zB53KeYMq%^+9&3|Wp42W*yA-nEG zYojz`rx;1e?!J12SemK^Ss;in%B)TT)1o@<=niD-M9>mi8zBFc{UYBn7)S9_M%-R< z_`OdbmERV-uAv>@85=3N)}#p=@~6Ica}C}Gd1dN{He{f6s`uLJxvTV-^8eg9A(2$S=~8wV ztDX6jL^V3nSe5z+_eEUcJrAFa(JHaMLk2oqV5s~ve4T_5&a&&n1(7b& zzrUiGb+TAzzLTRnw*RS~%l}n9w_@2e>;gmEdb^+FUAe%l z6U)Z+z=9%)O~Wul<^->0MtfygOo7Cqp^*Mo$_YbP&xTWbAA5b&N%%o|FQ` zqX#F9j_-dK)7~4_ueAC2tHNoVih1Gn3-i|5hMNeO({m#j!Xo$HPmcs z>MP2{@khtkRUN9VCe`oXgA&93J_+d_`J) zefSSBJsLp?uJIM*YC#x@YW^vL61%66h$w<_E&r}IgTBr1UMKLz?RlU#AL8>jw%*)n zWFeCLrP^9q65)#V-{&I|q_0=c&~f@?cd2-A=v7Q9lFbche-pXHa#q8b5La793*Le?k!IVrv1uRH5S%vvqfHYc(<{^Ld z>D%uK*Y>ZKy9rQUG?cx}sQRentk_(DObh4^KYmYD(LayM2+L6)mz*!$U%)ssMNG`N)z7cwKP9GG|2}D7?;Or(CpQra-Q7gFzU*6y zq$o`>gWDjiKcd1R!xsb7OUqPCR|IrBV)|aUL$Jr+G%Vpzte@k0iO~Tjh$T{6-It{B z!7h$UONy98%RN0Xy~^)1-@H39YJ}k-Xu33iGMdA0#rndQafZE$ z&Ote%1;M5Y#3!ad)PsXAfKRn~do#DqT3Ib&3- z8ulpCqd+pg>Gb^}<5Puu+sp>Mx~;sslnIBQlWmAAIr36(4xdr^Bm~9Y<4h;zl;IS` z&p?PF`ZVt0(?`icw%G=YKhmw=20cbYWFT)!g z#K=76u)>SA7fmu}x65_G@@JZnHjXK+x?)%)BjZ(hhgDdY2k`s%xgo_ieED0gHqEz6DE+E!4LvAjKJs{ zw^RpbzZ?#xTB9sc;k2ta#Lm$^-4hBlPI2h~ve1-qYWwSkKcrXL$m7(jSNF|S*4H>E zE~wl8WO>Dx0QZg=oOf(*e%RaViFi!zI731iC*QJvQ|^4^H39bw4o2@Yj9RMB z0vjiC%~BG8sJAlBKnpEt159gEIFtOHxjM z%{T>yvkA4fuFX2Q&TK--rg`Zeho>`!zSPWHAI^#^6-qfjqQCJaQ!cKaxX5X-6l7q* z*3J*TmRImQg!o*s5P2YQ;JD*?&7nk3;9)&dax}0c01`(F>ApLOQ_JOS zt|g=tRYr(L%zB61dp$Ubrocon$zwB79`W;U>BlZ+i?*J$N|4gOSW%rW@lJX;Arr}m35ui z+JEZ((DBai<%*F{M+S_3sJ}2->r;v1YWk8!jF);*5f{z(1=E;N1)ruVucelS)=S{_);iS`Ct3TL*VmsS&KJ5K)^sN z49pcw@9^JOqcHiOg~Sb;(=}3HuB#brb1;6jOQ57Hvh!=g5N$dc*W1{|ZRrxdf(4l4 zd)S5iViyD51a_egB(do2~2R8w4tJhE!IVDtp@ z;UC5;EP+6G^4jSa5&=7h&m%pAPe#@FUH*J;Ops&V5N=bSi+%TOB9z&X#RMY9`bCA! zEp;tZGMY^FBSais{>S4UH8-hf0_nVm#`vyU833HZp8P<(gvjTM?8ATv9B`pJhgEJj z`*oPDa9~Y{^}d)O$w$I3QX$H*pny~eKk_8*YjJzoaJ9;@yqTTaA%^Hgl7n0SchlfL zVsHPQrR68ITf3B?O#|%_`9P-d(GjnqaQrPrcF08>{M(=g=}~1k+;QU(=U=@DBK2Ri z)U*p;0apI2XD!ul%ghzo#D@*{sdAW@P)O{`jms^o5;?;WQdSwtfEofa{0*f9(SCWc zi0VRi0&&MDbwbw-zw^_*qv97l<#c&ylK0%Hbb0YU#}2f+(fbmAL=wejTq|XqDtG=v zD_L$yyx#e``~2m+f#F{7xgpAN2wW^L2c@fV6r<}bn7Itk+HJG2wPKzgIU$c4vcsXBQdvcoO1Lb5^J+PaLO{8>&#jZ zI9SJnx%(Fg!@}y_6h!x%Mj;6#ATV3VS>ztLy2lSC;TE>IdRoggk4EMG$o_NsQ57)I zG<^+npH8XHzOc5I75Gqu{7WUdH3n=x3C~7<67l}SzOX9tlFAyh5RwK~^2T!a4YBF~ znmNz0TzrhYmZ}6uJ6+W~mt)SvSXP*^!ai>+VO-6?0y7v;WrCDKecm>N*|n7OhXP1B zFV1!s!H32?z3t6t?42|W^#mHz4mRbrWHf-dcD!sBvG0IJRaJ7p!Cr<=T3J~F=TN$p z3|ba8L;0sG^*K=sU}*94eP~c0>=7-@dm>-Eto3Tb%%tp60`+ShZ zdu;3b8p{S?2cQafcPzeoSh4GAv$g8bqq+?sO}_%)Ww~WH4(${=;!ig&oV1=;(E?w~ z%S~#b=P|S>C8oft`!n7SXaq+p;8!{~R2To%fZ{*ZtkfxKez;@T@rs# z0z}DSnzG}M7M+kJCZPW$mmFYzA51T90`Q&63?Nu`(k;@9EQ6w?rs`woOw$vv?{de2 z|1lZjJr5!(G?+_PGt|n-3c?v}DHO9s0`m&-56igBqxc<{r?yC`s$8&`{`mZT)U%aL z6hl!T&YezHZqoKX*~=_6oX+-C$9(cguqwRQY2Cp*_vT+zCX~N^4tj9#o3f= zG^Kl!dGvK93xA6W++xFTl=Kbw9RD@w;8#~!TPiAuU z3Y@pD$QEqU?5^mgaK-1Gr~xR-kxss(jIs*w^0zIUedY?h`B~laB-#V5(})1ttyEKW zpA6$A_YWAk15q9Scv39?@uWm01wF((1LQb!QuKW6vkD!l^~II>ST1(r1ZrtEkscu# z1-B(zhaqb0zeN2;hf5>Qhea?ylE?esAOOT9l(oA82JB@C6~VXshy%c_8Z5&IMv3s? zI!;)lmMv#MKPDMye_OCF1|5zje1BbnJQT~AWZ(3oz#xxn_2Akeh)R~j3P8fB=#5V> zZ^SVCM<*yi{VD*CZ3#27=ORI3HRMV->Zvn5Pa(S(Sdhwmuicz_%x94P?ig$%G<%+i zUTfwR$09c`jKRP4*KAbB;;*;AU82FPj^Xdub^8i>loc=mY8F0TGm9@ItC!DrtT$@j zI;$~Ih5LWgM(clRxiB*ge2Dab(Z|h~$N3Dz`GLd^Ci&QG;u`6{Ep)diRgbw^SPTcL&*On$XYxr@zh5?+iBD&cxY_D9S+=oKZKHAOp5t5A<%|a@S?bD zXNo(3vIiSUH{6nQIBg77ulIi8#AR5m(cirik52&0xJFIE{w?fxdKVQlRbFF8>!=~g zdzosnT6C9(H(H?-21r=JGHFdijn~a-FH}d!<$HFByyl7LR|z;S{l>hvU8S99#ijYg zD6KK1RizbmPkk8Y-{)(_oR9TI5rn4IGZOdRjNc4AM;aR$wF|nP7VthV{2lW}Q@c_d5!#?p_(Q5& z4+w`ey7`|=h<-HJ6OV-zursjkZ-KT>ZSBe(4~dq?g^nzB4jvWS8u=B5&DF>sZ85wi zU-VB)@uth!;95F=sKcV*`&!xA&q}~?X)GXugkNKyDoYJDYIMIa7a&hLN}qRp!@x4U zY1aiVso}mqs7d=5BVzE8(wW>b(>Uvzi3_j!j(tRj@!7`^iF(Gni-b*Qt8l%WBL(EAsfbJD<@F) zqG_DTbkxPL?J)YKsF^YxXHZVV?Ru*skQAKU-_WDCdHZ`IhuZ?ngHd!i!^*D!;9X$l zN?Cl9#eIWrG#zgkDc*9@dTKR${86>usF1xG-L;(5;96!9&zFC53iZO%{xRqAhK<4X^v7q-GB5%ovMpxy zx$vY#0lPya=ta=4?<5Pc{Lng6{bOtnu$IrQk*^DXczci)TVb6RmrE@mstaDtUqTB~ zYP{ZMAT9>xrE>YUN3<*Bi1w<8$A9OIWGi7aDkP-NuzC(-t2o*u)n#(pHWs-zFOv+n*KC#Vm`)N*v)NJfX1dWX2)UVX9`%Z z4z5c4Um`jW3`8@FY7o(t1yRlCl)?Y2rTf1E_H_(L`M#sQbGxJ5<}4@V|7rR$h+3+3 zBIMYEhSl$_w};iN>jkEW3x-bd=V7F7vgDmT;q8hsY_ynzcZIIw&!JwY4YV70|8d9P zbh^Jd{19db52!P__&W2H&-%lDSWOr6$If_Ej3)4V2By*7B_!?GA}Xl>ea<_|4)+7X z(V>mz5XJkJF4vg{;FrC{rPt-oijR$^BKB}|n;BMRL!#9p!K4+)w65Wr(H;v4Ce%%Z6kSHv( zbZ=!36^8}2?)IX{Pbz=lo%!37YsuIFB5wl)mx%}J0Cc=1Zb9e?9&BCByOHVHqoX<1 zjNvC85@6L4TlHB;6xYi-iVDR|1k9bVTM6n6G$ z@lWRVxgZg9{n5=xb{gUe*^&P;P(K0EK%ad%eL$8Mnvcr1tP1Gabw5I>^Zm5gk03)E z17a?Fvu_-m7RI4&H^l7ADc#QA?H}%E*i7gM`n()?-b^jOxPAU$?kAHjlgBJ~(N17u zh`^_PM|n4_D%p_*&~T#D6t)#)WXTi#EfRewUCIpf=?ZGamj0f> z2Qqx8oT>Wl4L7!s2h*7$|42?WU8A%d8s0tcfRh-w)?XPhP`Bdnlh0DRA;F8Wm_6bmTihZpL4k?0dD#p zIoE`+9GUC^=6tz4Y|yCBXG8ovu5LHHL^Nt838lXzX#LJFZZP#YN}NCb>eN?{V80K~ zbn$vJTr~;Xb*Ru2Sm4+L{Oo`Ag-E0BGfC%z1s|~e?KX{Qn-9i~4%2lom$&a)<{=z5 z2apT(B&q*LGsnO0d^H18u9dm3JYfGB@o;PyC>dz7vc%&UbRzmo^bI4JIC{@R|+_y^4k$ zPg{GEavOCwz27Sj^7dtq=auh;nom5B!86K($x4mTw1d8z6 zpDVRPDq$Dx|00}I$v#UtYuZ&#LxK~5RW*pf-R>lv6oqjV(7e`%)ukbIP+_YI}bS5q5fm zW|;;7Lw@o)_d+_oJ)ePHjR|G`G(cKO1q?ra;DfoAc}jDRNyJ=-OD0jj36I3TzRx3*SCGrh86mlo>uL zGkpJ3hh~5Y{lBixvvZEyqAeHO`%9P5RE)S)fbMcUl=r2tnzC&+S&+Dh36Io+*H-_& zT6u|3SnlX*n2)!MqKR{K?^zasKy9#0Dz3lEcAWyT_7lHpcZUO-=?4MR2y!^Mwpi3* zJIJO>n*h^PIE|)Qk;?9%HPS+mB=^(jS2DDvUE+9`m;?l>aFxD7B%FsAEB=HeZ*?U&KB0Sv7xWpqsM|fJ6PhB-co0GSR^L}5 z6b#uJj%AEzL8F3R{Q`w29oMBUZypequM7!*+#KA_i2RP(?~Y&T>Z05^WL(A@4Bew(=u zTY$r9mSMe-*#`+QF+@?^W0utyi^db4V5DC`x$&TO?C4`QEeI<_BV+W>XC}c_`TRJe zLIUj~ub(^IFQbNJSG{>>PpwuLpTd8CskJoNTDG_`dH~p!WNZD~or8 zK7pt0AO~DC!1OdzOf1?ASGo-L4=+t7+^)E;JJ^KYC*j@vc0HpKbYqhK-xGHH6Jq}i z%hI4mG@)iN9UgYl!16;F_ta7^Nm4vcwcMA8XOJD&poD3R-|jhQv%sSk+Evtuz*P8D z>f&p!lh>tQNY9q|`W4xCpaUpX>Ys6H^dcKopM6{LA}62*=LePp?P*9eaa4Pr;Zof6v}%lrIG! z=4EkmhpRtd8{1}QlN!I7YypKM618wsPuQc@7ta<xr!vFsfS)Wwm-I8ktE%9*ySMK-}%4rOFseqE8lN|04 zOB=pO79|A337K&GNFbASPQ{JE;H~$dbr0>*{x;tAcAzG;tY`Fs(3(REZCLp7eQrl` z;c|x78usAwHpJwkilLjpbB#2&ZH4+bd;vly%co-2@H;254|_oSE)00=@pv~m_U?=+ zzs5A35@)YMlh#N(N#bvn?~{dtoO$ejll1!?k;4S4Q=|-VI};Jf>5H1`Eiguj=Q22l zmDM4XDDsf_hPdKIrt=}yz>Cd&Yqr-J)$eS*#fmG#9+;8wlSR2x1-=iwbJ8aduNwrL z6-<=UG&Kj$;s@#SQj6qXN>4FAtWvG;n>>6+3J9ncxfqnvZ1OKPmaSGig|`L4q>`5x zTw@dsY^;o1waMK%uO0^rPT~EB>2vb^mP>r0tdEo7B zV%H~OflOUQV^%lR0M5Vl^ql~?k+KGWYs~b(r|n5dDnKG6sdek<)#qe0&FgMm@BecC zm>7zX^`LEI?7jD7kV7e3sxV}4y`A8(Yx{l2FH~GL5(lT!@Cj1T&x!s+I4WcsScJB_ zUe`JG{H5jgRA^8}WRci)r#xiFiR4)1l$TmB<_91y)0tL=UbuE_dXZoiWUNl1slx3y zhYTs&BglJXC`@gSH>6^#5$xa;bw6;AUyk&;df&Eeg93FXPZQ6t*2VTY_72bM`-cC9 zJjYGzuS`FYptB1@{RX}j(HQEBEU?jS3C5}KJNygn`l*j7O(T9p2Vv~iFx4Unb7WK? zbf|bj2Wt8fP$`AEl{yt4xg65%p+PJc`sT=Nh7mW0oq^hhMjY*gbqeT>;Epz0h5{5Y zpIf&%8NQ(l6gb{ucFPP7)5A(HtS;Gn0X^u$5oCwx`A+P6vWt2XV z!&#nl7^T#ceQYjnyHBTUALPFa4dYHWm*2N8RdN~pW8AcYhk7BAZu0N`U-X=iJGcPOuPzx?#!9-N5s?9@UC9=IjVUIW(|^CTu) zMM@e8>W=y_=fjIS=M$i3D`(9%#n(3mN$&p&u$!#iiQslqRTgPk-H`ru?tYiK-miK< z#Q61Gc`xPMT7&1kNY{=pB0mFNFb@N8$^K4otB5$ixwLycYxA9WUfN^UMsqN^^-bjc zMYr=jEAq(+8)$Mka)a=%E6Ozk9PO$=lH1Al`JRoHzJaj>`z6NL^^{I9)`{nged(-W zMkw|FE9?4W+Nk0<%wGYL%~E1@7{I2w5E43Y!5^i)ppd4HNMy@Qm&hqt+qrCwl5M4} zy`-CAODENkfOdm!1zpDckqF`DMm(1a#4+173$(P3mUY;H?ciuBcl7$scSpt_dVk*g z@qPDw@7?FU@B6;bcj1?I{d`~ZHpCoj(ROSnVQ+}VKf{v$1T=W`p!qK(?Sv0-Usy4`!MN13LNUYCExaq$U!-JjRp+@cm~i z5o5u_J>7E)wF{G#C;V$3J&8|k+FetRL(BVr*ZB(T*B=FsBi5@2f4DdA?gXt6Z(eeO z)FpBq%!QL8p|A3W@@a14Ch)bXh7Mer31_ckesu0eV}4>V;o-Lsz6V=yS-1t4rhem6 zIi|MDP3eelKnX1tm!lm@C_nXKFv*>dt@N%@d$C0+Pjv`WGqe}$YWi$xAJ+)@FT9o4 zX-YtBTVD=y*w&#vH#$C`w6EN8f+8L(l_Q7aA>51ds*^o3j>v1MY9-fBvE#M>yW4Nk_dW8E3szywBz6`7QRHFy zRzGO$5*4WCYjGVR$E6kl%G?vl*d9rqDIK5X!hT)Q)@`OABDa&PfQ7GeU{s0me#k+Y zpEw@EcXE9r@Iil0f-0!ZrtW+R5=0iC(IOf3@2ypAHQ(;~(BCiwg$@q|k`=^i#nltb zB^J_#QoTIipxAM`?#;2kSau2pg$N++B$p|Wgvu=B2ZOs5-1hS`6-qK>5;*yd*ZgFY ze645@Vcf__iQIUKO@~1-Wa#V^wHR_STFPqJ*EeMg*SUK2M7D;L8G-jqIc7?Ud-wNB zIGdt&WCD67aMU~X1Mfgp?|@W*26(8HGc)8Qza+Dv%r;2K`htRrJjM+RXxoPaBGm7&BOri|L`U0McdK*M zKbSt!oT&8}&gvW>xg$Igew86;8$QjEI5todulzbM&EMlOdB8Y9iGY~N66|`m;bL#- zP{`-~qzmsQ`Y_;SJG?}0q?9>{MWn%=1sHxMCUu;)iKH90jn$)J?EDz-3?gVTF20Bf z%5>WOj_+vOg`purSB5#?`nDMsFFW@qyzRJxzdW>Tj>&*{j9HxmuG?T1$!LMAKP^#N zB`WIvF67K5r)4Lnd2kb@D-27}As5nndSdKTm*3mFrg6ot<-kYP@OJ%=Z@h2)7o*FS A!vFvP literal 0 HcmV?d00001 diff --git a/images/Screenshot_Import-image.png b/images/Screenshot_Import-image.png new file mode 100644 index 0000000000000000000000000000000000000000..0bc3c1f8745aa56e9517e732cd56626320abf5c1 GIT binary patch literal 55310 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�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 +GqBclI*`K@lW*gsrvQz_W>(HUHI{uq%G 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 literal 0 HcmV?d00001 From 1bf2de8b434f8f4aacbb799ad566682d98fb62c5 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Fri, 23 May 2025 16:43:56 +0300 Subject: [PATCH 18/29] README.md update --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 117bdb3..8e3c530 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,9 @@ Features: - Save / Load your project for later edits - Export as a C array in different formats -Requires .Net Framework 4.7+ +Requires: +- Windows 7+ +- .NET 9 Some basic hints on the interface: - Mouse 1 to mark a pixel black From a5e3c8812fd9a9332a31d957546eaac1101fea9e Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Fri, 23 May 2025 16:53:34 +0300 Subject: [PATCH 19/29] README.md update --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 8e3c530..b2a4122 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,9 @@ Some basic hints on the interface: Download in the [Releases](https://gitea.mcflyer.ru/McFLY/McBitFont/releases) section! +#### Important: +**Since v2.0 new save file format is implemented. You can use [McBitFont v1.7](https://gitea.mcflyer.ru/McFLY/McBitFont/releases/tag/v1.7) to convert old saved files to the new format.** + ### Screenshots: From ab77f9de210d2dfd019c16d169d432a217003c06 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Fri, 23 May 2025 17:13:32 +0300 Subject: [PATCH 20/29] Little UI fixes --- McBitFont/Form1.Designer.cs | 52 +++++++++++++++++++++++-------------- McBitFont/Form1.cs | 14 ++++++---- 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 180d8a9..1c3f87e 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -56,13 +56,14 @@ btnApply = new System.Windows.Forms.Button(); hScroll = new System.Windows.Forms.HScrollBar(); vScroll = new System.Windows.Forms.VScrollBar(); - label5 = new System.Windows.Forms.Label(); + lblCoords = new System.Windows.Forms.Label(); menuStrip1 = new System.Windows.Forms.MenuStrip(); fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + importImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -95,7 +96,7 @@ toolTip1 = new System.Windows.Forms.ToolTip(components); chkLeftSide = new System.Windows.Forms.CheckBox(); chkTopSide = new System.Windows.Forms.CheckBox(); - importImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + label3 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -472,17 +473,17 @@ vScroll.TabIndex = 15; vScroll.ValueChanged += scroll_ValueChanged; // - // label5 + // lblCoords // - label5.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; - label5.AutoSize = true; - label5.Location = new System.Drawing.Point(646, 132); - label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - label5.Name = "label5"; - label5.Size = new System.Drawing.Size(24, 15); - label5.TabIndex = 16; - label5.Text = "X,Y"; - label5.TextAlign = System.Drawing.ContentAlignment.TopRight; + lblCoords.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + lblCoords.AutoSize = true; + lblCoords.Location = new System.Drawing.Point(643, 132); + lblCoords.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + lblCoords.Name = "lblCoords"; + lblCoords.Size = new System.Drawing.Size(24, 15); + lblCoords.TabIndex = 16; + lblCoords.Text = "X,Y"; + lblCoords.TextAlign = System.Drawing.ContentAlignment.TopRight; // // menuStrip1 // @@ -545,6 +546,14 @@ saveAsToolStripMenuItem.ToolTipText = "Save changes to another file"; saveAsToolStripMenuItem.Click += SaveToolStripMenuItem_Click; // + // importImageToolStripMenuItem + // + importImageToolStripMenuItem.Image = Properties.Resources.z_folder_image; + importImageToolStripMenuItem.Name = "importImageToolStripMenuItem"; + importImageToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + importImageToolStripMenuItem.Text = "Import image"; + importImageToolStripMenuItem.Click += importImageToolStripMenuItem_Click; + // // exportToolStripMenuItem // exportToolStripMenuItem.Image = Properties.Resources.z_export; @@ -865,25 +874,27 @@ toolTip1.SetToolTip(chkTopSide, "Height changes will be made on Top/Bottom side"); chkTopSide.UseVisualStyleBackColor = true; // - // importImageToolStripMenuItem + // label3 // - importImageToolStripMenuItem.Image = Properties.Resources.z_folder_image; - importImageToolStripMenuItem.Name = "importImageToolStripMenuItem"; - importImageToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - importImageToolStripMenuItem.Text = "Import image"; - importImageToolStripMenuItem.Click += importImageToolStripMenuItem_Click; + label3.AutoSize = true; + label3.Location = new System.Drawing.Point(642, 117); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(45, 15); + label3.TabIndex = 21; + label3.Text = "Cursor:"; // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; ClientSize = new System.Drawing.Size(915, 647); + Controls.Add(label3); Controls.Add(chkTopSide); Controls.Add(chkLeftSide); Controls.Add(btnBaseline); Controls.Add(btnApply); Controls.Add(btnExport); - Controls.Add(label5); + Controls.Add(lblCoords); Controls.Add(vScroll); Controls.Add(hScroll); Controls.Add(miniList); @@ -941,7 +952,7 @@ private System.Windows.Forms.Button btnApply; private System.Windows.Forms.HScrollBar hScroll; private System.Windows.Forms.VScrollBar vScroll; - private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label lblCoords; private System.Windows.Forms.MenuStrip menuStrip1; private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem; @@ -990,6 +1001,7 @@ private System.Windows.Forms.ToolStripMenuItem tsmiCodeShift; private System.Windows.Forms.ToolStripMenuItem tsmiMakeVarWidth; private System.Windows.Forms.ToolStripMenuItem importImageToolStripMenuItem; + private System.Windows.Forms.Label label3; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index e083773..2a0bf8d 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -95,7 +95,7 @@ namespace McBitFont { ListViewItem_SetSpacing(miniList, 50 + 2, 50 + 22); - this.Text = "McBitFont " + version + " - " + prjName; + SetWindowCap(); fbuf = new FrameMiniature(0, dotWidth, dotHeight); @@ -330,7 +330,7 @@ namespace McBitFont { // Change coordinates in the panel int i = (e.X - pixelOffset + hScroll.Value) / (cellSize + gap); int j = (e.Y - pixelOffset + vScroll.Value) / (cellSize + gap); - label5.Text = i.ToString() + ',' + j.ToString(); + lblCoords.Text = i.ToString() + ',' + j.ToString(); // history management if (e.Button != MouseButtons.None && !mouseDown) { @@ -660,7 +660,7 @@ namespace McBitFont { prjName = "Untitled"; prjFileName = ""; - this.Text = "McBitFont " + version + " - " + prjName; + SetWindowCap(); modified = false; CheckForAdd(); fbuffer = false; @@ -775,7 +775,7 @@ namespace McBitFont { prjFileName = filename; prjName = Path.GetFileNameWithoutExtension(filename); - this.Text = "McBitFont " + version + " - " + prjName; + SetWindowCap(); miniList.Items[0].Selected = true; @@ -805,7 +805,11 @@ namespace McBitFont { prjModified = false; prjName = Path.GetFileNameWithoutExtension(filename); prjFileName = filename; - this.Text = "McBitFont " + version + " - " + prjName; + SetWindowCap(); + } + + private void SetWindowCap() { + this.Text = "McBitFont v" + version + " - " + prjName; } private void openToolStripMenuItem_Click(object sender, EventArgs e) { From c1a8d30760bd4eb0fd2eef9a74ba05fb8223b9e4 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Fri, 23 May 2025 18:48:28 +0300 Subject: [PATCH 21/29] TODO features and Bug fixed: Application: - Option to display codes in Hex numbers - Make symbol list wider to display 8 characters instead of 7 Bugs: - Wrongly mark Project as modified on symbol selection --- McBitFont/Form1.Designer.cs | 41 ++++++++++++++++++++++++----------- McBitFont/Form1.cs | 43 ++++++++++++++++++++++++++++--------- TODO.txt | 5 +++-- 3 files changed, 65 insertions(+), 24 deletions(-) diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 1c3f87e..5498b4a 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -97,6 +97,7 @@ chkLeftSide = new System.Windows.Forms.CheckBox(); chkTopSide = new System.Windows.Forms.CheckBox(); label3 = new System.Windows.Forms.Label(); + chkHexCodes = new System.Windows.Forms.CheckBox(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -112,7 +113,7 @@ dotPanel.Location = new System.Drawing.Point(14, 31); dotPanel.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); dotPanel.Name = "dotPanel"; - dotPanel.Size = new System.Drawing.Size(454, 575); + dotPanel.Size = new System.Drawing.Size(427, 575); dotPanel.TabIndex = 0; dotPanel.Paint += dotPanel_Paint; dotPanel.MouseDown += dotPanel_MouseMove; @@ -171,10 +172,10 @@ // lblType // lblType.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; - lblType.Location = new System.Drawing.Point(646, 159); + lblType.Location = new System.Drawing.Point(718, 159); lblType.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); lblType.Name = "lblType"; - lblType.Size = new System.Drawing.Size(253, 15); + lblType.Size = new System.Drawing.Size(181, 15); lblType.TabIndex = 0; lblType.Text = "Monospaced"; lblType.TextAlign = System.Drawing.ContentAlignment.TopRight; @@ -185,7 +186,7 @@ cbZoom.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; cbZoom.FormattingEnabled = true; cbZoom.Items.AddRange(new object[] { "2", "3", "5", "10", "15", "20", "25", "30", "35", "40", "45", "50" }); - cbZoom.Location = new System.Drawing.Point(646, 52); + cbZoom.Location = new System.Drawing.Point(619, 52); cbZoom.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); cbZoom.Name = "cbZoom"; cbZoom.Size = new System.Drawing.Size(68, 23); @@ -197,7 +198,7 @@ // label4.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; label4.AutoSize = true; - label4.Location = new System.Drawing.Point(645, 33); + label4.Location = new System.Drawing.Point(618, 33); label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); label4.Name = "label4"; label4.Size = new System.Drawing.Size(69, 15); @@ -216,7 +217,7 @@ panel1.Controls.Add(btnShiftUp); panel1.Controls.Add(btnShiftRight); panel1.Controls.Add(btnShiftLeft); - panel1.Location = new System.Drawing.Point(499, 31); + panel1.Location = new System.Drawing.Point(472, 31); panel1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); panel1.Name = "panel1"; panel1.Size = new System.Drawing.Size(140, 139); @@ -342,17 +343,17 @@ // miniList // miniList.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; + miniList.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; miniList.ContextMenuStrip = cmMinilist; miniList.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); - miniList.GridLines = true; miniList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; miniList.LargeImageList = ilMiniatures; - miniList.Location = new System.Drawing.Point(499, 178); + miniList.Location = new System.Drawing.Point(472, 178); miniList.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); miniList.MultiSelect = false; miniList.Name = "miniList"; miniList.ShowGroups = false; - miniList.Size = new System.Drawing.Size(400, 455); + miniList.Size = new System.Drawing.Size(427, 455); miniList.SmallImageList = ilMiniatures; miniList.Sorting = System.Windows.Forms.SortOrder.Ascending; miniList.TabIndex = 12; @@ -467,7 +468,7 @@ // vScroll.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; vScroll.LargeChange = 25; - vScroll.Location = new System.Drawing.Point(471, 31); + vScroll.Location = new System.Drawing.Point(444, 31); vScroll.Name = "vScroll"; vScroll.Size = new System.Drawing.Size(21, 575); vScroll.TabIndex = 15; @@ -477,7 +478,7 @@ // lblCoords.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; lblCoords.AutoSize = true; - lblCoords.Location = new System.Drawing.Point(643, 132); + lblCoords.Location = new System.Drawing.Point(616, 132); lblCoords.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); lblCoords.Name = "lblCoords"; lblCoords.Size = new System.Drawing.Size(24, 15); @@ -852,6 +853,7 @@ // // chkLeftSide // + chkLeftSide.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; chkLeftSide.AutoSize = true; chkLeftSide.Location = new System.Drawing.Point(831, 33); chkLeftSide.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); @@ -864,6 +866,7 @@ // // chkTopSide // + chkTopSide.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; chkTopSide.AutoSize = true; chkTopSide.Location = new System.Drawing.Point(831, 58); chkTopSide.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); @@ -876,18 +879,31 @@ // // label3 // + label3.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; label3.AutoSize = true; - label3.Location = new System.Drawing.Point(642, 117); + label3.Location = new System.Drawing.Point(615, 117); label3.Name = "label3"; label3.Size = new System.Drawing.Size(45, 15); label3.TabIndex = 21; label3.Text = "Cursor:"; // + // chkHexCodes + // + chkHexCodes.AutoSize = true; + chkHexCodes.Location = new System.Drawing.Point(618, 155); + chkHexCodes.Name = "chkHexCodes"; + chkHexCodes.Size = new System.Drawing.Size(95, 19); + chkHexCodes.TabIndex = 22; + chkHexCodes.Text = "Codes in Hex"; + chkHexCodes.UseVisualStyleBackColor = true; + chkHexCodes.CheckedChanged += chkHexCodes_CheckedChanged; + // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; ClientSize = new System.Drawing.Size(915, 647); + Controls.Add(chkHexCodes); Controls.Add(label3); Controls.Add(chkTopSide); Controls.Add(chkLeftSide); @@ -1002,6 +1018,7 @@ private System.Windows.Forms.ToolStripMenuItem tsmiMakeVarWidth; private System.Windows.Forms.ToolStripMenuItem importImageToolStripMenuItem; private System.Windows.Forms.Label label3; + private System.Windows.Forms.CheckBox chkHexCodes; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 2a0bf8d..598af25 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -93,7 +93,7 @@ namespace McBitFont { miniList.Select(); f = CopyFrame(frames.Find(x => x.code == 0)); - ListViewItem_SetSpacing(miniList, 50 + 2, 50 + 22); + ListViewItem_SetSpacing(miniList, 50 + 1, 50 + 22); SetWindowCap(); @@ -115,11 +115,11 @@ namespace McBitFont { [DllImport("user32.dll")] public static extern int SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); - public int MakeLong(short lowPart, short highPart) { + public static int MakeLong(short lowPart, short highPart) { return (int)(((ushort)lowPart) | (uint)(highPart << 16)); } - FrameMiniature CopyFrame(FrameMiniature frame) { + private static FrameMiniature CopyFrame(FrameMiniature frame) { var ff = new FrameMiniature(frame.code, frame.width, frame.height); Array.Copy(frame.data, ff.data, frame.data.Length); return ff; @@ -168,10 +168,12 @@ namespace McBitFont { ilMiniatures.Images.Add(s, (Image)bmp); miniList.Items[s].ImageKey = s; } - } else { - if (nudX.Focused) modified = true; } - prjModified = true; + if (nudX.Focused) { + modified = true; + prjModified = true; + } + dotResize((int)nudX.Value, dotHeight); Cursor.Current = Cursors.Default; } @@ -187,8 +189,11 @@ namespace McBitFont { ilMiniatures.Images.Add(s, (Image)bmp); miniList.Items[s].ImageKey = s; } - if (nudY.Focused) modified = true; - prjModified = true; + if (nudY.Focused) { + modified = true; + prjModified = true; + } + dotResize(dotWidth, (int)nudY.Value); Cursor.Current = Cursors.Default; } @@ -741,6 +746,7 @@ namespace McBitFont { private void LoadProject(string filename) { SaveBlock sav; + Cursor.Current = Cursors.WaitCursor; using (FileStream fs = File.Open(filename, FileMode.Open)) { sav = MessagePackSerializer.Deserialize(fs); fs.Close(); @@ -756,9 +762,10 @@ namespace McBitFont { ilMiniatures.Images.Clear(); foreach (FrameMiniature ff in frames) { var s = ff.code.ToString().PadLeft(3, '0'); + var sHex = 'x' + Convert.ToString(ff.code, 16).PadLeft(2, '0').ToUpper(); var sss = decodeSymbol(ff.code); ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff)); - miniList.Items.Add(s, s + ' ' + sss, s); + miniList.Items.Add(s, (chkHexCodes.Checked ? sHex : s) + ' ' + sss, s); } nudX.ValueChanged -= nudX_ValueChanged; nudY.ValueChanged -= nudY_ValueChanged; @@ -789,6 +796,7 @@ namespace McBitFont { makeVarWidthToolStripMenuItem.Visible = monospaced; tsmiCodeShift.Visible = frames.Count > 1; CodeShiftToolStripMenuItem.Visible = frames.Count > 1; + Cursor.Current = Cursors.Default; } private void SaveProject(string filename) { @@ -1066,7 +1074,7 @@ namespace McBitFont { history.AddPre(f); for (int i = 0; i < iform.bmpScaled.Width; i++) { for (int j = 0; j < iform.bmpScaled.Height; j++) { - f.data[i,j] = iform.bmpScaled.GetPixel(i, j).ToArgb().Equals(Color.Black.ToArgb()); + f.data[i, j] = iform.bmpScaled.GetPixel(i, j).ToArgb().Equals(Color.Black.ToArgb()); } } history.AddPost(f); @@ -1075,5 +1083,20 @@ namespace McBitFont { } iform.Dispose(); } + + private void chkHexCodes_CheckedChanged(object sender, EventArgs e) { + if (frames.Count == 1) return; + foreach (ListViewItem item in miniList.Items) { + var code = Convert.ToInt32(item.ImageKey); + var symbol = decodeSymbol(code); + if (chkHexCodes.Checked) { + var sHex = 'x' + Convert.ToString(code, 16).PadLeft(2, '0').ToUpper(); + item.Text = sHex + ' ' + symbol; + } else { + item.Text = item.ImageKey + ' ' + symbol; + } + + } + } } } diff --git a/TODO.txt b/TODO.txt index 6fda64c..1e4f44c 100644 --- a/TODO.txt +++ b/TODO.txt @@ -5,8 +5,8 @@ V Better quality pictures in symbol list V Spinning cursor when application is busy V Change Menu icons V Re-arranged menu items -- Option to display codes in Hex numbers -- Make symbol list wider to display 8 characters instead of 7 +V Option to display codes in Hex numbers +V Make symbol list wider to display 8 characters instead of 7 Functionality: V Context menu in symbol navigator @@ -24,3 +24,4 @@ V "Bytes total comment in export Bugs: V Improper bytes count for 16 or 32 bit numbers export V Exception on Code Shift when nothing is selected in Symbols List +V Wrongly mark Project as modified on symbol selection From 1034bd98d6c75e8f5ab33102b0aae47dda50bbb1 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Sat, 24 May 2025 00:04:26 +0300 Subject: [PATCH 22/29] Fill canvas button and several small UI changes/fixes --- McBitFont/Form1.Designer.cs | 54 +++++++++++++----- McBitFont/Form1.cs | 62 +++++++++++++-------- McBitFont/Properties/Resources.Designer.cs | 20 +++++++ McBitFont/Properties/Resources.resx | 14 +++-- McBitFont/Resources/Canvas_Clear.png | Bin 0 -> 595 bytes McBitFont/Resources/Canvas_Fill.png | Bin 0 -> 547 bytes TODO.txt | 1 + icons/Canvas_Clear.png | Bin 0 -> 595 bytes icons/Canvas_Fill.png | Bin 0 -> 547 bytes 9 files changed, 112 insertions(+), 39 deletions(-) create mode 100644 McBitFont/Resources/Canvas_Clear.png create mode 100644 McBitFont/Resources/Canvas_Fill.png create mode 100644 icons/Canvas_Clear.png create mode 100644 icons/Canvas_Fill.png diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 5498b4a..7cf13db 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -34,6 +34,7 @@ cbZoom = new System.Windows.Forms.ComboBox(); label4 = new System.Windows.Forms.Label(); panel1 = new System.Windows.Forms.Panel(); + btnFill = new System.Windows.Forms.Button(); btnClear = new System.Windows.Forms.Button(); btnMirrorY = new System.Windows.Forms.Button(); btnMirrorX = new System.Windows.Forms.Button(); @@ -96,8 +97,9 @@ toolTip1 = new System.Windows.Forms.ToolTip(components); chkLeftSide = new System.Windows.Forms.CheckBox(); chkTopSide = new System.Windows.Forms.CheckBox(); - label3 = new System.Windows.Forms.Label(); chkHexCodes = new System.Windows.Forms.CheckBox(); + label3 = new System.Windows.Forms.Label(); + FillToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -209,6 +211,7 @@ // panel1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + panel1.Controls.Add(btnFill); panel1.Controls.Add(btnClear); panel1.Controls.Add(btnMirrorY); panel1.Controls.Add(btnMirrorX); @@ -223,6 +226,19 @@ panel1.Size = new System.Drawing.Size(140, 139); panel1.TabIndex = 9; // + // btnFill + // + btnFill.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); + btnFill.Location = new System.Drawing.Point(92, 9); + btnFill.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + btnFill.Name = "btnFill"; + btnFill.Size = new System.Drawing.Size(35, 35); + btnFill.TabIndex = 8; + btnFill.Text = "⬤"; + toolTip1.SetToolTip(btnFill, "Paint canvas black"); + btnFill.UseVisualStyleBackColor = true; + btnFill.Click += btnFill_Click; + // // btnClear // btnClear.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204); @@ -232,7 +248,7 @@ btnClear.Size = new System.Drawing.Size(35, 35); btnClear.TabIndex = 7; btnClear.Text = "○"; - toolTip1.SetToolTip(btnClear, "Clear canvas"); + toolTip1.SetToolTip(btnClear, "Paint canvas white"); btnClear.UseVisualStyleBackColor = true; btnClear.Click += btnClear_Click; // @@ -713,14 +729,14 @@ // // canvasToolStripMenuItem // - canvasToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { ClearToolStripMenuItem, shiftUpToolStripMenuItem, shiftDownToolStripMenuItem, shiftLeftToolStripMenuItem, shiftRightToolStripMenuItem, invertToolStripMenuItem, mirrorXToolStripMenuItem, mirrorYToolStripMenuItem, applyToolStripMenuItem }); + canvasToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { ClearToolStripMenuItem, FillToolStripMenuItem, shiftUpToolStripMenuItem, shiftDownToolStripMenuItem, shiftLeftToolStripMenuItem, shiftRightToolStripMenuItem, invertToolStripMenuItem, mirrorXToolStripMenuItem, mirrorYToolStripMenuItem, applyToolStripMenuItem }); canvasToolStripMenuItem.Name = "canvasToolStripMenuItem"; canvasToolStripMenuItem.Size = new System.Drawing.Size(57, 20); canvasToolStripMenuItem.Text = "Canvas"; // // ClearToolStripMenuItem // - ClearToolStripMenuItem.Image = Properties.Resources.z_shading; + ClearToolStripMenuItem.Image = Properties.Resources.Canvas_Clear; ClearToolStripMenuItem.Name = "ClearToolStripMenuItem"; ClearToolStripMenuItem.ShortcutKeyDisplayString = ""; ClearToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W; @@ -877,6 +893,18 @@ toolTip1.SetToolTip(chkTopSide, "Height changes will be made on Top/Bottom side"); chkTopSide.UseVisualStyleBackColor = true; // + // chkHexCodes + // + chkHexCodes.AutoSize = true; + chkHexCodes.Location = new System.Drawing.Point(618, 155); + chkHexCodes.Name = "chkHexCodes"; + chkHexCodes.Size = new System.Drawing.Size(95, 19); + chkHexCodes.TabIndex = 22; + chkHexCodes.Text = "Codes in Hex"; + toolTip1.SetToolTip(chkHexCodes, "Option to show symbol codes in Hexadecimal"); + chkHexCodes.UseVisualStyleBackColor = true; + chkHexCodes.CheckedChanged += chkHexCodes_CheckedChanged; + // // label3 // label3.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; @@ -887,16 +915,14 @@ label3.TabIndex = 21; label3.Text = "Cursor:"; // - // chkHexCodes + // FillToolStripMenuItem // - chkHexCodes.AutoSize = true; - chkHexCodes.Location = new System.Drawing.Point(618, 155); - chkHexCodes.Name = "chkHexCodes"; - chkHexCodes.Size = new System.Drawing.Size(95, 19); - chkHexCodes.TabIndex = 22; - chkHexCodes.Text = "Codes in Hex"; - chkHexCodes.UseVisualStyleBackColor = true; - chkHexCodes.CheckedChanged += chkHexCodes_CheckedChanged; + FillToolStripMenuItem.Image = Properties.Resources.Canvas_Fill; + FillToolStripMenuItem.Name = "FillToolStripMenuItem"; + FillToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.B; + FillToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + FillToolStripMenuItem.Text = "Fill canvas"; + FillToolStripMenuItem.Click += btnFill_Click; // // MainForm // @@ -1019,6 +1045,8 @@ private System.Windows.Forms.ToolStripMenuItem importImageToolStripMenuItem; private System.Windows.Forms.Label label3; private System.Windows.Forms.CheckBox chkHexCodes; + private System.Windows.Forms.Button btnFill; + private System.Windows.Forms.ToolStripMenuItem FillToolStripMenuItem; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 598af25..b2bfc54 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -125,7 +125,7 @@ namespace McBitFont { return ff; } - public void ListViewItem_SetSpacing(ListView listview, short leftPadding, short topPadding) { + public static void ListViewItem_SetSpacing(ListView listview, short leftPadding, short topPadding) { const int LVM_FIRST = 0x1000; const int LVM_SETICONSPACING = LVM_FIRST + 53; SendMessage(listview.Handle, LVM_SETICONSPACING, IntPtr.Zero, (IntPtr)MakeLong(leftPadding, topPadding)); @@ -161,8 +161,8 @@ namespace McBitFont { if (monospaced) { Bitmap bmp; for (int i = 0; i < frames.Count; i++) { - frames[i] = frameResize(frames[i], (int)nudX.Value, dotHeight); - bmp = getMiniPictue(frames[i]); + frames[i] = FrameResize(frames[i], (int)nudX.Value, dotHeight); + bmp = GetMiniPictue(frames[i]); string s = frames[i].code.ToString().PadLeft(3, '0'); ilMiniatures.Images.RemoveByKey(s); ilMiniatures.Images.Add(s, (Image)bmp); @@ -174,7 +174,7 @@ namespace McBitFont { prjModified = true; } - dotResize((int)nudX.Value, dotHeight); + DotResize((int)nudX.Value, dotHeight); Cursor.Current = Cursors.Default; } @@ -182,8 +182,8 @@ namespace McBitFont { Cursor.Current = Cursors.WaitCursor; Bitmap bmp; for (int i = 0; i < frames.Count; i++) { - frames[i] = frameResize(frames[i], frames[i].width, (int)nudY.Value); - bmp = getMiniPictue(frames[i]); + frames[i] = FrameResize(frames[i], frames[i].width, (int)nudY.Value); + bmp = GetMiniPictue(frames[i]); string s = frames[i].code.ToString().PadLeft(3, '0'); ilMiniatures.Images.RemoveByKey(s); ilMiniatures.Images.Add(s, (Image)bmp); @@ -194,11 +194,11 @@ namespace McBitFont { prjModified = true; } - dotResize(dotWidth, (int)nudY.Value); + DotResize(dotWidth, (int)nudY.Value); Cursor.Current = Cursors.Default; } - private FrameMiniature frameResize(FrameMiniature ff, int neww, int newh) { + private FrameMiniature FrameResize(FrameMiniature ff, int neww, int newh) { int oldw = ff.width; int oldh = ff.height; int di = 0, dj = 0; @@ -226,8 +226,8 @@ namespace McBitFont { return ff; } - private void dotResize(int ww, int hh) { - f = frameResize(f, ww, hh); + private void DotResize(int ww, int hh) { + f = FrameResize(f, ww, hh); dotWidth = ww; dotHeight = hh; w = pixelOffset + dotWidth * (cellSize + gap); @@ -496,7 +496,7 @@ namespace McBitFont { int index = frames.FindIndex(x => x.code == f.code); frames[index] = f; - var sizedBMP = getMiniPictue(f); + var sizedBMP = GetMiniPictue(f); string s = f.code.ToString().PadLeft(3, '0'); ilMiniatures.Images.RemoveByKey(s); ilMiniatures.Images.Add(s, (Image)sizedBMP); @@ -505,7 +505,7 @@ namespace McBitFont { prjModified = true; } - private Bitmap getMiniPictue(FrameMiniature m) { + private static Bitmap GetMiniPictue(FrameMiniature m) { int picSize = (m.width > m.height) ? m.width : m.height; var bmp = new Bitmap(picSize, picSize); int imin = m.width < picSize ? (picSize - m.width) / 2 : 0; @@ -572,7 +572,7 @@ namespace McBitFont { return enc.GetString(new byte[] { (byte)code }); } - private FrameMiniature fillFrame(FrameMiniature ff, Font font, int sx, int sy) { + private FrameMiniature DrawFrameChar(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); @@ -640,7 +640,7 @@ namespace McBitFont { for (i = imin; i <= imax; 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); + if (form.cbFontBased.Checked) newf = DrawFrameChar(newf, form.dlgFont.Font, (int)form.nudShiftX.Value, (int)form.nudShiftY.Value); frames.Add(newf); } @@ -654,7 +654,7 @@ namespace McBitFont { codepage = (form.cbEncoding.SelectedItem as New.EncodingItem).Code; foreach (FrameMiniature ff in frames) { var s = ff.code.ToString().PadLeft(3, '0'); - ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff)); + ilMiniatures.Images.Add(s, (Image)GetMiniPictue(ff)); var sss = decodeSymbol(ff.code); miniList.Items.Add(s, s + ' ' + append + sss, s); } @@ -764,14 +764,14 @@ namespace McBitFont { var s = ff.code.ToString().PadLeft(3, '0'); var sHex = 'x' + Convert.ToString(ff.code, 16).PadLeft(2, '0').ToUpper(); var sss = decodeSymbol(ff.code); - ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff)); + ilMiniatures.Images.Add(s, (Image)GetMiniPictue(ff)); miniList.Items.Add(s, (chkHexCodes.Checked ? sHex : s) + ' ' + sss, s); } nudX.ValueChanged -= nudX_ValueChanged; nudY.ValueChanged -= nudY_ValueChanged; nudX.Value = frames.First().width; nudY.Value = frames.First().height; - dotResize((int)nudX.Value, (int)nudY.Value); + DotResize((int)nudX.Value, (int)nudY.Value); nudX.ValueChanged += nudX_ValueChanged; nudY.ValueChanged += nudY_ValueChanged; f = CopyFrame(frames.First()); @@ -856,7 +856,7 @@ namespace McBitFont { } var s = ff.code.ToString().PadLeft(3, '0'); - ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff)); + ilMiniatures.Images.Add(s, (Image)GetMiniPictue(ff)); var sss = decodeSymbol(ff.code); miniList.Items.Add(s, s + ' ' + sss, s); CheckForAdd(); @@ -939,15 +939,32 @@ namespace McBitFont { } - private void btnClear_Click(object sender, EventArgs e) { + private void FillFrame(bool val) { history.AddPre(f); - Array.Clear(f.data, 0, f.data.Length); + + if (!val) Array.Clear(f.data); + else + for (int i = 0; i < f.width; i++) { + for (int j = 0; j < f.height; j++) { + f.data[i, j] = val; + } + } + history.AddPost(f); CheckHistoryButtons(); modified = true; + prjModified = true; dotPanel.Refresh(); } + private void btnClear_Click(object sender, EventArgs e) { + FillFrame(false); + } + + private void btnFill_Click(object sender, EventArgs e) { + FillFrame(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) { @@ -1050,7 +1067,7 @@ namespace McBitFont { var key = ff.code.ToString().PadLeft(3, '0'); var text = decodeSymbol(ff.code); - ilMiniatures.Images.Add(key, (Image)getMiniPictue(ff)); + ilMiniatures.Images.Add(key, (Image)GetMiniPictue(ff)); miniList.Items.Add(key, key + ' ' + text, key); } @@ -1095,8 +1112,9 @@ namespace McBitFont { } else { item.Text = item.ImageKey + ' ' + symbol; } - + } } + } } diff --git a/McBitFont/Properties/Resources.Designer.cs b/McBitFont/Properties/Resources.Designer.cs index 2d26efd..281bcaa 100644 --- a/McBitFont/Properties/Resources.Designer.cs +++ b/McBitFont/Properties/Resources.Designer.cs @@ -110,6 +110,26 @@ namespace McBitFont.Properties { } } + ///

+ /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Canvas_Clear { + get { + object obj = ResourceManager.GetObject("Canvas_Clear", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Canvas_Fill { + get { + object obj = ResourceManager.GetObject("Canvas_Fill", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/McBitFont/Properties/Resources.resx b/McBitFont/Properties/Resources.resx index e7614bc..cabd1c6 100644 --- a/McBitFont/Properties/Resources.resx +++ b/McBitFont/Properties/Resources.resx @@ -151,8 +151,8 @@ ..\Resources\arrow_right.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\calculator.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\asterisk_orange.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -160,9 +160,15 @@ ..\..\icons\famfamfam\arrow_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Canvas_Clear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\arrow_up.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\file.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -208,7 +214,7 @@ ..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\calculator.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Canvas_Fill.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/Canvas_Clear.png b/McBitFont/Resources/Canvas_Clear.png new file mode 100644 index 0000000000000000000000000000000000000000..ead2bd198b08373e059d85c37921505ff12b926e GIT binary patch literal 595 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1enP_o1|q9iy!t)x7$D3!r6B|j-u!8128JvAsb zF{QHbWU39&)b`Afh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH)bz|eTlM$5 z_p2*prr4^7oBA5~7C5J7WO`H;r3P2|g(O#HCtIed+uQMS*;H5oO~_3xNmQuF&B-ga zs<2f88*Bw+gM{^!>}-ls(yW49+@LCeJX@uVl9B=|ef{$Ca=mh6z5JqdeM3u2OML?) zeIp}XpbFjM%Dj@q3f;V7WvBrzsl~}fnFS@8`FRQ;0~3?-OG|8(N=q|StkM$GOp{Vl zOm&kIjZ<_D4O0?z6H|;0byJLuQ_M{bEsW9(la!#=mt>|P?9VHP1_Lla^g%NEhI$4d zCxh5l{zaLoKv#gQv@^5;%cF?d=z|=BanMprB-l zYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4R1_s9V%#etZ2wxwowic-?7f?V97Du6s& zrHqo20xNy}^73-Ma$~*xqI7*jOG`_A10#JSBVC{h-Qvo;lEez#ykcdj0WPV<$wiq3 zC7Jno3Lpa$lk!VTY?Vq&GgGY664OkRQc_HHlM;{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH)bz|eTlM$5 z_p2*prr4^7oBA5~7C5J7WO`H;r3P2|g(O#HCtIed+uQMS*;H5oO~_3xNmQuF&B-ga zs<2f88*Bw+gM{^!>}-ls(yW49+@LCeJX@uVl9B=|ef{$Ca=mh6z5JqdeM3u2OML?) zeIp}XpbFjM%Dj@q3f;V7WvBrzsl~}fnFS@8`FRQ;0~3?-OG|8(N=q|StkM$GOp{Vl zOm&kIjZ<_D4O0?z6H|;0byJLuQ_M{bEsW9(la!#=mt>|P?9VHP1_Lla^g%NEhI$4d zCxh5l{zaLoKv#gQv@^5;%cF?d=z|=BanMprB-l zYeY$Kep*R+Vo@rCV@iHfs)A>3VtQ&&YGO)d;mK4R1_s9V%#etZ2wxwowic-?7f?V97Du6s& zrHqo20xNy}^73-Ma$~*xqI7*jOG`_A10#JSBVC{h-Qvo;lEez#ykcdj0WPV<$wiq3 zC7Jno3Lpa$lk!VTY?Vq&GgGY664OkRQc_HHlM; Date: Sat, 24 May 2025 08:31:05 +0300 Subject: [PATCH 23/29] TODO feature: Rectangle selection to mass-paint, shift and mirror pixels etc... --- McBitFont/Form1.Designer.cs | 41 +++-- McBitFont/Form1.cs | 298 +++++++++++++++++++++++++----------- TODO.txt | 2 +- 3 files changed, 237 insertions(+), 104 deletions(-) diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 7cf13db..ec0e2e2 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -82,6 +82,7 @@ CodeShiftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); canvasToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ClearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + FillToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); shiftUpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); shiftDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); shiftLeftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -99,7 +100,7 @@ chkTopSide = new System.Windows.Forms.CheckBox(); chkHexCodes = new System.Windows.Forms.CheckBox(); label3 = new System.Windows.Forms.Label(); - FillToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + chkRectSelect = new System.Windows.Forms.CheckBox(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -111,7 +112,7 @@ // dotPanel.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; dotPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - dotPanel.BackColor = System.Drawing.SystemColors.ControlDark; + dotPanel.BackColor = System.Drawing.Color.Gray; dotPanel.Location = new System.Drawing.Point(14, 31); dotPanel.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); dotPanel.Name = "dotPanel"; @@ -120,6 +121,7 @@ dotPanel.Paint += dotPanel_Paint; dotPanel.MouseDown += dotPanel_MouseMove; dotPanel.MouseMove += dotPanel_MouseMove; + dotPanel.MouseUp += dotPanel_MouseMove; dotPanel.Resize += cbZoom_SelectedIndexChanged; // // nudX @@ -191,7 +193,7 @@ cbZoom.Location = new System.Drawing.Point(619, 52); cbZoom.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); cbZoom.Name = "cbZoom"; - cbZoom.Size = new System.Drawing.Size(68, 23); + cbZoom.Size = new System.Drawing.Size(75, 23); cbZoom.TabIndex = 6; cbZoom.TabStop = false; toolTip1.SetToolTip(cbZoom, "Canvas zoom level"); @@ -476,7 +478,7 @@ hScroll.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; hScroll.Location = new System.Drawing.Point(14, 609); hScroll.Name = "hScroll"; - hScroll.Size = new System.Drawing.Size(454, 21); + hScroll.Size = new System.Drawing.Size(427, 21); hScroll.TabIndex = 14; hScroll.ValueChanged += scroll_ValueChanged; // @@ -494,7 +496,7 @@ // lblCoords.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; lblCoords.AutoSize = true; - lblCoords.Location = new System.Drawing.Point(616, 132); + lblCoords.Location = new System.Drawing.Point(616, 138); lblCoords.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); lblCoords.Name = "lblCoords"; lblCoords.Size = new System.Drawing.Size(24, 15); @@ -745,6 +747,15 @@ ClearToolStripMenuItem.ToolTipText = "Clear canvas"; ClearToolStripMenuItem.Click += btnClear_Click; // + // FillToolStripMenuItem + // + FillToolStripMenuItem.Image = Properties.Resources.Canvas_Fill; + FillToolStripMenuItem.Name = "FillToolStripMenuItem"; + FillToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.B; + FillToolStripMenuItem.Size = new System.Drawing.Size(197, 22); + FillToolStripMenuItem.Text = "Fill canvas"; + FillToolStripMenuItem.Click += btnFill_Click; + // // shiftUpToolStripMenuItem // shiftUpToolStripMenuItem.Image = Properties.Resources.z_uo; @@ -909,26 +920,29 @@ // label3.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; label3.AutoSize = true; - label3.Location = new System.Drawing.Point(615, 117); + label3.Location = new System.Drawing.Point(615, 123); label3.Name = "label3"; label3.Size = new System.Drawing.Size(45, 15); label3.TabIndex = 21; label3.Text = "Cursor:"; // - // FillToolStripMenuItem + // chkRectSelect // - FillToolStripMenuItem.Image = Properties.Resources.Canvas_Fill; - FillToolStripMenuItem.Name = "FillToolStripMenuItem"; - FillToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.B; - FillToolStripMenuItem.Size = new System.Drawing.Size(197, 22); - FillToolStripMenuItem.Text = "Fill canvas"; - FillToolStripMenuItem.Click += btnFill_Click; + chkRectSelect.Appearance = System.Windows.Forms.Appearance.Button; + chkRectSelect.Location = new System.Drawing.Point(620, 92); + chkRectSelect.Name = "chkRectSelect"; + chkRectSelect.Size = new System.Drawing.Size(74, 27); + chkRectSelect.TabIndex = 23; + chkRectSelect.Text = "Rect Select"; + chkRectSelect.UseVisualStyleBackColor = true; + chkRectSelect.CheckedChanged += chkRectSelect_CheckedChanged; // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; ClientSize = new System.Drawing.Size(915, 647); + Controls.Add(chkRectSelect); Controls.Add(chkHexCodes); Controls.Add(label3); Controls.Add(chkTopSide); @@ -1047,6 +1061,7 @@ private System.Windows.Forms.CheckBox chkHexCodes; private System.Windows.Forms.Button btnFill; private System.Windows.Forms.ToolStripMenuItem FillToolStripMenuItem; + private System.Windows.Forms.CheckBox chkRectSelect; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index b2bfc54..581c7dc 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -55,22 +55,29 @@ namespace McBitFont { private int gap; private int w, h; public bool monospaced = false; - bool modified = false; - bool prjModified = false; + private bool modified = false; + private bool prjModified = false; public const string version = "2.0"; public string prjName = "Untitled"; public string prjFileName = ""; - public int codepage = 1251; + private int codepage = 1251; private FrameMiniature fbuf; private bool fbuffer = false; - public int baseline = 0; - public bool set_base = false; + private int baseline = 0; + private bool set_base = false; + private Point selection1, selection2; + public MainForm() { InitializeComponent(); this.dotPanel.MouseWheel += new MouseEventHandler(this.DotPanel_MouseWheel); } + private void SetNewWH() { + w = pixelOffset + dotWidth * (cellSize + gap); + h = pixelOffset + dotHeight * (cellSize + gap); + } + private void Form1_Load(object sender, EventArgs e) { lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; tsmiMakeVarWidth.Visible = monospaced; @@ -78,9 +85,11 @@ namespace McBitFont { dotWidth = (int)nudX.Value; dotHeight = (int)nudY.Value; + selection1 = new Point(0, 0); + selection2 = new Point(dotWidth - 1, dotHeight - 1); + gap = (cellSize < 5) ? 0 : 1; - w = pixelOffset + dotWidth * (cellSize + gap); - h = pixelOffset + dotHeight * (cellSize + gap); + SetNewWH(); cbZoom.SelectedIndex = 3; @@ -230,8 +239,7 @@ namespace McBitFont { f = FrameResize(f, ww, hh); dotWidth = ww; dotHeight = hh; - w = pixelOffset + dotWidth * (cellSize + gap); - h = pixelOffset + dotHeight * (cellSize + gap); + SetNewWH(); cbZoom_SelectedIndexChanged(cbZoom, null); // Re-create history object @@ -242,8 +250,7 @@ namespace McBitFont { cellSize = Convert.ToInt32(cbZoom.Text); gap = (cellSize < 5) ? 0 : 1; - w = pixelOffset + dotWidth * (cellSize + gap); - h = pixelOffset + dotHeight * (cellSize + gap); + SetNewWH(); if (w <= dotPanel.Width) { hScroll.Enabled = false; hScroll.Value = 0; @@ -265,14 +272,76 @@ namespace McBitFont { dotPanel.Refresh(); } - private void btnShiftLeft_Click(object sender, EventArgs e) { + // Deconstruct selection coords from points + private (int x, int y, int x2, int y2) RectSelCoords() { + int x, y, x2, y2; + if (chkRectSelect.Checked) { + x = selection1.X; y = selection1.Y; + x2 = selection2.X; y2 = selection2.Y; + } else { + x = y = 0; + x2 = dotWidth - 1; y2 = dotHeight - 1; + } + return (x, y, x2, y2); + } + + private void btnShiftUp_Click(object sender, EventArgs e) { + int x, y, x2, y2; bool c; + (x, y, x2, y2) = RectSelCoords(); + history.AddPre(f); - for (int j = 0; j < dotHeight; j++) { - c = f.data[0, j]; - for (int i = 0; i < dotWidth; i++) { - if (i == dotWidth - 1) { + for (int i = x; i <= x2; i++) { + c = f.data[i, y]; + for (int j = y; j <= y2; j++) { + if (j == y2) { + f.data[i, j] = c; + } else { + f.data[i, j] = f.data[i, j + 1]; + } + } + } + history.AddPost(f); + CheckHistoryButtons(); + modified = true; + dotPanel.Refresh(); + } + + private void btnShiftDown_Click(object sender, EventArgs e) { + int x, y, x2, y2; + bool c; + + (x, y, x2, y2) = RectSelCoords(); + + history.AddPre(f); + for (int i = x; i <= x2; i++) { + c = f.data[i, y2]; + for (int j = y2; j >= y; j--) { + if (j == y) { + f.data[i, j] = c; + } else { + f.data[i, j] = f.data[i, j - 1]; + } + } + } + history.AddPost(f); + CheckHistoryButtons(); + modified = true; + dotPanel.Refresh(); + } + + private void btnShiftLeft_Click(object sender, EventArgs e) { + int x, y, x2, y2; + bool c; + + (x, y, x2, y2) = RectSelCoords(); + + history.AddPre(f); + for (int j = y; j <= y2; j++) { + c = f.data[x, j]; + for (int i = x; i <= x2; i++) { + if (i == x2) { f.data[i, j] = c; } else { f.data[i, j] = f.data[i + 1, j]; @@ -286,13 +355,15 @@ namespace McBitFont { } private void btnShiftRight_Click(object sender, EventArgs e) { + int x, y, x2, y2; bool c; + (x, y, x2, y2) = RectSelCoords(); history.AddPre(f); - for (int j = 0; j < dotHeight; j++) { - c = f.data[dotWidth - 1, j]; - for (int i = dotWidth - 1; i >= 0; i--) { - if (i == 0) { + for (int j = y; j <= y2; j++) { + c = f.data[x2, j]; + for (int i = x2; i >= x; i--) { + if (i == x) { f.data[i, j] = c; } else { f.data[i, j] = f.data[i - 1, j]; @@ -308,6 +379,9 @@ namespace McBitFont { private bool mouseDown = false; private bool fChanged = false; private void dotPanel_MouseMove(object sender, MouseEventArgs e) { + var rectSel = chkRectSelect.Checked; + bool rectSelUpdated = false; + // Moving baseline Rectangle rect1, rect2; if (set_base) { @@ -337,21 +411,67 @@ namespace McBitFont { int j = (e.Y - pixelOffset + vScroll.Value) / (cellSize + gap); lblCoords.Text = i.ToString() + ',' + j.ToString(); - // history management + // History and Rectangle selection management + if (rectSel && mouseDown && e.Button != MouseButtons.None) { + if (selection2.X != i || selection2.Y != j) { + rectSelUpdated = true; + selection2.X = i; + selection2.Y = j; + } + } if (e.Button != MouseButtons.None && !mouseDown) { mouseDown = true; - history.AddPre(f, false); + if (rectSel) { + selection1.X = i; + selection1.Y = j; + selection2.X = i; + selection2.Y = j; + dotPanel.Invalidate(); + } else history.AddPre(f, false); } if (e.Button == MouseButtons.None && mouseDown) { mouseDown = false; - if (!fChanged) { - history.Remove(false); + if (rectSel) { + NormPoints(ref selection1, ref selection2); + dotPanel.Invalidate(); } else { - fChanged = false; - history.ApplyAdded(); - history.AddPost(f); + if (!fChanged) { + history.Remove(false); + } else { + fChanged = false; + history.ApplyAdded(); + history.AddPost(f); + } + CheckHistoryButtons(); } - CheckHistoryButtons(); + } + + if (rectSel) { + if (mouseDown && rectSelUpdated) { + int x, xx, x2, xx2, y, yy, y2, yy2; + + Point p1 = new(selection1.X, selection1.Y); + Point p2 = new(selection2.X, selection2.Y); + NormPoints(ref p1, ref p2); + x = pixelOffset + (p1.X - 1) * (cellSize + gap) - hScroll.Value - 1; + y = pixelOffset + (p1.Y - 1) * (cellSize + gap) - vScroll.Value - 1; + x2 = pixelOffset + (p2.X + 2) * (cellSize + gap) - hScroll.Value - 1; + y2 = pixelOffset + (p2.Y + 2) * (cellSize + gap) - vScroll.Value - 1; + xx = x + 2 * (cellSize + gap); + yy = y + 2 * (cellSize + gap); + xx2 = x2 - 2 * (cellSize + gap); + yy2 = y2 - 2 * (cellSize + gap); + + Region reg, reg2; + reg = new(new Rectangle(x, y, x2 - x + 1, y2 - y + 1)); + reg.Exclude(new Rectangle(x + 1, y + 1, x2 - x - 1, y2 - y - 1)); + reg2 = new(new Rectangle(xx, yy, xx2 - xx + 1, yy2 - yy + 1)); + reg2.Exclude(new Rectangle(xx + 1, yy + 1, xx2 - xx - 1, yy2 - yy - 1)); + reg.Union(reg2); + + dotPanel.Invalidate(reg); + } + return; } // Paint black / white @@ -376,53 +496,19 @@ namespace McBitFont { } - private void btnShiftUp_Click(object sender, EventArgs e) { - bool c; - - history.AddPre(f); - for (int i = 0; i < dotWidth; i++) { - c = f.data[i, 0]; - for (int j = 0; j < dotHeight; j++) { - if (j == dotHeight - 1) { - f.data[i, j] = c; - } else { - f.data[i, j] = f.data[i, j + 1]; - } - } - } - history.AddPost(f); - CheckHistoryButtons(); - modified = true; - dotPanel.Refresh(); - } - - private void btnShiftDown_Click(object sender, EventArgs e) { - bool c; - - history.AddPre(f); - for (int i = 0; i < dotWidth; i++) { - c = f.data[i, dotHeight - 1]; - for (int j = dotHeight - 1; j >= 0; j--) { - if (j == 0) { - f.data[i, j] = c; - } else { - f.data[i, j] = f.data[i, j - 1]; - } - } - } - history.AddPost(f); - CheckHistoryButtons(); - modified = true; - dotPanel.Refresh(); - } - private void btnInvert_Click(object sender, EventArgs e) { + int x, y, x2, y2; + history.AddPre(f); - for (int i = 0; i < dotWidth; i++) { - for (int j = 0; j < dotHeight; j++) { + + (x, y, x2, y2) = RectSelCoords(); + + for (int i = x; i <= x2; i++) { + for (int j = y; j <= y2; j++) { f.data[i, j] = !f.data[i, j]; } } + history.AddPost(f); CheckHistoryButtons(); modified = true; @@ -430,13 +516,15 @@ namespace McBitFont { } private void btnMirrorX_Click(object sender, EventArgs e) { - int a, b, j; + int a, b, j, x, y, x2, y2; bool c; + (x, y, x2, y2) = RectSelCoords(); + history.AddPre(f); - for (j = 0; j < dotHeight; j++) { - a = 0; - b = dotWidth - 1; + for (j = y; j <= y2; j++) { + a = x; + b = x2; while (a < b) { c = f.data[a, j]; f.data[a, j] = f.data[b, j]; @@ -452,13 +540,15 @@ namespace McBitFont { } private void btnMirrorY_Click(object sender, EventArgs e) { - int a, b, i; + int a, b, i, x, y, x2, y2; bool c; + (x, y, x2, y2) = RectSelCoords(); + history.AddPre(f); - for (i = 0; i < dotWidth; i++) { - a = 0; - b = dotHeight - 1; + for (i = x; i <= x2; i++) { + a = y; + b = y2; while (a < b) { c = f.data[i, a]; f.data[i, a] = f.data[i, b]; @@ -532,34 +622,57 @@ namespace McBitFont { SolidBrush sbb = new SolidBrush(Color.Black); SolidBrush sbw = new SolidBrush(Color.White); SolidBrush sb; - Pen p = new Pen(Color.FromArgb(64, Color.Green)); + Pen p = new Pen(Color.FromArgb(100, 20, 120, 20)); int x, y; + // Draw the grid for (int i = 0; i < dotWidth; i++) { x = pixelOffset + i * (cellSize + gap) - hScroll.Value; + // Green lines every 8 cells if (gap > 0 && i != 0 && (i % 8) == 0) { g.DrawLine(p, x - 1, pixelOffset - vScroll.Value, x - 1, h); } for (int j = 0; j < dotHeight; j++) { y = pixelOffset + j * (cellSize + gap) - vScroll.Value; + // Green lines every 8 cells if (gap > 0 && i == 0 && j != 0 && (j % 8) == 0) { g.DrawLine(p, pixelOffset - hScroll.Value, y - 1, w, y - 1); } + // Fill the cell with color if (f.data[i, j]) sb = sbb; else sb = sbw; g.FillRectangle(sb, x, (baseline == j ? y + 1 : y), cellSize, (baseline == j ? cellSize - 1 : cellSize)); } } + // Draw the baseline if (baseline > 0 && gap > 0) { x = pixelOffset - hScroll.Value; y = pixelOffset + baseline * (cellSize + gap) - vScroll.Value; - g.DrawLine( - new Pen(Color.Blue, 2), - x, y, - w, y - ); + + Pen sbBase = new(Color.Blue, 2); + g.DrawLine(sbBase, x, y, w, y); } + + // Draw the Rect selection + if (chkRectSelect.Checked) { + Point p1 = new(selection1.X, selection1.Y); + Point p2 = new(selection2.X, selection2.Y); + NormPoints(ref p1, ref p2); + + Pen sbRect = new(Color.FromArgb(200, 0, 200, 0), 3); + x = pixelOffset + p1.X * (cellSize + gap) - hScroll.Value - 1; + y = pixelOffset + p1.Y * (cellSize + gap) - vScroll.Value - 1; + int ww = pixelOffset + (p2.X + 1) * (cellSize + gap) - hScroll.Value - x - 1; + int hh = pixelOffset + (p2.Y + 1) * (cellSize + gap) - vScroll.Value - y - 1; + g.DrawRectangle(sbRect, x, y, ww, hh); + } + } + + private static void NormPoints(ref Point a, ref Point b) { + int bot; + if (a.X > b.X) { bot = a.X; a.X = b.X; b.X = bot; } + if (a.Y > b.Y) { bot = a.Y; a.Y = b.Y; b.Y = bot; } } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { @@ -940,15 +1053,17 @@ namespace McBitFont { } private void FillFrame(bool val) { + int x, y, x2, y2; + history.AddPre(f); - if (!val) Array.Clear(f.data); - else - for (int i = 0; i < f.width; i++) { - for (int j = 0; j < f.height; j++) { - f.data[i, j] = val; - } + (x, y, x2, y2) = RectSelCoords(); + + for (int i = x; i <= x2; i++) { + for (int j = y; j <= y2; j++) { + f.data[i, j] = val; } + } history.AddPost(f); CheckHistoryButtons(); @@ -1116,5 +1231,8 @@ namespace McBitFont { } } + private void chkRectSelect_CheckedChanged(object sender, EventArgs e) { + dotPanel.Refresh(); + } } } diff --git a/TODO.txt b/TODO.txt index 6c5cf0e..ae9ef9c 100644 --- a/TODO.txt +++ b/TODO.txt @@ -18,7 +18,7 @@ V Ability to make monospaced font a variable width one V Undo/Redo for canvas changes V Image import from a file - Import from a text array -- Rectangle selection to mass-paint, shift and mirror pixels +V Rectangle selection to mass-paint, shift and mirror pixels etc... V "Packed" fonts export V "Bytes total comment in export From d7dfcd3931a8158a46f9230776a233c1c4e96217 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Sat, 24 May 2025 09:42:14 +0300 Subject: [PATCH 24/29] UI tidy-ups; Little fixes; New Main window screenshot --- McBitFont/Form1.Designer.cs | 33 ++++++++++++++++------------ McBitFont/Form1.cs | 5 +++-- McBitFont/ImageImporter.Designer.cs | 5 +++++ McBitFont/ImageImporter.resx | 3 +++ images/Screenshot_Main.png | Bin 46724 -> 51688 bytes 5 files changed, 30 insertions(+), 16 deletions(-) diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index ec0e2e2..4f07d84 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -99,8 +99,8 @@ chkLeftSide = new System.Windows.Forms.CheckBox(); chkTopSide = new System.Windows.Forms.CheckBox(); chkHexCodes = new System.Windows.Forms.CheckBox(); - label3 = new System.Windows.Forms.Label(); chkRectSelect = new System.Windows.Forms.CheckBox(); + label3 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -529,7 +529,7 @@ newToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N; newToolStripMenuItem.Size = new System.Drawing.Size(184, 22); newToolStripMenuItem.Text = "New"; - newToolStripMenuItem.ToolTipText = "Create new file"; + newToolStripMenuItem.ToolTipText = "Create new project"; newToolStripMenuItem.Click += newToolStripMenuItem_Click; // // openToolStripMenuItem @@ -571,6 +571,7 @@ importImageToolStripMenuItem.Name = "importImageToolStripMenuItem"; importImageToolStripMenuItem.Size = new System.Drawing.Size(184, 22); importImageToolStripMenuItem.Text = "Import image"; + importImageToolStripMenuItem.ToolTipText = "Import image from a file"; importImageToolStripMenuItem.Click += importImageToolStripMenuItem_Click; // // exportToolStripMenuItem @@ -744,7 +745,7 @@ ClearToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W; ClearToolStripMenuItem.Size = new System.Drawing.Size(197, 22); ClearToolStripMenuItem.Text = "Clear canvas"; - ClearToolStripMenuItem.ToolTipText = "Clear canvas"; + ClearToolStripMenuItem.ToolTipText = "Paint canvas white"; ClearToolStripMenuItem.Click += btnClear_Click; // // FillToolStripMenuItem @@ -754,6 +755,7 @@ FillToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.B; FillToolStripMenuItem.Size = new System.Drawing.Size(197, 22); FillToolStripMenuItem.Text = "Fill canvas"; + FillToolStripMenuItem.ToolTipText = "Paint canvas black"; FillToolStripMenuItem.Click += btnFill_Click; // // shiftUpToolStripMenuItem @@ -906,6 +908,7 @@ // // chkHexCodes // + chkHexCodes.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; chkHexCodes.AutoSize = true; chkHexCodes.Location = new System.Drawing.Point(618, 155); chkHexCodes.Name = "chkHexCodes"; @@ -916,6 +919,19 @@ chkHexCodes.UseVisualStyleBackColor = true; chkHexCodes.CheckedChanged += chkHexCodes_CheckedChanged; // + // chkRectSelect + // + chkRectSelect.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + chkRectSelect.Appearance = System.Windows.Forms.Appearance.Button; + chkRectSelect.Location = new System.Drawing.Point(620, 92); + chkRectSelect.Name = "chkRectSelect"; + chkRectSelect.Size = new System.Drawing.Size(74, 27); + chkRectSelect.TabIndex = 23; + chkRectSelect.Text = "Rect Select"; + toolTip1.SetToolTip(chkRectSelect, "Turn on/off rectangle selection"); + chkRectSelect.UseVisualStyleBackColor = true; + chkRectSelect.CheckedChanged += chkRectSelect_CheckedChanged; + // // label3 // label3.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; @@ -926,17 +942,6 @@ label3.TabIndex = 21; label3.Text = "Cursor:"; // - // chkRectSelect - // - chkRectSelect.Appearance = System.Windows.Forms.Appearance.Button; - chkRectSelect.Location = new System.Drawing.Point(620, 92); - chkRectSelect.Name = "chkRectSelect"; - chkRectSelect.Size = new System.Drawing.Size(74, 27); - chkRectSelect.TabIndex = 23; - chkRectSelect.Text = "Rect Select"; - chkRectSelect.UseVisualStyleBackColor = true; - chkRectSelect.CheckedChanged += chkRectSelect_CheckedChanged; - // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 581c7dc..eda7c9e 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -177,10 +177,10 @@ namespace McBitFont { ilMiniatures.Images.Add(s, (Image)bmp); miniList.Items[s].ImageKey = s; } + prjModified = true; } if (nudX.Focused) { modified = true; - prjModified = true; } DotResize((int)nudX.Value, dotHeight); @@ -239,6 +239,8 @@ namespace McBitFont { f = FrameResize(f, ww, hh); dotWidth = ww; dotHeight = hh; + if (selection2.X > dotWidth - 1) selection2.X = dotWidth - 1; + if (selection2.Y > dotHeight - 1) selection2.Y = dotHeight - 1; SetNewWH(); cbZoom_SelectedIndexChanged(cbZoom, null); @@ -1068,7 +1070,6 @@ namespace McBitFont { history.AddPost(f); CheckHistoryButtons(); modified = true; - prjModified = true; dotPanel.Refresh(); } diff --git a/McBitFont/ImageImporter.Designer.cs b/McBitFont/ImageImporter.Designer.cs index d27cd77..ff4c113 100644 --- a/McBitFont/ImageImporter.Designer.cs +++ b/McBitFont/ImageImporter.Designer.cs @@ -110,6 +110,7 @@ btnLoadImage.Text = " Load Image"; btnLoadImage.TextAlign = System.Drawing.ContentAlignment.MiddleRight; btnLoadImage.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + toolTip1.SetToolTip(btnLoadImage, "Load image from a file"); btnLoadImage.UseVisualStyleBackColor = true; btnLoadImage.Click += btnLoadImage_Click; // @@ -140,6 +141,7 @@ btnConvert.Text = " Convert"; btnConvert.TextAlign = System.Drawing.ContentAlignment.MiddleRight; btnConvert.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + toolTip1.SetToolTip(btnConvert, "Convert image to pixelated black and white"); btnConvert.UseVisualStyleBackColor = true; btnConvert.Click += btnConvert_Click; // @@ -154,6 +156,7 @@ tbPixelization.Name = "tbPixelization"; tbPixelization.Size = new System.Drawing.Size(128, 32); tbPixelization.TabIndex = 7; + toolTip1.SetToolTip(tbPixelization, "Pixelization level. Higher value makes bigger pixels during conversion"); tbPixelization.Value = 1; tbPixelization.ValueChanged += tbPixelization_ValueChanged; tbPixelization.KeyDown += tbPixelization_KeyDown; @@ -188,6 +191,7 @@ tbThreshold.Size = new System.Drawing.Size(128, 32); tbThreshold.TabIndex = 9; tbThreshold.TickFrequency = 8; + toolTip1.SetToolTip(tbThreshold, "Black / White conversion threshold"); tbThreshold.ValueChanged += tbThreshold_ValueChanged; tbThreshold.KeyDown += tbThreshold_KeyDown; // @@ -221,6 +225,7 @@ btnResize.Text = " Resize to frame"; btnResize.TextAlign = System.Drawing.ContentAlignment.MiddleRight; btnResize.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + toolTip1.SetToolTip(btnResize, "Resize converted image to fit the current frame"); btnResize.UseVisualStyleBackColor = true; btnResize.Click += btnResize_Click; // diff --git a/McBitFont/ImageImporter.resx b/McBitFont/ImageImporter.resx index 9a6538c..d3fcd46 100644 --- a/McBitFont/ImageImporter.resx +++ b/McBitFont/ImageImporter.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 147, 17 + 17, 17 diff --git a/images/Screenshot_Main.png b/images/Screenshot_Main.png index 189e1d0c7b8e5fbbd17734d3ff9398d5ee72fa3b..dffbe83eb39a48acd8d7a05fc04cb3496f7608bf 100644 GIT binary patch literal 51688 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 z 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 literal 46724 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�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 +GqBclI*`K@lW*gsrvQz_W>(HUHI{uq%G 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 bT6jOQtQxzmrId1yN(o5QKm( Date: Sun, 25 May 2025 22:48:38 +0300 Subject: [PATCH 25/29] WIP: hzzzzzzz.... --- McBitFont/Form1.Designer.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 4f07d84..edc6839 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -348,12 +348,15 @@ // btnExport // btnExport.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + btnExport.Image = Properties.Resources.z_export; btnExport.Location = new System.Drawing.Point(812, 126); btnExport.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); btnExport.Name = "btnExport"; btnExport.Size = new System.Drawing.Size(88, 27); btnExport.TabIndex = 10; - btnExport.Text = "Export"; + btnExport.Text = " Export"; + btnExport.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + btnExport.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; toolTip1.SetToolTip(btnExport, "Configure and export data"); btnExport.UseVisualStyleBackColor = true; btnExport.Click += button1_Click; @@ -463,12 +466,15 @@ // btnApply // btnApply.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + btnApply.Image = Properties.Resources.z_tick; btnApply.Location = new System.Drawing.Point(718, 126); btnApply.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); btnApply.Name = "btnApply"; btnApply.Size = new System.Drawing.Size(88, 27); btnApply.TabIndex = 13; - btnApply.Text = "Apply"; + btnApply.Text = " Apply"; + btnApply.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + btnApply.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; toolTip1.SetToolTip(btnApply, "Apply changes made to the symbol"); btnApply.UseVisualStyleBackColor = true; btnApply.Click += button2_Click; From d508f0ab357dc215cb73205b0359af7540b9d08c Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Sun, 25 May 2025 23:37:30 +0300 Subject: [PATCH 26/29] UI changes... icons etc --- McBitFont/Form1.Designer.cs | 31 ++++++++++++++++----- McBitFont/Form1.cs | 7 ++++- McBitFont/Properties/Resources.Designer.cs | 20 +++++++++++++ McBitFont/Properties/Resources.resx | 10 +++++-- McBitFont/Resources/arrow_inout1.png | Bin 0 -> 551 bytes McBitFont/Resources/fam_base.png | Bin 0 -> 1825 bytes McBitFont/Resources/fam_rectt.png | Bin 0 -> 1703 bytes icons/fam_base.png | Bin 0 -> 1830 bytes icons/fam_rectt.png | Bin 0 -> 1703 bytes icons/{ => famfamfam}/Canvas_Clear.png | Bin icons/{ => famfamfam}/Canvas_Fill.png | Bin icons/famfamfam/fam_base.png | Bin 0 -> 1825 bytes icons/famfamfam/fam_rectt.png | Bin 0 -> 1703 bytes images/Screenshot_Main.png | Bin 51688 -> 50066 bytes 14 files changed, 58 insertions(+), 10 deletions(-) create mode 100644 McBitFont/Resources/arrow_inout1.png create mode 100644 McBitFont/Resources/fam_base.png create mode 100644 McBitFont/Resources/fam_rectt.png create mode 100644 icons/fam_base.png create mode 100644 icons/fam_rectt.png rename icons/{ => famfamfam}/Canvas_Clear.png (100%) rename icons/{ => famfamfam}/Canvas_Fill.png (100%) create mode 100644 icons/famfamfam/fam_base.png create mode 100644 icons/famfamfam/fam_rectt.png diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index edc6839..8bfd76e 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -101,6 +101,7 @@ chkHexCodes = new System.Windows.Forms.CheckBox(); chkRectSelect = new System.Windows.Forms.CheckBox(); label3 = new System.Windows.Forms.Label(); + selectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -604,7 +605,7 @@ // // editToolStripMenuItem // - editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { undoToolStripMenuItem, redoToolStripMenuItem, copyToolStripMenuItem, pasteToolStripMenuItem }); + editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { undoToolStripMenuItem, redoToolStripMenuItem, copyToolStripMenuItem, pasteToolStripMenuItem, selectToolStripMenuItem }); editToolStripMenuItem.Name = "editToolStripMenuItem"; editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); editToolStripMenuItem.Text = "Edit"; @@ -615,7 +616,7 @@ undoToolStripMenuItem.Image = Properties.Resources.arrow_undo; undoToolStripMenuItem.Name = "undoToolStripMenuItem"; undoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z; - undoToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + undoToolStripMenuItem.Size = new System.Drawing.Size(180, 22); undoToolStripMenuItem.Text = "Undo"; undoToolStripMenuItem.ToolTipText = "Undo last canvas change"; undoToolStripMenuItem.Click += undoToolStripMenuItem_Click; @@ -625,7 +626,7 @@ redoToolStripMenuItem.Image = Properties.Resources.arrow_redo; redoToolStripMenuItem.Name = "redoToolStripMenuItem"; redoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y; - redoToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + redoToolStripMenuItem.Size = new System.Drawing.Size(180, 22); redoToolStripMenuItem.Text = "Redo"; redoToolStripMenuItem.ToolTipText = "Redo canvas change"; redoToolStripMenuItem.Click += redoToolStripMenuItem_Click; @@ -637,7 +638,7 @@ copyToolStripMenuItem.Name = "copyToolStripMenuItem"; copyToolStripMenuItem.ShortcutKeyDisplayString = ""; copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C; - copyToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + copyToolStripMenuItem.Size = new System.Drawing.Size(180, 22); copyToolStripMenuItem.Text = "Copy"; copyToolStripMenuItem.ToolTipText = "Copy current symbol to clipboard"; copyToolStripMenuItem.Click += copyToolStripMenuItem_Click; @@ -649,7 +650,7 @@ pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; pasteToolStripMenuItem.ShortcutKeyDisplayString = ""; pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V; - pasteToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + pasteToolStripMenuItem.Size = new System.Drawing.Size(180, 22); pasteToolStripMenuItem.Text = "Paste"; pasteToolStripMenuItem.ToolTipText = "Paste from clipboard to current symbol"; pasteToolStripMenuItem.Click += pasteToolStripMenuItem_Click; @@ -870,12 +871,15 @@ // btnBaseline // btnBaseline.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + btnBaseline.Image = Properties.Resources.fam_base; + btnBaseline.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; btnBaseline.Location = new System.Drawing.Point(718, 92); btnBaseline.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); btnBaseline.Name = "btnBaseline"; btnBaseline.Size = new System.Drawing.Size(88, 27); btnBaseline.TabIndex = 18; - btnBaseline.Text = "Baseline"; + btnBaseline.Text = " Baseline"; + btnBaseline.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; toolTip1.SetToolTip(btnBaseline, "Set irtual base line for the font"); btnBaseline.UseVisualStyleBackColor = true; btnBaseline.Click += btnBaseline_Click; @@ -929,11 +933,15 @@ // chkRectSelect.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; chkRectSelect.Appearance = System.Windows.Forms.Appearance.Button; + chkRectSelect.Image = Properties.Resources.fam_rectt; + chkRectSelect.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; chkRectSelect.Location = new System.Drawing.Point(620, 92); chkRectSelect.Name = "chkRectSelect"; chkRectSelect.Size = new System.Drawing.Size(74, 27); chkRectSelect.TabIndex = 23; - chkRectSelect.Text = "Rect Select"; + chkRectSelect.Text = " Select"; + chkRectSelect.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + chkRectSelect.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; toolTip1.SetToolTip(chkRectSelect, "Turn on/off rectangle selection"); chkRectSelect.UseVisualStyleBackColor = true; chkRectSelect.CheckedChanged += chkRectSelect_CheckedChanged; @@ -948,6 +956,14 @@ label3.TabIndex = 21; label3.Text = "Cursor:"; // + // selectToolStripMenuItem + // + selectToolStripMenuItem.Image = Properties.Resources.fam_rectt; + selectToolStripMenuItem.Name = "selectToolStripMenuItem"; + selectToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + selectToolStripMenuItem.Text = "Select"; + selectToolStripMenuItem.Click += selectToolStripMenuItem_Click; + // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); @@ -1073,6 +1089,7 @@ private System.Windows.Forms.Button btnFill; private System.Windows.Forms.ToolStripMenuItem FillToolStripMenuItem; private System.Windows.Forms.CheckBox chkRectSelect; + private System.Windows.Forms.ToolStripMenuItem selectToolStripMenuItem; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index eda7c9e..c684761 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -383,7 +383,7 @@ namespace McBitFont { private void dotPanel_MouseMove(object sender, MouseEventArgs e) { var rectSel = chkRectSelect.Checked; bool rectSelUpdated = false; - + // Moving baseline Rectangle rect1, rect2; if (set_base) { @@ -1235,5 +1235,10 @@ namespace McBitFont { private void chkRectSelect_CheckedChanged(object sender, EventArgs e) { dotPanel.Refresh(); } + + private void selectToolStripMenuItem_Click(object sender, EventArgs e) { + chkRectSelect.Checked = !chkRectSelect.Checked; + selectToolStripMenuItem.Checked = !selectToolStripMenuItem.Checked; + } } } diff --git a/McBitFont/Properties/Resources.Designer.cs b/McBitFont/Properties/Resources.Designer.cs index 281bcaa..2c7606b 100644 --- a/McBitFont/Properties/Resources.Designer.cs +++ b/McBitFont/Properties/Resources.Designer.cs @@ -140,6 +140,26 @@ namespace McBitFont.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fam_base { + get { + object obj = ResourceManager.GetObject("fam_base", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fam_rectt { + get { + object obj = ResourceManager.GetObject("fam_rectt", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/McBitFont/Properties/Resources.resx b/McBitFont/Properties/Resources.resx index cabd1c6..90e4395 100644 --- a/McBitFont/Properties/Resources.resx +++ b/McBitFont/Properties/Resources.resx @@ -196,9 +196,15 @@ ..\Resources\arrow_redo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\fam_rectt.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\Canvas_Fill.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 @@ -214,7 +220,7 @@ ..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Canvas_Fill.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\fam_base.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/arrow_inout1.png b/McBitFont/Resources/arrow_inout1.png new file mode 100644 index 0000000000000000000000000000000000000000..1b763672ab45b357e12b5e80783d1eac19aa429c GIT binary patch literal 551 zcmV+?0@(eDP)(HWsOpaN*gR#GpYXhHKL|EB8l4*TSU_vTR+aX-(Oi?S;8XyR2It;Uw(aI)9^S|=&95eX@({k9USGy;sUSUzeJ^< zMds$`SXy48v$4bI@E9?)it=aq5A%!jd|dcIDK=`4J{pRP&HSggJxd`56RH!pk4D8J p8dUC|epvAzhprq*3?{^oguj5GN{z3E7kmH!002ovPDHLkV1kL#`6U1V literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/fam_base.png b/McBitFont/Resources/fam_base.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6cdcbd28e3b1b14c8d9021206c8c4b1f1c15f3 GIT binary patch literal 1825 zcmb_d&u`pB6gEN%CA1O}LZAw%mMbI>j6MFnV|5!sHn1zzA*72M#AU}b<6SFjkFlNX zCI7Nwh?#a%Oog6U2wT;{A zt$6?jQc+QLo=&qen0K|tZUEzY+R)SnQXO=)&Dx>5AMUDKvJfiKO~f#^RiEg@Bbavl zk5vm>u7Pa>d&ne#X$7#p{Au8>;Bm0m`)uh9zPj3^s`9`vX0w?-vvpaF4U-UJV9T&9 z1PD|fXBC~Jth~9h&=VyqlDtY}rq&i|BoC{u22>X@qWuym>M8w zEiOMSrj2vX3^5g{$f^>sW{b@yvXbRQKE-sq{DcF@Z5XybF6EM@t&6hSK7ufo3Aq$q z4v%wT?1@qy7EEj(0nM9rGi_0@NK^b_4aEfP!W?t>|;XoCUEgQVIblDIE(V z&&HbCrZL!(Q(1sxU}rZh!Y~+QWkoY42EDEZG3!af1J@;fgjtL*wR~j7j)REHFtUUb zN7ToJV6xiZlkBjrY`uS>axNLz_|GfzdE_`TN5V7-ietw@1a~+hoGP>fADAk_1b896SZ91`r~D2jx@k?4q8&5b~Ueo{i|j+f`-uK0F2 znkH(aiGZ?N>s^i2MHawdF`ZnJj~DX1+&`NLF#3$*FWi(eu4c3ln`6k`bH!ymjeJRu zo=x2s-0X1IM>y^X+eIdqLx+^ih4E1GN*o02%9Cm(Y|D2s|y!!t4r`n&tt^ITzPp*!J=1Kp{ctl5|(Ur&FeRBV=ufBPE c?T2@i*M40;y>aKgM|Be$Z140QemeT`U+|_iod5s; literal 0 HcmV?d00001 diff --git a/McBitFont/Resources/fam_rectt.png b/McBitFont/Resources/fam_rectt.png new file mode 100644 index 0000000000000000000000000000000000000000..796b5202667679e7bca2b28b5d97bada9e20711b GIT binary patch literal 1703 zcmbVNTZr6L7>?cC6c-b!Wh=>vT#-AH-dO^g|f-rrk7h$hOQ_-ajKP*U>KRYLhJ}F4Y3 zUZ{G@Ezc&>p-05&9^wQ6O|jSu+F^ov1!=&G_;vOeNa6sJwhGcrCMedNMRAtJRJ3!7 z>_MoBmYuUr8{)k6u&6@S08j(alocB(D&p&-pTy;2Qb(2IV-EOX{ zMVffAAEiDE#f%ZVtdkZbZgm(#5KU;qWRxeK zG0?*iP;xMfX#gbN1Q&JU_CTC?fVOEs!!+SoWrB^GEM-ZPU59$Ie2oClt>a8IHuVw& z6Nx09TjF7i60#{esrDlZDl}o8*rRhx+~)o)nh4Ft6sIh%GS(hfYH@5?RLz_v9ysQQ zgmsgH>o(9LPH92PswP82R@ExhkzyfTdkAU>!XeaQ#IN@^K#i)ZAtgg!1LZwKaEfmV zCLXG@IKVt$KfnzNqOc)}lQg1P)@Csm=I*qC3&%m_FiCOf(Q>gM@tAYIPmo24k|%~G z!+M^|2G(sk?`gKInucjAhNgRlGTvWgUMH(;wtv{=gn69fUsc;6u4@}qcCn?)I@L89 zL)(-oR9$FUrfQqUnC*$!=Pw#=uV>9%5zgpg9Yd(_7X+J@thl-%W5N?`LDzLDg)Yt0 zteXc7f=YhEOV=O0A4ll%(N)_Q2R(tXm-Tu<^0FdRB8?vVo8;q`lt=r!P0C4cQ2e2K z!s=-k$8@H_b9d9`0@pL2;H4W|zqL{hJ#Dc5-)8(j)<8@_34`S z?H3DYFP-@KgVm)UTllv(e*NysU+=#B)}OndzFc_+kV~EIXYQ)BPObjDbMCNqV8{Dc q&C;X(#kG4s{OFaRfbhbW6+e70Ha>mkXvxYxCFQw=;+ezGzVr_vGa}yr literal 0 HcmV?d00001 diff --git a/icons/fam_base.png b/icons/fam_base.png new file mode 100644 index 0000000000000000000000000000000000000000..ea83977475f578b3799ba476e4d91eacf3ff4c96 GIT binary patch literal 1830 zcmb_d&2QX96nCi{VR zPKa9(+zTYzl;rnv^ytoAK*B%{F_`H;Fd|WEZg;(n5obt`LuPVyY*GX@u+6mt$ zOr|Z$Wh7dYGzYYz+*q09l|y+S*?~{;a79Z)>-m5Qq7i7$zHsg}8ON*<**h zEa2M8+v<%80RyS1s5(hUSxF{st+7j>U3cr6+CZw^wzgV3RCmHHbxjsR4O#|b7+b0r zv;sH4)c4*}O>8=QAmcvZ5Ii-A-GBm|IE0iElGA!cL4R^&ljL3En<&apK&c~&qdR@VO)j9%}TQ-$fL#n+4-+gqWKO&4s~b#rl4z|Z2a z5gFvEfTQI6N56dz$B^6YtoHmb**`}|E9b9$dQW@s-O?AA@$h2*tNXu)AI5#!@An`6 q`p4_?cC6c-b!Wh=>vT#-AH-dO^g|f-rrk7h$hOQ_-ajKP*U>KRYLhJ}F4Y3 zUZ{G@Ezc&>p-05&9^wQ6O|jSu+F^ov1!=&G_;vOeNa6sJwhGcrCMedNMRAtJRJ3!7 z>_MoBmYuUr8{)k6u&6@S08j(alocB(D&p&-pTy;2Qb(2IV-EOX{ zMVffAAEiDE#f%ZVtdkZbZgm(#5KU;qWRxeK zG0?*iP;xMfX#gbN1Q&JU_CTC?fVOEs!!+SoWrB^GEM-ZPU59$Ie2oClt>a8IHuVw& z6Nx09TjF7i60#{esrDlZDl}o8*rRhx+~)o)nh4Ft6sIh%GS(hfYH@5?RLz_v9ysQQ zgmsgH>o(9LPH92PswP82R@ExhkzyfTdkAU>!XeaQ#IN@^K#i)ZAtgg!1LZwKaEfmV zCLXG@IKVt$KfnzNqOc)}lQg1P)@Csm=I*qC3&%m_FiCOf(Q>gM@tAYIPmo24k|%~G z!+M^|2G(sk?`gKInucjAhNgRlGTvWgUMH(;wtv{=gn69fUsc;6u4@}qcCn?)I@L89 zL)(-oR9$FUrfQqUnC*$!=Pw#=uV>9%5zgpg9Yd(_7X+J@thl-%W5N?`LDzLDg)Yt0 zteXc7f=YhEOV=O0A4ll%(N)_Q2R(tXm-Tu<^0FdRB8?vVo8;q`lt=r!P0C4cQ2e2K z!s=-k$8@H_b9d9`0@pL2;H4W|zqL{hJ#Dc5-)8(j)<8@_34`S z?H3DYFP-@KgVm)UTllv(e*NysU+=#B)}OndzFc_+kV~EIXYQ)BPObjDbMCNqV8{Dc q&C;X(#kG4s{OFaRfbhbW6+e70Ha>mkXvxYxCFQw=;+ezGzVr_vGa}yr literal 0 HcmV?d00001 diff --git a/icons/Canvas_Clear.png b/icons/famfamfam/Canvas_Clear.png similarity index 100% rename from icons/Canvas_Clear.png rename to icons/famfamfam/Canvas_Clear.png diff --git a/icons/Canvas_Fill.png b/icons/famfamfam/Canvas_Fill.png similarity index 100% rename from icons/Canvas_Fill.png rename to icons/famfamfam/Canvas_Fill.png diff --git a/icons/famfamfam/fam_base.png b/icons/famfamfam/fam_base.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6cdcbd28e3b1b14c8d9021206c8c4b1f1c15f3 GIT binary patch literal 1825 zcmb_d&u`pB6gEN%CA1O}LZAw%mMbI>j6MFnV|5!sHn1zzA*72M#AU}b<6SFjkFlNX zCI7Nwh?#a%Oog6U2wT;{A zt$6?jQc+QLo=&qen0K|tZUEzY+R)SnQXO=)&Dx>5AMUDKvJfiKO~f#^RiEg@Bbavl zk5vm>u7Pa>d&ne#X$7#p{Au8>;Bm0m`)uh9zPj3^s`9`vX0w?-vvpaF4U-UJV9T&9 z1PD|fXBC~Jth~9h&=VyqlDtY}rq&i|BoC{u22>X@qWuym>M8w zEiOMSrj2vX3^5g{$f^>sW{b@yvXbRQKE-sq{DcF@Z5XybF6EM@t&6hSK7ufo3Aq$q z4v%wT?1@qy7EEj(0nM9rGi_0@NK^b_4aEfP!W?t>|;XoCUEgQVIblDIE(V z&&HbCrZL!(Q(1sxU}rZh!Y~+QWkoY42EDEZG3!af1J@;fgjtL*wR~j7j)REHFtUUb zN7ToJV6xiZlkBjrY`uS>axNLz_|GfzdE_`TN5V7-ietw@1a~+hoGP>fADAk_1b896SZ91`r~D2jx@k?4q8&5b~Ueo{i|j+f`-uK0F2 znkH(aiGZ?N>s^i2MHawdF`ZnJj~DX1+&`NLF#3$*FWi(eu4c3ln`6k`bH!ymjeJRu zo=x2s-0X1IM>y^X+eIdqLx+^ih4E1GN*o02%9Cm(Y|D2s|y!!t4r`n&tt^ITzPp*!J=1Kp{ctl5|(Ur&FeRBV=ufBPE c?T2@i*M40;y>aKgM|Be$Z140QemeT`U+|_iod5s; literal 0 HcmV?d00001 diff --git a/icons/famfamfam/fam_rectt.png b/icons/famfamfam/fam_rectt.png new file mode 100644 index 0000000000000000000000000000000000000000..796b5202667679e7bca2b28b5d97bada9e20711b GIT binary patch literal 1703 zcmbVNTZr6L7>?cC6c-b!Wh=>vT#-AH-dO^g|f-rrk7h$hOQ_-ajKP*U>KRYLhJ}F4Y3 zUZ{G@Ezc&>p-05&9^wQ6O|jSu+F^ov1!=&G_;vOeNa6sJwhGcrCMedNMRAtJRJ3!7 z>_MoBmYuUr8{)k6u&6@S08j(alocB(D&p&-pTy;2Qb(2IV-EOX{ zMVffAAEiDE#f%ZVtdkZbZgm(#5KU;qWRxeK zG0?*iP;xMfX#gbN1Q&JU_CTC?fVOEs!!+SoWrB^GEM-ZPU59$Ie2oClt>a8IHuVw& z6Nx09TjF7i60#{esrDlZDl}o8*rRhx+~)o)nh4Ft6sIh%GS(hfYH@5?RLz_v9ysQQ zgmsgH>o(9LPH92PswP82R@ExhkzyfTdkAU>!XeaQ#IN@^K#i)ZAtgg!1LZwKaEfmV zCLXG@IKVt$KfnzNqOc)}lQg1P)@Csm=I*qC3&%m_FiCOf(Q>gM@tAYIPmo24k|%~G z!+M^|2G(sk?`gKInucjAhNgRlGTvWgUMH(;wtv{=gn69fUsc;6u4@}qcCn?)I@L89 zL)(-oR9$FUrfQqUnC*$!=Pw#=uV>9%5zgpg9Yd(_7X+J@thl-%W5N?`LDzLDg)Yt0 zteXc7f=YhEOV=O0A4ll%(N)_Q2R(tXm-Tu<^0FdRB8?vVo8;q`lt=r!P0C4cQ2e2K z!s=-k$8@H_b9d9`0@pL2;H4W|zqL{hJ#Dc5-)8(j)<8@_34`S z?H3DYFP-@KgVm)UTllv(e*NysU+=#B)}OndzFc_+kV~EIXYQ)BPObjDbMCNqV8{Dc q&C;X(#kG4s{OFaRfbhbW6+e70Ha>mkXvxYxCFQw=;+ezGzVr_vGa}yr literal 0 HcmV?d00001 diff --git a/images/Screenshot_Main.png b/images/Screenshot_Main.png index dffbe83eb39a48acd8d7a05fc04cb3496f7608bf..ffad22549edc476fdf52c35e5667111d18d2d7b4 100644 GIT binary patch literal 50066 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⁣?lHD=tl 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 literal 51688 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 z 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 From 295b079dabe3db94a81de55e1b060a916e27e59c Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Mon, 26 May 2025 03:12:03 +0300 Subject: [PATCH 27/29] WIP: text import --- McBitFont/Export.cs | 2 +- McBitFont/FodyWeavers.xml | 3 + McBitFont/Form1.Designer.cs | 34 ++- McBitFont/Form1.cs | 120 ++++++++-- McBitFont/McBitFont.csproj | 4 + McBitFont/Properties/Resources.Designer.cs | 10 + McBitFont/Properties/Resources.resx | 13 +- McBitFont/Resources/folder_table.png | Bin 0 -> 675 bytes examples/tests/test16x16.mbfont | Bin 0 -> 277 bytes examples/tests/test16x16.txt | 50 ++++ examples/tests/testfont.txt | 258 +++++++++++++++++++++ icons/famfamfam/folder_table.png | Bin 0 -> 675 bytes 12 files changed, 458 insertions(+), 36 deletions(-) create mode 100644 McBitFont/FodyWeavers.xml create mode 100644 McBitFont/Resources/folder_table.png create mode 100644 examples/tests/test16x16.mbfont create mode 100644 examples/tests/test16x16.txt create mode 100644 examples/tests/testfont.txt create mode 100644 icons/famfamfam/folder_table.png diff --git a/McBitFont/Export.cs b/McBitFont/Export.cs index 11f5fcb..4d4f351 100644 --- a/McBitFont/Export.cs +++ b/McBitFont/Export.cs @@ -51,7 +51,7 @@ namespace McBitFont { comments.Add("font_header_map", "// Font header map:\n" + - "// packed; // Flag for packed font" + + "// packed; // Flag for packed font\n" + "// width; // Font width in pixels (0 - variable width)\n" + "// height; // Font height in pixels\n" + "// space; // Font space in pixels\n" + diff --git a/McBitFont/FodyWeavers.xml b/McBitFont/FodyWeavers.xml new file mode 100644 index 0000000..5029e70 --- /dev/null +++ b/McBitFont/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 8bfd76e..72ca31b 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -72,6 +72,7 @@ redoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + selectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); fontToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); makeVarWidthToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); prependSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -101,7 +102,7 @@ chkHexCodes = new System.Windows.Forms.CheckBox(); chkRectSelect = new System.Windows.Forms.CheckBox(); label3 = new System.Windows.Forms.Label(); - selectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + importTextToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -523,7 +524,7 @@ // // fileToolStripMenuItem // - fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, importImageToolStripMenuItem, exportToolStripMenuItem, exitToolStripMenuItem }); + fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, importTextToolStripMenuItem1, importImageToolStripMenuItem, exportToolStripMenuItem, exitToolStripMenuItem }); fileToolStripMenuItem.Name = "fileToolStripMenuItem"; fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); fileToolStripMenuItem.Text = "File"; @@ -616,7 +617,7 @@ undoToolStripMenuItem.Image = Properties.Resources.arrow_undo; undoToolStripMenuItem.Name = "undoToolStripMenuItem"; undoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z; - undoToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + undoToolStripMenuItem.Size = new System.Drawing.Size(144, 22); undoToolStripMenuItem.Text = "Undo"; undoToolStripMenuItem.ToolTipText = "Undo last canvas change"; undoToolStripMenuItem.Click += undoToolStripMenuItem_Click; @@ -626,7 +627,7 @@ redoToolStripMenuItem.Image = Properties.Resources.arrow_redo; redoToolStripMenuItem.Name = "redoToolStripMenuItem"; redoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y; - redoToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + redoToolStripMenuItem.Size = new System.Drawing.Size(144, 22); redoToolStripMenuItem.Text = "Redo"; redoToolStripMenuItem.ToolTipText = "Redo canvas change"; redoToolStripMenuItem.Click += redoToolStripMenuItem_Click; @@ -638,7 +639,7 @@ copyToolStripMenuItem.Name = "copyToolStripMenuItem"; copyToolStripMenuItem.ShortcutKeyDisplayString = ""; copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C; - copyToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + copyToolStripMenuItem.Size = new System.Drawing.Size(144, 22); copyToolStripMenuItem.Text = "Copy"; copyToolStripMenuItem.ToolTipText = "Copy current symbol to clipboard"; copyToolStripMenuItem.Click += copyToolStripMenuItem_Click; @@ -650,11 +651,19 @@ pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; pasteToolStripMenuItem.ShortcutKeyDisplayString = ""; pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V; - pasteToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + pasteToolStripMenuItem.Size = new System.Drawing.Size(144, 22); pasteToolStripMenuItem.Text = "Paste"; pasteToolStripMenuItem.ToolTipText = "Paste from clipboard to current symbol"; pasteToolStripMenuItem.Click += pasteToolStripMenuItem_Click; // + // selectToolStripMenuItem + // + selectToolStripMenuItem.Image = Properties.Resources.fam_rectt; + selectToolStripMenuItem.Name = "selectToolStripMenuItem"; + selectToolStripMenuItem.Size = new System.Drawing.Size(144, 22); + selectToolStripMenuItem.Text = "Select"; + selectToolStripMenuItem.Click += selectToolStripMenuItem_Click; + // // fontToolStripMenuItem // fontToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { makeVarWidthToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, CodeShiftToolStripMenuItem }); @@ -956,13 +965,13 @@ label3.TabIndex = 21; label3.Text = "Cursor:"; // - // selectToolStripMenuItem + // importTextToolStripMenuItem1 // - selectToolStripMenuItem.Image = Properties.Resources.fam_rectt; - selectToolStripMenuItem.Name = "selectToolStripMenuItem"; - selectToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - selectToolStripMenuItem.Text = "Select"; - selectToolStripMenuItem.Click += selectToolStripMenuItem_Click; + importTextToolStripMenuItem1.Image = Properties.Resources.folder_table; + importTextToolStripMenuItem1.Name = "importTextToolStripMenuItem1"; + importTextToolStripMenuItem1.Size = new System.Drawing.Size(184, 22); + importTextToolStripMenuItem1.Text = "Import text file"; + importTextToolStripMenuItem1.Click += importTextToolStripMenuItem1_Click; // // MainForm // @@ -1090,6 +1099,7 @@ private System.Windows.Forms.ToolStripMenuItem FillToolStripMenuItem; private System.Windows.Forms.CheckBox chkRectSelect; private System.Windows.Forms.ToolStripMenuItem selectToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem importTextToolStripMenuItem1; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index c684761..4f97cd9 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -711,13 +711,9 @@ namespace McBitFont { } private void newToolStripMenuItem_Click(object sender, EventArgs e) { - checkModifiedFrame(); - 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) { - saveToolStripMenuItem.PerformClick(); - return; - } - } + CheckModifiedFrame(); + if (CheckModifiedProject()) return; + New form = new New(this); if (form.ShowDialog() == DialogResult.OK) { Cursor.Current = Cursors.WaitCursor; @@ -797,7 +793,7 @@ namespace McBitFont { private void MiniList_SelectedIndexChanged(object sender, EventArgs e) { if (miniList.FocusedItem == null) return; - checkModifiedFrame(); + CheckModifiedFrame(); if (miniList.SelectedItems.Count == 0) { removeSymbolToolStripMenuItem.Enabled = false; removeBeforeToolStripMenuItem.Enabled = false; @@ -852,7 +848,7 @@ namespace McBitFont { } private void SaveToolStripMenuItem_Click(object sender, EventArgs e) { - checkModifiedFrame(); + CheckModifiedFrame(); if (dlgSave.ShowDialog() == DialogResult.OK) { SaveProject(dlgSave.FileName); } @@ -935,13 +931,13 @@ namespace McBitFont { this.Text = "McBitFont v" + version + " - " + prjName; } + + private void openToolStripMenuItem_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) == DialogResult.Yes) { - saveAsToolStripMenuItem.PerformClick(); - return; - } - } + CheckModifiedFrame(); + if (CheckModifiedProject()) return; + + dlgOpen.FilterIndex = 1; if (dlgOpen.ShowDialog() == DialogResult.OK) { LoadProject(dlgOpen.FileName); } @@ -1035,7 +1031,7 @@ namespace McBitFont { } // Check modified / Save frame - private void checkModifiedFrame() { + private void CheckModifiedFrame() { if (modified) { if (MessageBox.Show("Current symbol is modified.\nDo you want to save the changes?", "Symbol was modified!", MessageBoxButtons.YesNo) == DialogResult.Yes) { SaveFrame(); @@ -1044,11 +1040,22 @@ namespace McBitFont { } } + // Check if project was modified + private bool CheckModifiedProject() { + 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) { + saveToolStripMenuItem.PerformClick(); + return true; + } + } + return false; + } + private void saveToolStripMenuItem_Click_1(object sender, EventArgs e) { if (prjFileName == "") { saveAsToolStripMenuItem.PerformClick(); } else { - checkModifiedFrame(); + CheckModifiedFrame(); SaveProject(prjFileName); } @@ -1160,7 +1167,7 @@ namespace McBitFont { private void CodeShiftToolStripMenuItem_Click(object sender, EventArgs e) { if (!monospaced && frames.Count == 1) return; - checkModifiedFrame(); + CheckModifiedFrame(); CodeShift csform = new CodeShift(this); if (csform.ShowDialog() == DialogResult.OK) { @@ -1240,5 +1247,82 @@ namespace McBitFont { chkRectSelect.Checked = !chkRectSelect.Checked; selectToolStripMenuItem.Checked = !selectToolStripMenuItem.Checked; } + + private void importTextToolStripMenuItem1_Click(object sender, EventArgs e) { + if (CheckModifiedProject()) return; + + dlgOpen.FilterIndex = 2; + if (dlgOpen.ShowDialog() == DialogResult.OK) { + var lines = File.ReadAllLines(dlgOpen.FileName); + int bits = 0; + List data = []; + foreach (var line in lines) { + if (line.TrimStart().StartsWith("//")) continue; // Ignore comments + if (line.Trim().Length < 1) continue; // Ignore empty lines + if (bits == 0) { + if (line.Contains("uint8_t")) bits = 8; // Found 8 bit array + if (line.Contains("uint16_t")) bits = 16; // Found 16 bit array + if (line.Contains("uint31_t")) bits = 32; // Found 32 bit array + } + string s = line; + if (s.IndexOf("//") >= 0) s = s.Remove(s.IndexOf("//")); // Remove comments + var words = s.Split(','); // split a line by commas + string w; + foreach (var word in words) { + int numBase = 10; + + w = word.Trim(); + if (w.Length < 1) continue; + + if (w.IndexOf("0x") >= 0) { // Check if value is written as hexadecimal + w = w.Remove(w.IndexOf("0x"), 2); + numBase = 16; + } + if (w.IndexOf("0b") >= 0) { // Check if value is written as binary + w = w.Remove(w.IndexOf("0b"), 2); + numBase = 2; + } + + try { // Try to convert a number from text + data.Add(Convert.ToUInt32(w, numBase)); + } + catch { + continue; + } + + //MessageBox.Show(w + ": Length: " + w.Length + " Bits: " + bits + " Converted: " + data.Last() + "\nData length: " + data.Count); + } + } + if (MessageBox.Show(bits + "-font found. " + data.Count + " numbers (" + data.Count * bits / 8 + " bytes) total\n" + "Start code: " + data.ElementAt(4) + " End code: " + data.ElementAt(5) + "\nDo you want to load it?", "Import from text file", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { + // Font header + bool packed = data.ElementAt(0) == 1; + int width= (int)data.ElementAt(1); + int height = (int)data.ElementAt(2); + int first = (int)data.ElementAt(4); + int last = (int)data.ElementAt(5); + + frames.Clear(); + miniList.Clear(); + ilMiniatures.Images.Clear(); + + FrameMiniature newf; + int neww = width; + int curFrame = 0; + int frameNumIndex = 0; + for (int i = 0; i < data.Count; i++) { + if (frameNumIndex == 0) { + if (width == 0) { + neww = (int)data.ElementAt(i); + frameNumIndex++; + } + newf = new(curFrame + first, neww, height); + } + // TODO: fill frame.data with current byte + // increment NumIndex + } + } + //MessageBox.Show(bits + "-font found. " + data.Count + " numbers (" + data.Count * bits / 8 + " bytes) total\n" + "Start code: " + data.ElementAt(4) + " End code: " + data.ElementAt(5)); + } + } } } diff --git a/McBitFont/McBitFont.csproj b/McBitFont/McBitFont.csproj index 8b14b8f..ec839cf 100644 --- a/McBitFont/McBitFont.csproj +++ b/McBitFont/McBitFont.csproj @@ -32,6 +32,10 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/McBitFont/Properties/Resources.Designer.cs b/McBitFont/Properties/Resources.Designer.cs index 2c7606b..97cde8f 100644 --- a/McBitFont/Properties/Resources.Designer.cs +++ b/McBitFont/Properties/Resources.Designer.cs @@ -250,6 +250,16 @@ namespace McBitFont.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap folder_table { + get { + object obj = ResourceManager.GetObject("folder_table", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/McBitFont/Properties/Resources.resx b/McBitFont/Properties/Resources.resx index 90e4395..e072095 100644 --- a/McBitFont/Properties/Resources.resx +++ b/McBitFont/Properties/Resources.resx @@ -142,9 +142,6 @@ ..\Resources\redo.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\icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -196,12 +193,18 @@ ..\Resources\arrow_redo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\fam_base.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\fam_rectt.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\Famfamfam-Silk-Disk.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\Canvas_Fill.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -220,7 +223,7 @@ ..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\fam_base.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\folder_table.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/folder_table.png b/McBitFont/Resources/folder_table.png new file mode 100644 index 0000000000000000000000000000000000000000..473cee355da7a5ab249eef48757e5152e054b27f GIT binary patch literal 675 zcmV;U0$lxxP)}3^VYXIcMfLGh@F-->=;^b;9pE+9-AgXNuFXu)G8rVomlzjy+fuMmPft%;< z;=ME+0H|K;O6Ro$t8XO%AB5TfQ2?HetsDp#=xQMgLj3i0_vd_bXQy+~PBO^79shD) z2gUJahI$Y00sPoVsvS6sP95ueoO8~B0T}+x5^6?V2gMI7;Gj6ZOdL5dBNxNzBTZyp zhzXXUSwp(?5XtHwYDT0V1L8WzU{8C^4rUfN2tkSQE;7xKtR7QCD+?S-W+_d);LOx0 z(-UwOnEteH)B|rZlo)4u4HdS&uaGX!qFI>>xp`W@>zl#El)a_YMOJW=wutX7S5AyiXBT(kw$H#nh8)y~qh*_{kJ&rQ}tNH#14l@+2nf zn3Oo#I1hQnGy$z(x{1jqCS@9rUt;zn6mRu8fS43B4X9tm!g>{=DOdnYF)d@Vg@zI) zC2(%fTf}5$4#C1NEUZ;c)^}l{gvkabTbL$jx&V;u04&qrq5QMSZ`K#kLS&W$Er7LQ zk^&hPRZkZQk|buCrn`V7y+8M8um__bN8z8}&j2@;q4sn;^arVubHUWsrz-#e002ov JPDHLkV1l^%9 + 0x01, 0xbe, 0x00, // 33 --> ! + 0x03, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0x00, // 34 --> " + 0x05, 0x28, 0x00, 0x7c, 0x00, 0x28, 0x00, 0x7c, 0x00, 0x28, 0x00, // 35 --> # + 0x05, 0x4c, 0x00, 0x92, 0x00, 0xff, 0x01, 0x92, 0x00, 0x64, 0x00, // 36 --> $ + 0x07, 0x84, 0x00, 0x4a, 0x00, 0x24, 0x00, 0x10, 0x00, 0x48, 0x00, 0xa4, 0x00, 0x42, 0x00, // 37 --> % + 0x06, 0x6c, 0x00, 0x92, 0x00, 0x92, 0x00, 0xac, 0x00, 0x40, 0x00, 0xb0, 0x00, // 38 --> & + 0x01, 0x0e, 0x00, // 39 --> ' + 0x03, 0x7c, 0x00, 0x82, 0x00, 0x01, 0x01, // 40 --> ( + 0x03, 0x01, 0x01, 0x82, 0x00, 0x7c, 0x00, // 41 --> ) + 0x05, 0x14, 0x00, 0x08, 0x00, 0x3e, 0x00, 0x08, 0x00, 0x14, 0x00, // 42 --> * + 0x05, 0x10, 0x00, 0x10, 0x00, 0x7c, 0x00, 0x10, 0x00, 0x10, 0x00, // 43 --> + + 0x02, 0x00, 0x01, 0xc0, 0x00, // 44 --> , + 0x05, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, // 45 --> - + 0x01, 0x80, 0x00, // 46 --> . + 0x07, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, // 47 --> / + 0x05, 0x7c, 0x00, 0xa2, 0x00, 0x92, 0x00, 0x8a, 0x00, 0x7c, 0x00, // 48 --> 0 + 0x02, 0x04, 0x00, 0xfe, 0x00, // 49 --> 1 + 0x05, 0x84, 0x00, 0xc2, 0x00, 0xa2, 0x00, 0x92, 0x00, 0x8c, 0x00, // 50 --> 2 + 0x05, 0x44, 0x00, 0x82, 0x00, 0x92, 0x00, 0x92, 0x00, 0x6c, 0x00, // 51 --> 3 + 0x05, 0x30, 0x00, 0x28, 0x00, 0x24, 0x00, 0xfe, 0x00, 0x20, 0x00, // 52 --> 4 + 0x05, 0x4e, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x72, 0x00, // 53 --> 5 + 0x05, 0x7c, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x64, 0x00, // 54 --> 6 + 0x05, 0x02, 0x00, 0x02, 0x00, 0xc2, 0x00, 0x32, 0x00, 0x0e, 0x00, // 55 --> 7 + 0x05, 0x6c, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x6c, 0x00, // 56 --> 8 + 0x05, 0x4c, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x7c, 0x00, // 57 --> 9 + 0x01, 0x48, 0x00, // 58 --> : + 0x02, 0x00, 0x01, 0xc8, 0x00, // 59 --> ; + 0x03, 0x10, 0x00, 0x28, 0x00, 0x44, 0x00, // 60 --> < + 0x05, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, // 61 --> = + 0x03, 0x44, 0x00, 0x28, 0x00, 0x10, 0x00, // 62 --> > + 0x05, 0x04, 0x00, 0x02, 0x00, 0xa2, 0x00, 0x12, 0x00, 0x0c, 0x00, // 63 --> ? + 0x08, 0x7e, 0x00, 0x81, 0x00, 0x99, 0x00, 0xa5, 0x00, 0xa5, 0x00, 0xbd, 0x00, 0xa1, 0x00, 0x1e, 0x00, // 64 --> @ + 0x05, 0xfc, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0xfc, 0x00, // 65 --> A + 0x05, 0xfe, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x6c, 0x00, // 66 --> B + 0x05, 0x7c, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x44, 0x00, // 67 --> C + 0x05, 0xfe, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x7c, 0x00, // 68 --> D + 0x05, 0xfe, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x82, 0x00, // 69 --> E + 0x05, 0xfe, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x02, 0x00, // 70 --> F + 0x05, 0x7c, 0x00, 0x82, 0x00, 0x82, 0x00, 0x92, 0x00, 0x74, 0x00, // 71 --> G + 0x05, 0xfe, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xfe, 0x00, // 72 --> H + 0x01, 0xfe, 0x00, // 73 --> I + 0x05, 0x40, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x7e, 0x00, // 74 --> J + 0x05, 0xfe, 0x00, 0x10, 0x00, 0x28, 0x00, 0x44, 0x00, 0x82, 0x00, // 75 --> K + 0x05, 0xfe, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, // 76 --> L + 0x07, 0xfe, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0xfe, 0x00, // 77 --> M + 0x05, 0xfe, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0xfe, 0x00, // 78 --> N + 0x05, 0x7c, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x7c, 0x00, // 79 --> O + 0x05, 0xfe, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0c, 0x00, // 80 --> P + 0x05, 0x7c, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x7c, 0x01, // 81 --> Q + 0x05, 0xfe, 0x00, 0x12, 0x00, 0x32, 0x00, 0x52, 0x00, 0x8c, 0x00, // 82 --> R + 0x05, 0x4c, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x64, 0x00, // 83 --> S + 0x05, 0x02, 0x00, 0x02, 0x00, 0xfe, 0x00, 0x02, 0x00, 0x02, 0x00, // 84 --> T + 0x05, 0x7e, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x7e, 0x00, // 85 --> U + 0x05, 0x0e, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x30, 0x00, 0x0e, 0x00, // 86 --> V + 0x07, 0x7e, 0x00, 0x80, 0x00, 0x80, 0x00, 0x7e, 0x00, 0x80, 0x00, 0x80, 0x00, 0x7e, 0x00, // 87 --> W + 0x05, 0xc6, 0x00, 0x28, 0x00, 0x10, 0x00, 0x28, 0x00, 0xc6, 0x00, // 88 --> X + 0x05, 0x06, 0x00, 0x08, 0x00, 0xf0, 0x00, 0x08, 0x00, 0x06, 0x00, // 89 --> Y + 0x05, 0xc2, 0x00, 0xa2, 0x00, 0x92, 0x00, 0x8a, 0x00, 0x86, 0x00, // 90 --> Z + 0x03, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, // 91 --> [ + 0x07, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00, // 92 --> \ + 0x03, 0x01, 0x01, 0x01, 0x01, 0xff, 0x01, // 93 --> ] + 0x05, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, // 94 --> ^ + 0x05, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, // 95 --> _ + 0x03, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, // 96 --> ` + 0x04, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0xf8, 0x00, // 97 --> a + 0x04, 0xfe, 0x00, 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, // 98 --> b + 0x04, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0x50, 0x00, // 99 --> c + 0x04, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0xfe, 0x00, // 100 --> d + 0x04, 0x70, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0x30, 0x00, // 101 --> e + 0x02, 0xfc, 0x00, 0x12, 0x00, // 102 --> f + 0x04, 0x70, 0x00, 0x88, 0x02, 0x88, 0x02, 0xf8, 0x01, // 103 --> g + 0x04, 0xfe, 0x00, 0x08, 0x00, 0x08, 0x00, 0xf0, 0x00, // 104 --> h + 0x01, 0xfa, 0x00, // 105 --> i + 0x02, 0x00, 0x02, 0xfa, 0x01, // 106 --> j + 0x04, 0xfe, 0x00, 0x20, 0x00, 0x50, 0x00, 0x88, 0x00, // 107 --> k + 0x01, 0xfe, 0x00, // 108 --> l + 0x07, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x00, 0xf0, 0x00, 0x08, 0x00, 0x08, 0x00, 0xf0, 0x00, // 109 --> m + 0x04, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x00, 0xf0, 0x00, // 110 --> n + 0x04, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, // 111 --> o + 0x04, 0xf8, 0x03, 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, // 112 --> p + 0x04, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0xf8, 0x03, // 113 --> q + 0x03, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x00, // 114 --> r + 0x03, 0x90, 0x00, 0xa8, 0x00, 0x48, 0x00, // 115 --> s + 0x03, 0x08, 0x00, 0xfe, 0x00, 0x08, 0x00, // 116 --> t + 0x04, 0x78, 0x00, 0x80, 0x00, 0x80, 0x00, 0xf8, 0x00, // 117 --> u + 0x04, 0x78, 0x00, 0x80, 0x00, 0x80, 0x00, 0x78, 0x00, // 118 --> v + 0x07, 0x78, 0x00, 0x80, 0x00, 0x80, 0x00, 0x78, 0x00, 0x80, 0x00, 0x80, 0x00, 0x78, 0x00, // 119 --> w + 0x04, 0xd8, 0x00, 0x20, 0x00, 0x20, 0x00, 0xd8, 0x00, // 120 --> x + 0x04, 0x78, 0x00, 0x80, 0x02, 0x80, 0x02, 0xf8, 0x01, // 121 --> y + 0x04, 0xc8, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0x98, 0x00, // 122 --> z + 0x03, 0x10, 0x00, 0xee, 0x00, 0x01, 0x01, // 123 --> { + 0x01, 0xff, 0x01, // 124 --> | + 0x03, 0x01, 0x01, 0xee, 0x00, 0x10, 0x00, // 125 --> } + 0x06, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x08, 0x00, // 126 --> ~ + 0x00, // 127 -->  + 0x00, // 128 --> Ђ + 0x00, // 129 --> Ѓ + 0x00, // 130 --> ‚ + 0x00, // 131 --> ѓ + 0x00, // 132 --> „ + 0x00, // 133 --> … + 0x00, // 134 --> † + 0x00, // 135 --> ‡ + 0x00, // 136 --> € + 0x00, // 137 --> ‰ + 0x00, // 138 --> Љ + 0x00, // 139 --> ‹ + 0x00, // 140 --> Њ + 0x00, // 141 --> Ќ + 0x00, // 142 --> Ћ + 0x00, // 143 --> Џ + 0x00, // 144 --> ђ + 0x00, // 145 --> ‘ + 0x00, // 146 --> ’ + 0x00, // 147 --> “ + 0x00, // 148 --> ” + 0x04, 0x30, 0x00, 0x78, 0x00, 0x78, 0x00, 0x30, 0x00, // 149 --> • + 0x00, // 150 --> – + 0x00, // 151 --> — + 0x00, // 152 --> ˜ + 0x00, // 153 --> ™ + 0x00, // 154 --> љ + 0x00, // 155 --> › + 0x00, // 156 --> њ + 0x00, // 157 --> ќ + 0x00, // 158 --> ћ + 0x00, // 159 --> џ + 0x00, // 160 -->   + 0x00, // 161 --> Ў + 0x00, // 162 --> ў + 0x00, // 163 --> Ј + 0x00, // 164 --> ¤ + 0x00, // 165 --> Ґ + 0x01, 0xef, 0x01, // 166 --> ¦ + 0x00, // 167 --> § + 0x00, // 168 --> Ё + 0x07, 0x7c, 0x00, 0x82, 0x00, 0xba, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0x82, 0x00, 0x7c, 0x00, // 169 --> © + 0x00, // 170 --> Є + 0x00, // 171 --> « + 0x00, // 172 --> ¬ + 0x00, // 173 --> ­ + 0x00, // 174 --> ® + 0x00, // 175 --> Ї + 0x04, 0x06, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, // 176 --> ° + 0x05, 0x88, 0x00, 0x88, 0x00, 0xbe, 0x00, 0x88, 0x00, 0x88, 0x00, // 177 --> ± + 0x04, 0x12, 0x00, 0x19, 0x00, 0x15, 0x00, 0x12, 0x00, // 178 --> І + 0x00, // 179 --> і + 0x00, // 180 --> ґ + 0x00, // 181 --> µ + 0x00, // 182 --> ¶ + 0x00, // 183 --> · + 0x00, // 184 --> ё + 0x08, 0xfe, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0xfe, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x24, 0x00, // 185 --> № + 0x00, // 186 --> є + 0x00, // 187 --> » + 0x00, // 188 --> ј + 0x00, // 189 --> Ѕ + 0x00, // 190 --> ѕ + 0x00, // 191 --> ї + 0x05, 0xfc, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0xfc, 0x00, // 192 --> А + 0x05, 0xfe, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x62, 0x00, // 193 --> Б + 0x05, 0xfe, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x6c, 0x00, // 194 --> В + 0x05, 0xfe, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, // 195 --> Г + 0x07, 0x80, 0x01, 0xfc, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0xfc, 0x00, 0x80, 0x01, // 196 --> Д + 0x05, 0xfe, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x82, 0x00, // 197 --> Е + 0x07, 0xee, 0x00, 0x10, 0x00, 0x10, 0x00, 0xfe, 0x00, 0x10, 0x00, 0x10, 0x00, 0xee, 0x00, // 198 --> Ж + 0x05, 0x44, 0x00, 0x92, 0x00, 0x92, 0x00, 0x92, 0x00, 0x6c, 0x00, // 199 --> З + 0x05, 0xfe, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0xfe, 0x00, // 200 --> И + 0x05, 0xfc, 0x00, 0x21, 0x00, 0x12, 0x00, 0x09, 0x00, 0xfc, 0x00, // 201 --> Й + 0x05, 0xfe, 0x00, 0x10, 0x00, 0x28, 0x00, 0x44, 0x00, 0x82, 0x00, // 202 --> К + 0x05, 0x80, 0x00, 0x7c, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfe, 0x00, // 203 --> Л + 0x07, 0xfe, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0xfe, 0x00, // 204 --> М + 0x05, 0xfe, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xfe, 0x00, // 205 --> Н + 0x05, 0x7c, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x7c, 0x00, // 206 --> О + 0x05, 0xfe, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfe, 0x00, // 207 --> П + 0x05, 0xfe, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0c, 0x00, // 208 --> Р + 0x05, 0x7c, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x44, 0x00, // 209 --> С + 0x05, 0x02, 0x00, 0x02, 0x00, 0xfe, 0x00, 0x02, 0x00, 0x02, 0x00, // 210 --> Т + 0x05, 0x4e, 0x00, 0x90, 0x00, 0x90, 0x00, 0x90, 0x00, 0x7e, 0x00, // 211 --> У + 0x07, 0x7c, 0x00, 0x82, 0x00, 0x82, 0x00, 0xff, 0x01, 0x82, 0x00, 0x82, 0x00, 0x7c, 0x00, // 212 --> Ф + 0x05, 0xc6, 0x00, 0x28, 0x00, 0x10, 0x00, 0x28, 0x00, 0xc6, 0x00, // 213 --> Х + 0x06, 0xfe, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xfe, 0x00, 0x80, 0x01, // 214 --> Ц + 0x05, 0x0e, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xfe, 0x00, // 215 --> Ч + 0x07, 0xfe, 0x00, 0x80, 0x00, 0x80, 0x00, 0xfe, 0x00, 0x80, 0x00, 0x80, 0x00, 0xfe, 0x00, // 216 --> Ш + 0x08, 0xfe, 0x00, 0x80, 0x00, 0x80, 0x00, 0xfe, 0x00, 0x80, 0x00, 0x80, 0x00, 0xfe, 0x00, 0x80, 0x01, // 217 --> Щ + 0x07, 0x02, 0x00, 0x02, 0x00, 0xfe, 0x00, 0x90, 0x00, 0x90, 0x00, 0x90, 0x00, 0x60, 0x00, // 218 --> Ъ + 0x07, 0xfe, 0x00, 0x90, 0x00, 0x90, 0x00, 0x90, 0x00, 0x60, 0x00, 0x00, 0x00, 0xfe, 0x00, // 219 --> Ы + 0x05, 0xfe, 0x00, 0x90, 0x00, 0x90, 0x00, 0x90, 0x00, 0x60, 0x00, // 220 --> Ь + 0x05, 0x44, 0x00, 0x82, 0x00, 0x92, 0x00, 0x92, 0x00, 0x7c, 0x00, // 221 --> Э + 0x08, 0xfe, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7c, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x7c, 0x00, // 222 --> Ю + 0x05, 0x8c, 0x00, 0x52, 0x00, 0x32, 0x00, 0x12, 0x00, 0xfe, 0x00, // 223 --> Я + 0x04, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0xf8, 0x00, // 224 --> а + 0x04, 0x7c, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x72, 0x00, // 225 --> б + 0x04, 0xf8, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0x50, 0x00, // 226 --> в + 0x04, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, // 227 --> г + 0x06, 0x80, 0x01, 0xf0, 0x00, 0x88, 0x00, 0x88, 0x00, 0xf0, 0x00, 0x80, 0x01, // 228 --> д + 0x04, 0x70, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0x30, 0x00, // 229 --> е + 0x07, 0xd8, 0x00, 0x20, 0x00, 0x20, 0x00, 0xf8, 0x00, 0x20, 0x00, 0x20, 0x00, 0xd8, 0x00, // 230 --> ж + 0x04, 0x50, 0x00, 0x88, 0x00, 0xa8, 0x00, 0x50, 0x00, // 231 --> з + 0x05, 0xf8, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0xf8, 0x00, // 232 --> и + 0x05, 0xf8, 0x00, 0x41, 0x00, 0x22, 0x00, 0x11, 0x00, 0xf8, 0x00, // 233 --> й + 0x04, 0xf8, 0x00, 0x20, 0x00, 0x50, 0x00, 0x88, 0x00, // 234 --> к + 0x04, 0x80, 0x00, 0x70, 0x00, 0x08, 0x00, 0xf8, 0x00, // 235 --> л + 0x05, 0xf8, 0x00, 0x10, 0x00, 0x20, 0x00, 0x10, 0x00, 0xf8, 0x00, // 236 --> м + 0x04, 0xf8, 0x00, 0x20, 0x00, 0x20, 0x00, 0xf8, 0x00, // 237 --> н + 0x04, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, // 238 --> о + 0x04, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x00, 0xf8, 0x00, // 239 --> п + 0x04, 0xf8, 0x03, 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, // 240 --> р + 0x04, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0x50, 0x00, // 241 --> с + 0x05, 0x08, 0x00, 0x08, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x08, 0x00, // 242 --> т + 0x04, 0x78, 0x00, 0x80, 0x02, 0x80, 0x02, 0xf8, 0x01, // 243 --> у + 0x07, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0xfe, 0x03, 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, // 244 --> ф + 0x04, 0xd8, 0x00, 0x20, 0x00, 0x20, 0x00, 0xd8, 0x00, // 245 --> х + 0x05, 0xf8, 0x00, 0x80, 0x00, 0x80, 0x00, 0xf8, 0x00, 0x80, 0x01, // 246 --> ц + 0x04, 0x18, 0x00, 0x20, 0x00, 0x20, 0x00, 0xf8, 0x00, // 247 --> ч + 0x07, 0xf8, 0x00, 0x80, 0x00, 0x80, 0x00, 0xf8, 0x00, 0x80, 0x00, 0x80, 0x00, 0xf8, 0x00, // 248 --> ш + 0x08, 0xf8, 0x00, 0x80, 0x00, 0x80, 0x00, 0xf8, 0x00, 0x80, 0x00, 0x80, 0x00, 0xf8, 0x00, 0x80, 0x01, // 249 --> щ + 0x05, 0x08, 0x00, 0xf8, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x40, 0x00, // 250 --> ъ + 0x06, 0xf8, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x40, 0x00, 0x00, 0x00, 0xf8, 0x00, // 251 --> ы + 0x04, 0xf8, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x40, 0x00, // 252 --> ь + 0x04, 0x50, 0x00, 0x88, 0x00, 0xa8, 0x00, 0x70, 0x00, // 253 --> э + 0x06, 0xf8, 0x00, 0x20, 0x00, 0x70, 0x00, 0x88, 0x00, 0x88, 0x00, 0x70, 0x00, // 254 --> ю + 0x04, 0x90, 0x00, 0x68, 0x00, 0x28, 0x00, 0xf8, 0x00 // 255 --> я +}; diff --git a/icons/famfamfam/folder_table.png b/icons/famfamfam/folder_table.png new file mode 100644 index 0000000000000000000000000000000000000000..473cee355da7a5ab249eef48757e5152e054b27f GIT binary patch literal 675 zcmV;U0$lxxP)}3^VYXIcMfLGh@F-->=;^b;9pE+9-AgXNuFXu)G8rVomlzjy+fuMmPft%;< z;=ME+0H|K;O6Ro$t8XO%AB5TfQ2?HetsDp#=xQMgLj3i0_vd_bXQy+~PBO^79shD) z2gUJahI$Y00sPoVsvS6sP95ueoO8~B0T}+x5^6?V2gMI7;Gj6ZOdL5dBNxNzBTZyp zhzXXUSwp(?5XtHwYDT0V1L8WzU{8C^4rUfN2tkSQE;7xKtR7QCD+?S-W+_d);LOx0 z(-UwOnEteH)B|rZlo)4u4HdS&uaGX!qFI>>xp`W@>zl#El)a_YMOJW=wutX7S5AyiXBT(kw$H#nh8)y~qh*_{kJ&rQ}tNH#14l@+2nf zn3Oo#I1hQnGy$z(x{1jqCS@9rUt;zn6mRu8fS43B4X9tm!g>{=DOdnYF)d@Vg@zI) zC2(%fTf}5$4#C1NEUZ;c)^}l{gvkabTbL$jx&V;u04&qrq5QMSZ`K#kLS&W$Er7LQ zk^&hPRZkZQk|buCrn`V7y+8M8um__bN8z8}&j2@;q4sn;^arVubHUWsrz-#e002ov JPDHLkV1l^%9 Date: Tue, 27 May 2025 02:44:42 +0300 Subject: [PATCH 28/29] TODO feature: Import from a text array; Little Export fix --- McBitFont/Export.cs | 4 +- McBitFont/Form1.Designer.cs | 32 +-- McBitFont/Form1.cs | 68 +++++-- TODO.txt | 2 +- examples/tests/test16x16.mbfont | Bin 277 -> 277 bytes examples/tests/test16x16.txt | 13 +- examples/tests/testfont_packed.txt | 259 +++++++++++++++++++++++++ examples/tests/testfont_packed_bin.txt | 259 +++++++++++++++++++++++++ 8 files changed, 595 insertions(+), 42 deletions(-) create mode 100644 examples/tests/testfont_packed.txt create mode 100644 examples/tests/testfont_packed_bin.txt diff --git a/McBitFont/Export.cs b/McBitFont/Export.cs index 4d4f351..73c8bc5 100644 --- a/McBitFont/Export.cs +++ b/McBitFont/Export.cs @@ -207,7 +207,7 @@ namespace McBitFont { output += " // Meta header\n" + " " + (packed ? "1" : "0") + ", // Is it a packed font?\n" + - " " + (mono ? mainForm.frames.First().width.ToString() : "0") + ", // Font width in pixels; 0 - variable width\n" + + " " + (mono || mainForm.frames.Count == 1 ? mainForm.frames.First().width.ToString() : "0") + ", // Font width in pixels; 0 - variable width\n" + " " + mainForm.frames.First().height.ToString() + ", // Font height in pixels\n" + " 0, // Font space (between symbols) in pixels\n" + " " + mainForm.frames.First().code.ToString() + ", // First character code\n" + @@ -353,7 +353,7 @@ namespace McBitFont { output += cbracket + ((i + idir == imax) && f.Equals(flast) ? "" : ",") + "\n"; } } - if (packed && (f.width * f.height / 8) % bits > 0) { + if (packed && (f.width * f.height) % bits > 0) { // post leftovers in last number // should we post a prefix to the number? diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index 72ca31b..d930070 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -64,6 +64,7 @@ openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + importTextToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); importImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -102,7 +103,6 @@ chkHexCodes = new System.Windows.Forms.CheckBox(); chkRectSelect = new System.Windows.Forms.CheckBox(); label3 = new System.Windows.Forms.Label(); - importTextToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -535,7 +535,7 @@ newToolStripMenuItem.Name = "newToolStripMenuItem"; newToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+N"; newToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N; - newToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + newToolStripMenuItem.Size = new System.Drawing.Size(224, 22); newToolStripMenuItem.Text = "New"; newToolStripMenuItem.ToolTipText = "Create new project"; newToolStripMenuItem.Click += newToolStripMenuItem_Click; @@ -546,7 +546,7 @@ openToolStripMenuItem.Name = "openToolStripMenuItem"; openToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+O"; openToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O; - openToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + openToolStripMenuItem.Size = new System.Drawing.Size(224, 22); openToolStripMenuItem.Text = "Open"; openToolStripMenuItem.ToolTipText = "Open from file"; openToolStripMenuItem.Click += openToolStripMenuItem_Click; @@ -557,7 +557,7 @@ saveToolStripMenuItem.Name = "saveToolStripMenuItem"; saveToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+S"; saveToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S; - saveToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + saveToolStripMenuItem.Size = new System.Drawing.Size(224, 22); saveToolStripMenuItem.Text = "Save"; saveToolStripMenuItem.ToolTipText = "Save changes"; saveToolStripMenuItem.Click += saveToolStripMenuItem_Click_1; @@ -568,16 +568,24 @@ saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem"; saveAsToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Shift+S"; saveAsToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift | System.Windows.Forms.Keys.S; - saveAsToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + saveAsToolStripMenuItem.Size = new System.Drawing.Size(224, 22); saveAsToolStripMenuItem.Text = "Save as"; saveAsToolStripMenuItem.ToolTipText = "Save changes to another file"; saveAsToolStripMenuItem.Click += SaveToolStripMenuItem_Click; // + // importTextToolStripMenuItem1 + // + importTextToolStripMenuItem1.Image = Properties.Resources.folder_table; + importTextToolStripMenuItem1.Name = "importTextToolStripMenuItem1"; + importTextToolStripMenuItem1.Size = new System.Drawing.Size(224, 22); + importTextToolStripMenuItem1.Text = "Import text file (very limited)"; + importTextToolStripMenuItem1.Click += importTextToolStripMenuItem1_Click; + // // importImageToolStripMenuItem // importImageToolStripMenuItem.Image = Properties.Resources.z_folder_image; importImageToolStripMenuItem.Name = "importImageToolStripMenuItem"; - importImageToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + importImageToolStripMenuItem.Size = new System.Drawing.Size(224, 22); importImageToolStripMenuItem.Text = "Import image"; importImageToolStripMenuItem.ToolTipText = "Import image from a file"; importImageToolStripMenuItem.Click += importImageToolStripMenuItem_Click; @@ -588,7 +596,7 @@ exportToolStripMenuItem.Name = "exportToolStripMenuItem"; exportToolStripMenuItem.ShortcutKeyDisplayString = ""; exportToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E; - exportToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + exportToolStripMenuItem.Size = new System.Drawing.Size(224, 22); exportToolStripMenuItem.Text = "Export"; exportToolStripMenuItem.ToolTipText = "Configure and export data"; exportToolStripMenuItem.Click += button1_Click; @@ -599,7 +607,7 @@ exitToolStripMenuItem.Name = "exitToolStripMenuItem"; exitToolStripMenuItem.ShortcutKeyDisplayString = "Alt+X"; exitToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.X; - exitToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + exitToolStripMenuItem.Size = new System.Drawing.Size(224, 22); exitToolStripMenuItem.Text = "Exit"; exitToolStripMenuItem.ToolTipText = "Quit application"; exitToolStripMenuItem.Click += exitToolStripMenuItem_Click; @@ -965,14 +973,6 @@ label3.TabIndex = 21; label3.Text = "Cursor:"; // - // importTextToolStripMenuItem1 - // - importTextToolStripMenuItem1.Image = Properties.Resources.folder_table; - importTextToolStripMenuItem1.Name = "importTextToolStripMenuItem1"; - importTextToolStripMenuItem1.Size = new System.Drawing.Size(184, 22); - importTextToolStripMenuItem1.Text = "Import text file"; - importTextToolStripMenuItem1.Click += importTextToolStripMenuItem1_Click; - // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 4f97cd9..9221d0a 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -1265,7 +1265,9 @@ namespace McBitFont { if (line.Contains("uint31_t")) bits = 32; // Found 32 bit array } string s = line; - if (s.IndexOf("//") >= 0) s = s.Remove(s.IndexOf("//")); // Remove comments + if (s.Contains("//")) s = s[..s.IndexOf("//")]; // Remove comments + if (s.Contains('{')) s = s[(s.IndexOf('{') + 1)..]; // Remove everything before '{' + var words = s.Split(','); // split a line by commas string w; foreach (var word in words) { @@ -1274,14 +1276,15 @@ namespace McBitFont { w = word.Trim(); if (w.Length < 1) continue; - if (w.IndexOf("0x") >= 0) { // Check if value is written as hexadecimal - w = w.Remove(w.IndexOf("0x"), 2); - numBase = 16; - } - if (w.IndexOf("0b") >= 0) { // Check if value is written as binary + if (w.Contains("0b") && !w.Contains("0x")) { // Check if value is written as binary w = w.Remove(w.IndexOf("0b"), 2); numBase = 2; } + if (w.Contains("0x") ) { // Check if value is written as hexadecimal + w = w.Remove(w.IndexOf("0x"), 2); + numBase = 16; + } + try { // Try to convert a number from text data.Add(Convert.ToUInt32(w, numBase)); @@ -1305,21 +1308,52 @@ namespace McBitFont { miniList.Clear(); ilMiniatures.Images.Clear(); - FrameMiniature newf; + FrameMiniature newf = new(); int neww = width; - int curFrame = 0; - int frameNumIndex = 0; - for (int i = 0; i < data.Count; i++) { - if (frameNumIndex == 0) { - if (width == 0) { - neww = (int)data.ElementAt(i); - frameNumIndex++; - } + int curFrame = -1; + bool newFrame = true; + int i = 0, j = 0; + for (int b = 6; b < data.Count; b++) { + if (newFrame) { + newFrame = false; + curFrame++; + i = 0; j = 0; + if (width == 0) neww = (int)data[b]; newf = new(curFrame + first, neww, height); + if (width == 0 && neww != 0) continue; + } + // Fill frame data with current number + if (neww != 0) + for (int bit = 0; bit < bits; bit++) { + if (j >= height) { + j = 0; + i++; + if (!packed && bit != 0) break; + } + if (i >= neww) break; + newf.data[i, j] = (data[b] & (1 << bit)) > 0; + j++; + } + if (i >= neww || b == data.Count - 1 || (i == neww - 1 && j == height) || neww == 0) { + newFrame = true; + frames.Add(newf); + + var s = (last - first > 0) ? newf.code.ToString().PadLeft(3, '0') : "000"; + var sHex = (last - first > 0) ? 'x' + Convert.ToString(newf.code, 16).PadLeft(2, '0').ToUpper() : "0x0"; + var sss = (last - first > 0) ? decodeSymbol(newf.code) : "Single"; + ilMiniatures.Images.Add(s, (Image)GetMiniPictue(newf)); + miniList.Items.Add(s, (chkHexCodes.Checked ? sHex : s) + ' ' + sss, s); } - // TODO: fill frame.data with current byte - // increment NumIndex } + prjModified = true; + if (miniList.Items.Count > 0) miniList.Items[0].Selected = true; + f = frames[0]; + dotWidth = f.width; + dotHeight = f.height; + SetNewWH(); + + miniList.Refresh(); + dotPanel.Refresh(); } //MessageBox.Show(bits + "-font found. " + data.Count + " numbers (" + data.Count * bits / 8 + " bytes) total\n" + "Start code: " + data.ElementAt(4) + " End code: " + data.ElementAt(5)); } diff --git a/TODO.txt b/TODO.txt index ae9ef9c..cd2db92 100644 --- a/TODO.txt +++ b/TODO.txt @@ -17,7 +17,7 @@ V Specify starting code (extends the shift) V Ability to make monospaced font a variable width one V Undo/Redo for canvas changes V Image import from a file -- Import from a text array +V Import from a text array V Rectangle selection to mass-paint, shift and mirror pixels etc... V "Packed" fonts export V "Bytes total comment in export diff --git a/examples/tests/test16x16.mbfont b/examples/tests/test16x16.mbfont index 2a2ad2aa6681247a5bc3df9b23d79199b94b2e12..d72566287b77968a92265ff73c4d0a0c64930b5d 100644 GIT binary patch delta 20 bcmbQrG?i(B3*+I5t_y&~Gacr`hYkS%Qeg=0 delta 20 bcmbQrG?i(B3*(`Qt_y&~GacqbhYkS%Qb`Ew diff --git a/examples/tests/test16x16.txt b/examples/tests/test16x16.txt index a6e58eb..c4a6478 100644 --- a/examples/tests/test16x16.txt +++ b/examples/tests/test16x16.txt @@ -15,17 +15,18 @@ // Numbers per line: 1 Column per line // Font header map: -// packed; // Flag for packed font// width; // Font width in pixels (0 - variable width) +// packed; // Flag for packed font +// width; // Font width in pixels (0 - variable width) // height; // Font height in pixels // space; // Font space in pixels // first; // First character code // last; // Last character code -const uint8_t Untitled[] = { +const uint8_t test16x16[] = { // Meta header 0, // Is it a packed font? - 0, // Font width in pixels; 0 - variable width + 16, // Font width in pixels; 0 - variable width 16, // Font height in pixels 0, // Font space (between symbols) in pixels 0, // First character code @@ -33,7 +34,7 @@ const uint8_t Untitled[] = { // Data: 0xfc, 0x1f, 0x00, 0x30, - 0x0c, 0x60, + 0x0c, 0xe0, 0x06, 0x1c, 0x02, 0x36, 0x32, 0x23, @@ -44,7 +45,7 @@ const uint8_t Untitled[] = { 0x64, 0x20, 0x3c, 0x30, 0x00, 0x10, - 0x1e, 0x20, + 0x1f, 0x20, 0xf0, 0x3f, - 0x00, 0x00 + 0x00, 0x20 }; diff --git a/examples/tests/testfont_packed.txt b/examples/tests/testfont_packed.txt new file mode 100644 index 0000000..de1fad6 --- /dev/null +++ b/examples/tests/testfont_packed.txt @@ -0,0 +1,259 @@ +// File generated by McBitFont v2.0 +// made by Anton Mukhin (mcfly@mcflyer.ru) +// +// +// Bytes total: 1264 +// Scan order: Columns +// Horizontal direction: Left to Right +// Vertical direction: Top to Bottom + +// Bit order: LSB Top +// Numbers base: Hexadecimal +// Numbers size: 8 bit + +// Text format: 1D C array +// Numbers per line: 1 Symbol per line + +// Font header map: +// packed; // Flag for packed font +// width; // Font width in pixels (0 - variable width) +// height; // Font height in pixels +// space; // Font space in pixels +// first; // First character code +// last; // Last character code + + +const uint8_t haxrcorp_4089_cyrillic_altgr[] = { + // Meta header + 1, // Is it a packed font? + 0, // Font width in pixels; 0 - variable width + 10, // Font height in pixels + 0, // Font space (between symbols) in pixels + 32, // First character code + 255, // Last character code + // Data: + 0x03, 0x00, 0x00, 0x00, 0x00, // 32 --> + 0x01, 0xbe, 0x00, // 33 --> ! + 0x03, 0x0e, 0x00, 0xe0, 0x00, // 34 --> " + 0x05, 0x28, 0xf0, 0x81, 0x02, 0x1f, 0x28, 0x00, // 35 --> # + 0x05, 0x4c, 0x48, 0xf2, 0x9f, 0x24, 0x64, 0x00, // 36 --> $ + 0x07, 0x84, 0x28, 0x41, 0x02, 0x04, 0x48, 0x90, 0x22, 0x04, // 37 --> % + 0x06, 0x6c, 0x48, 0x22, 0x09, 0x2b, 0x40, 0xc0, 0x02, // 38 --> & + 0x01, 0x0e, 0x00, // 39 --> ' + 0x03, 0x7c, 0x08, 0x12, 0x10, // 40 --> ( + 0x03, 0x01, 0x09, 0xc2, 0x07, // 41 --> ) + 0x05, 0x14, 0x20, 0xe0, 0x03, 0x02, 0x14, 0x00, // 42 --> * + 0x05, 0x10, 0x40, 0xc0, 0x07, 0x04, 0x10, 0x00, // 43 --> + + 0x02, 0x00, 0x01, 0x03, // 44 --> , + 0x05, 0x10, 0x40, 0x00, 0x01, 0x04, 0x10, 0x00, // 45 --> - + 0x01, 0x80, 0x00, // 46 --> . + 0x07, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, // 47 --> / + 0x05, 0x7c, 0x88, 0x22, 0x89, 0x22, 0x7c, 0x00, // 48 --> 0 + 0x02, 0x04, 0xf8, 0x03, // 49 --> 1 + 0x05, 0x84, 0x08, 0x23, 0x8a, 0x24, 0x8c, 0x00, // 50 --> 2 + 0x05, 0x44, 0x08, 0x22, 0x89, 0x24, 0x6c, 0x00, // 51 --> 3 + 0x05, 0x30, 0xa0, 0x40, 0x82, 0x3f, 0x20, 0x00, // 52 --> 4 + 0x05, 0x4e, 0x28, 0xa2, 0x88, 0x22, 0x72, 0x00, // 53 --> 5 + 0x05, 0x7c, 0x48, 0x22, 0x89, 0x24, 0x64, 0x00, // 54 --> 6 + 0x05, 0x02, 0x08, 0x20, 0x8c, 0x0c, 0x0e, 0x00, // 55 --> 7 + 0x05, 0x6c, 0x48, 0x22, 0x89, 0x24, 0x6c, 0x00, // 56 --> 8 + 0x05, 0x4c, 0x48, 0x22, 0x89, 0x24, 0x7c, 0x00, // 57 --> 9 + 0x01, 0x48, 0x00, // 58 --> : + 0x02, 0x00, 0x21, 0x03, // 59 --> ; + 0x03, 0x10, 0xa0, 0x40, 0x04, // 60 --> < + 0x05, 0x28, 0xa0, 0x80, 0x02, 0x0a, 0x28, 0x00, // 61 --> = + 0x03, 0x44, 0xa0, 0x00, 0x01, // 62 --> > + 0x05, 0x04, 0x08, 0x20, 0x8a, 0x04, 0x0c, 0x00, // 63 --> ? + 0x08, 0x7e, 0x04, 0x92, 0x49, 0x29, 0xa5, 0xf4, 0x12, 0x8a, 0x07, // 64 --> @ + 0x05, 0xfc, 0x48, 0x20, 0x81, 0x04, 0xfc, 0x00, // 65 --> A + 0x05, 0xfe, 0x48, 0x22, 0x89, 0x24, 0x6c, 0x00, // 66 --> B + 0x05, 0x7c, 0x08, 0x22, 0x88, 0x20, 0x44, 0x00, // 67 --> C + 0x05, 0xfe, 0x08, 0x22, 0x88, 0x20, 0x7c, 0x00, // 68 --> D + 0x05, 0xfe, 0x48, 0x22, 0x89, 0x24, 0x82, 0x00, // 69 --> E + 0x05, 0xfe, 0x48, 0x20, 0x81, 0x04, 0x02, 0x00, // 70 --> F + 0x05, 0x7c, 0x08, 0x22, 0x88, 0x24, 0x74, 0x00, // 71 --> G + 0x05, 0xfe, 0x40, 0x00, 0x01, 0x04, 0xfe, 0x00, // 72 --> H + 0x01, 0xfe, 0x00, // 73 --> I + 0x05, 0x40, 0x00, 0x02, 0x08, 0x20, 0x7e, 0x00, // 74 --> J + 0x05, 0xfe, 0x40, 0x80, 0x02, 0x11, 0x82, 0x00, // 75 --> K + 0x05, 0xfe, 0x00, 0x02, 0x08, 0x20, 0x80, 0x00, // 76 --> L + 0x07, 0xfe, 0x10, 0x80, 0x00, 0x04, 0x08, 0x10, 0xe0, 0x0f, // 77 --> M + 0x05, 0xfe, 0x20, 0x00, 0x01, 0x08, 0xfe, 0x00, // 78 --> N + 0x05, 0x7c, 0x08, 0x22, 0x88, 0x20, 0x7c, 0x00, // 79 --> O + 0x05, 0xfe, 0x48, 0x20, 0x81, 0x04, 0x0c, 0x00, // 80 --> P + 0x05, 0x7c, 0x08, 0x22, 0x88, 0x20, 0x7c, 0x01, // 81 --> Q + 0x05, 0xfe, 0x48, 0x20, 0x83, 0x14, 0x8c, 0x00, // 82 --> R + 0x05, 0x4c, 0x48, 0x22, 0x89, 0x24, 0x64, 0x00, // 83 --> S + 0x05, 0x02, 0x08, 0xe0, 0x8f, 0x00, 0x02, 0x00, // 84 --> T + 0x05, 0x7e, 0x00, 0x02, 0x08, 0x20, 0x7e, 0x00, // 85 --> U + 0x05, 0x0e, 0xc0, 0x00, 0x0c, 0x0c, 0x0e, 0x00, // 86 --> V + 0x07, 0x7e, 0x00, 0x02, 0x88, 0x1f, 0x80, 0x00, 0xe2, 0x07, // 87 --> W + 0x05, 0xc6, 0xa0, 0x00, 0x01, 0x0a, 0xc6, 0x00, // 88 --> X + 0x05, 0x06, 0x20, 0x00, 0x0f, 0x02, 0x06, 0x00, // 89 --> Y + 0x05, 0xc2, 0x88, 0x22, 0x89, 0x22, 0x86, 0x00, // 90 --> Z + 0x03, 0xff, 0x05, 0x14, 0x10, // 91 --> [ + 0x07, 0x02, 0x10, 0x80, 0x00, 0x04, 0x20, 0x00, 0x01, 0x08, // 92 --> \ + 0x03, 0x01, 0x05, 0xf4, 0x1f, // 93 --> ] + 0x05, 0x08, 0x10, 0x20, 0x00, 0x01, 0x08, 0x00, // 94 --> ^ + 0x05, 0x80, 0x00, 0x02, 0x08, 0x20, 0x80, 0x00, // 95 --> _ + 0x03, 0x02, 0x10, 0x80, 0x00, // 96 --> ` + 0x04, 0x70, 0x20, 0x82, 0x08, 0x3e, // 97 --> a + 0x04, 0xfe, 0x20, 0x82, 0x08, 0x1c, // 98 --> b + 0x04, 0x70, 0x20, 0x82, 0x08, 0x14, // 99 --> c + 0x04, 0x70, 0x20, 0x82, 0x88, 0x3f, // 100 --> d + 0x04, 0x70, 0xa0, 0x82, 0x0a, 0x0c, // 101 --> e + 0x02, 0xfc, 0x48, 0x00, // 102 --> f + 0x04, 0x70, 0x20, 0x8a, 0x28, 0x7e, // 103 --> g + 0x04, 0xfe, 0x20, 0x80, 0x00, 0x3c, // 104 --> h + 0x01, 0xfa, 0x00, // 105 --> i + 0x02, 0x00, 0xea, 0x07, // 106 --> j + 0x04, 0xfe, 0x80, 0x00, 0x05, 0x22, // 107 --> k + 0x01, 0xfe, 0x00, // 108 --> l + 0x07, 0xf8, 0x20, 0x80, 0x00, 0x3c, 0x08, 0x20, 0x00, 0x0f, // 109 --> m + 0x04, 0xf8, 0x20, 0x80, 0x00, 0x3c, // 110 --> n + 0x04, 0x70, 0x20, 0x82, 0x08, 0x1c, // 111 --> o + 0x04, 0xf8, 0x23, 0x82, 0x08, 0x1c, // 112 --> p + 0x04, 0x70, 0x20, 0x82, 0x08, 0xfe, // 113 --> q + 0x03, 0xf8, 0x20, 0x80, 0x00, // 114 --> r + 0x03, 0x90, 0xa0, 0x82, 0x04, // 115 --> s + 0x03, 0x08, 0xf8, 0x83, 0x00, // 116 --> t + 0x04, 0x78, 0x00, 0x02, 0x08, 0x3e, // 117 --> u + 0x04, 0x78, 0x00, 0x02, 0x08, 0x1e, // 118 --> v + 0x07, 0x78, 0x00, 0x02, 0x08, 0x1e, 0x80, 0x00, 0x82, 0x07, // 119 --> w + 0x04, 0xd8, 0x80, 0x00, 0x02, 0x36, // 120 --> x + 0x04, 0x78, 0x00, 0x0a, 0x28, 0x7e, // 121 --> y + 0x04, 0xc8, 0xa0, 0x82, 0x0a, 0x26, // 122 --> z + 0x03, 0x10, 0xb8, 0x13, 0x10, // 123 --> { + 0x01, 0xff, 0x01, // 124 --> | + 0x03, 0x01, 0xb9, 0x03, 0x01, // 125 --> } + 0x06, 0x10, 0x20, 0x80, 0x00, 0x04, 0x10, 0x20, 0x00, // 126 --> ~ + 0x00, // 127 -->  + 0x00, // 128 --> Ђ + 0x00, // 129 --> Ѓ + 0x00, // 130 --> ‚ + 0x00, // 131 --> ѓ + 0x00, // 132 --> „ + 0x00, // 133 --> … + 0x00, // 134 --> † + 0x00, // 135 --> ‡ + 0x00, // 136 --> € + 0x00, // 137 --> ‰ + 0x00, // 138 --> Љ + 0x00, // 139 --> ‹ + 0x00, // 140 --> Њ + 0x00, // 141 --> Ќ + 0x00, // 142 --> Ћ + 0x00, // 143 --> Џ + 0x00, // 144 --> ђ + 0x00, // 145 --> ‘ + 0x00, // 146 --> ’ + 0x00, // 147 --> “ + 0x00, // 148 --> ” + 0x04, 0x30, 0xe0, 0x81, 0x07, 0x0c, // 149 --> • + 0x00, // 150 --> – + 0x00, // 151 --> — + 0x00, // 152 --> ˜ + 0x00, // 153 --> ™ + 0x00, // 154 --> љ + 0x00, // 155 --> › + 0x00, // 156 --> њ + 0x00, // 157 --> ќ + 0x00, // 158 --> ћ + 0x00, // 159 --> џ + 0x00, // 160 -->   + 0x00, // 161 --> Ў + 0x00, // 162 --> ў + 0x00, // 163 --> Ј + 0x00, // 164 --> ¤ + 0x00, // 165 --> Ґ + 0x01, 0xef, 0x01, // 166 --> ¦ + 0x00, // 167 --> § + 0x00, // 168 --> Ё + 0x07, 0x7c, 0x08, 0xa2, 0x8b, 0x2a, 0xaa, 0x08, 0xc2, 0x07, // 169 --> © + 0x00, // 170 --> Є + 0x00, // 171 --> « + 0x00, // 172 --> ¬ + 0x00, // 173 --> ­ + 0x00, // 174 --> ® + 0x00, // 175 --> Ї + 0x04, 0x06, 0x24, 0x90, 0x80, 0x01, // 176 --> ° + 0x05, 0x88, 0x20, 0xe2, 0x0b, 0x22, 0x88, 0x00, // 177 --> ± + 0x04, 0x12, 0x64, 0x50, 0x81, 0x04, // 178 --> І + 0x00, // 179 --> і + 0x00, // 180 --> ґ + 0x00, // 181 --> µ + 0x00, // 182 --> ¶ + 0x00, // 183 --> · + 0x00, // 184 --> ё + 0x08, 0xfe, 0x20, 0x00, 0x01, 0x08, 0xfe, 0x90, 0xa0, 0x02, 0x09, // 185 --> № + 0x00, // 186 --> є + 0x00, // 187 --> » + 0x00, // 188 --> ј + 0x00, // 189 --> Ѕ + 0x00, // 190 --> ѕ + 0x00, // 191 --> ї + 0x05, 0xfc, 0x48, 0x20, 0x81, 0x04, 0xfc, 0x00, // 192 --> А + 0x05, 0xfe, 0x48, 0x22, 0x89, 0x24, 0x62, 0x00, // 193 --> Б + 0x05, 0xfe, 0x48, 0x22, 0x89, 0x24, 0x6c, 0x00, // 194 --> В + 0x05, 0xfe, 0x08, 0x20, 0x80, 0x00, 0x02, 0x00, // 195 --> Г + 0x07, 0x80, 0xf1, 0x23, 0x88, 0x20, 0x82, 0xf0, 0x03, 0x18, // 196 --> Д + 0x05, 0xfe, 0x48, 0x22, 0x89, 0x24, 0x82, 0x00, // 197 --> Е + 0x07, 0xee, 0x40, 0x00, 0x81, 0x3f, 0x10, 0x40, 0xe0, 0x0e, // 198 --> Ж + 0x05, 0x44, 0x48, 0x22, 0x89, 0x24, 0x6c, 0x00, // 199 --> З + 0x05, 0xfe, 0x80, 0x00, 0x01, 0x02, 0xfe, 0x00, // 200 --> И + 0x05, 0xfc, 0x84, 0x20, 0x41, 0x02, 0xfc, 0x00, // 201 --> Й + 0x05, 0xfe, 0x40, 0x80, 0x02, 0x11, 0x82, 0x00, // 202 --> К + 0x05, 0x80, 0xf0, 0x21, 0x80, 0x00, 0xfe, 0x00, // 203 --> Л + 0x07, 0xfe, 0x10, 0x80, 0x00, 0x04, 0x08, 0x10, 0xe0, 0x0f, // 204 --> М + 0x05, 0xfe, 0x40, 0x00, 0x01, 0x04, 0xfe, 0x00, // 205 --> Н + 0x05, 0x7c, 0x08, 0x22, 0x88, 0x20, 0x7c, 0x00, // 206 --> О + 0x05, 0xfe, 0x08, 0x20, 0x80, 0x00, 0xfe, 0x00, // 207 --> П + 0x05, 0xfe, 0x48, 0x20, 0x81, 0x04, 0x0c, 0x00, // 208 --> Р + 0x05, 0x7c, 0x08, 0x22, 0x88, 0x20, 0x44, 0x00, // 209 --> С + 0x05, 0x02, 0x08, 0xe0, 0x8f, 0x00, 0x02, 0x00, // 210 --> Т + 0x05, 0x4e, 0x40, 0x02, 0x09, 0x24, 0x7e, 0x00, // 211 --> У + 0x07, 0x7c, 0x08, 0x22, 0xc8, 0x7f, 0x82, 0x08, 0xc2, 0x07, // 212 --> Ф + 0x05, 0xc6, 0xa0, 0x00, 0x01, 0x0a, 0xc6, 0x00, // 213 --> Х + 0x06, 0xfe, 0x00, 0x02, 0x08, 0x20, 0xfe, 0x00, 0x06, // 214 --> Ц + 0x05, 0x0e, 0x40, 0x00, 0x01, 0x04, 0xfe, 0x00, // 215 --> Ч + 0x07, 0xfe, 0x00, 0x02, 0x88, 0x3f, 0x80, 0x00, 0xe2, 0x0f, // 216 --> Ш + 0x08, 0xfe, 0x00, 0x02, 0x88, 0x3f, 0x80, 0x00, 0xe2, 0x0f, 0x60, // 217 --> Щ + 0x07, 0x02, 0x08, 0xe0, 0x0f, 0x24, 0x90, 0x40, 0x02, 0x06, // 218 --> Ъ + 0x07, 0xfe, 0x40, 0x02, 0x09, 0x24, 0x60, 0x00, 0xe0, 0x0f, // 219 --> Ы + 0x05, 0xfe, 0x40, 0x02, 0x09, 0x24, 0x60, 0x00, // 220 --> Ь + 0x05, 0x44, 0x08, 0x22, 0x89, 0x24, 0x7c, 0x00, // 221 --> Э + 0x08, 0xfe, 0x40, 0x00, 0x01, 0x1f, 0x82, 0x08, 0x22, 0x08, 0x1f, // 222 --> Ю + 0x05, 0x8c, 0x48, 0x21, 0x83, 0x04, 0xfe, 0x00, // 223 --> Я + 0x04, 0x70, 0x20, 0x82, 0x08, 0x3e, // 224 --> а + 0x04, 0x7c, 0x28, 0xa2, 0x88, 0x1c, // 225 --> б + 0x04, 0xf8, 0xa0, 0x82, 0x0a, 0x14, // 226 --> в + 0x04, 0xf8, 0x20, 0x80, 0x00, 0x02, // 227 --> г + 0x06, 0x80, 0xc1, 0x83, 0x08, 0x22, 0xf0, 0x00, 0x06, // 228 --> д + 0x04, 0x70, 0xa0, 0x82, 0x0a, 0x0c, // 229 --> е + 0x07, 0xd8, 0x80, 0x00, 0x02, 0x3e, 0x20, 0x80, 0x80, 0x0d, // 230 --> ж + 0x04, 0x50, 0x20, 0x82, 0x0a, 0x14, // 231 --> з + 0x05, 0xf8, 0x00, 0x01, 0x02, 0x04, 0xf8, 0x00, // 232 --> и + 0x05, 0xf8, 0x04, 0x21, 0x42, 0x04, 0xf8, 0x00, // 233 --> й + 0x04, 0xf8, 0x80, 0x00, 0x05, 0x22, // 234 --> к + 0x04, 0x80, 0xc0, 0x81, 0x00, 0x3e, // 235 --> л + 0x05, 0xf8, 0x40, 0x00, 0x02, 0x04, 0xf8, 0x00, // 236 --> м + 0x04, 0xf8, 0x80, 0x00, 0x02, 0x3e, // 237 --> н + 0x04, 0x70, 0x20, 0x82, 0x08, 0x1c, // 238 --> о + 0x04, 0xf8, 0x20, 0x80, 0x00, 0x3e, // 239 --> п + 0x04, 0xf8, 0x23, 0x82, 0x08, 0x1c, // 240 --> р + 0x04, 0x70, 0x20, 0x82, 0x08, 0x14, // 241 --> с + 0x05, 0x08, 0x20, 0x80, 0x0f, 0x02, 0x08, 0x00, // 242 --> т + 0x04, 0x78, 0x00, 0x0a, 0x28, 0x7e, // 243 --> у + 0x07, 0x70, 0x20, 0x82, 0x88, 0xff, 0x88, 0x20, 0x02, 0x07, // 244 --> ф + 0x04, 0xd8, 0x80, 0x00, 0x02, 0x36, // 245 --> х + 0x05, 0xf8, 0x00, 0x02, 0x08, 0x3e, 0x80, 0x01, // 246 --> ц + 0x04, 0x18, 0x80, 0x00, 0x02, 0x3e, // 247 --> ч + 0x07, 0xf8, 0x00, 0x02, 0x08, 0x3e, 0x80, 0x00, 0x82, 0x0f, // 248 --> ш + 0x08, 0xf8, 0x00, 0x02, 0x08, 0x3e, 0x80, 0x00, 0x82, 0x0f, 0x60, // 249 --> щ + 0x05, 0x08, 0xe0, 0x03, 0x0a, 0x28, 0x40, 0x00, // 250 --> ъ + 0x06, 0xf8, 0x80, 0x02, 0x0a, 0x10, 0x00, 0xe0, 0x03, // 251 --> ы + 0x04, 0xf8, 0x80, 0x02, 0x0a, 0x10, // 252 --> ь + 0x04, 0x50, 0x20, 0x82, 0x0a, 0x1c, // 253 --> э + 0x06, 0xf8, 0x80, 0x00, 0x07, 0x22, 0x88, 0xc0, 0x01, // 254 --> ю + 0x04, 0x90, 0xa0, 0x81, 0x02, 0x3e // 255 --> я +}; diff --git a/examples/tests/testfont_packed_bin.txt b/examples/tests/testfont_packed_bin.txt new file mode 100644 index 0000000..c3ad287 --- /dev/null +++ b/examples/tests/testfont_packed_bin.txt @@ -0,0 +1,259 @@ +// File generated by McBitFont v2.0 +// made by Anton Mukhin (mcfly@mcflyer.ru) +// +// +// Bytes total: 1264 +// Scan order: Columns +// Horizontal direction: Left to Right +// Vertical direction: Top to Bottom + +// Bit order: LSB Top +// Numbers base: Binary +// Numbers size: 8 bit + +// Text format: 1D C array +// Numbers per line: 1 Symbol per line + +// Font header map: +// packed; // Flag for packed font +// width; // Font width in pixels (0 - variable width) +// height; // Font height in pixels +// space; // Font space in pixels +// first; // First character code +// last; // Last character code + + +const uint8_t haxrcorp_4089_cyrillic_altgr[] = { + // Meta header + 1, // Is it a packed font? + 0, // Font width in pixels; 0 - variable width + 10, // Font height in pixels + 0, // Font space (between symbols) in pixels + 32, // First character code + 255, // Last character code + // Data: + 0b00000011, 0b00000000, 0b00000000, 0b00000000, 0b00000000, // 32 --> + 0b00000001, 0b10111110, 0b00000000, // 33 --> ! + 0b00000011, 0b00001110, 0b00000000, 0b11100000, 0b00000000, // 34 --> " + 0b00000101, 0b00101000, 0b11110000, 0b10000001, 0b00000010, 0b00011111, 0b00101000, 0b00000000, // 35 --> # + 0b00000101, 0b01001100, 0b01001000, 0b11110010, 0b10011111, 0b00100100, 0b01100100, 0b00000000, // 36 --> $ + 0b00000111, 0b10000100, 0b00101000, 0b01000001, 0b00000010, 0b00000100, 0b01001000, 0b10010000, 0b00100010, 0b00000100, // 37 --> % + 0b00000110, 0b01101100, 0b01001000, 0b00100010, 0b00001001, 0b00101011, 0b01000000, 0b11000000, 0b00000010, // 38 --> & + 0b00000001, 0b00001110, 0b00000000, // 39 --> ' + 0b00000011, 0b01111100, 0b00001000, 0b00010010, 0b00010000, // 40 --> ( + 0b00000011, 0b00000001, 0b00001001, 0b11000010, 0b00000111, // 41 --> ) + 0b00000101, 0b00010100, 0b00100000, 0b11100000, 0b00000011, 0b00000010, 0b00010100, 0b00000000, // 42 --> * + 0b00000101, 0b00010000, 0b01000000, 0b11000000, 0b00000111, 0b00000100, 0b00010000, 0b00000000, // 43 --> + + 0b00000010, 0b00000000, 0b00000001, 0b00000011, // 44 --> , + 0b00000101, 0b00010000, 0b01000000, 0b00000000, 0b00000001, 0b00000100, 0b00010000, 0b00000000, // 45 --> - + 0b00000001, 0b10000000, 0b00000000, // 46 --> . + 0b00000111, 0b10000000, 0b00000000, 0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00100000, 0b00000000, // 47 --> / + 0b00000101, 0b01111100, 0b10001000, 0b00100010, 0b10001001, 0b00100010, 0b01111100, 0b00000000, // 48 --> 0 + 0b00000010, 0b00000100, 0b11111000, 0b00000011, // 49 --> 1 + 0b00000101, 0b10000100, 0b00001000, 0b00100011, 0b10001010, 0b00100100, 0b10001100, 0b00000000, // 50 --> 2 + 0b00000101, 0b01000100, 0b00001000, 0b00100010, 0b10001001, 0b00100100, 0b01101100, 0b00000000, // 51 --> 3 + 0b00000101, 0b00110000, 0b10100000, 0b01000000, 0b10000010, 0b00111111, 0b00100000, 0b00000000, // 52 --> 4 + 0b00000101, 0b01001110, 0b00101000, 0b10100010, 0b10001000, 0b00100010, 0b01110010, 0b00000000, // 53 --> 5 + 0b00000101, 0b01111100, 0b01001000, 0b00100010, 0b10001001, 0b00100100, 0b01100100, 0b00000000, // 54 --> 6 + 0b00000101, 0b00000010, 0b00001000, 0b00100000, 0b10001100, 0b00001100, 0b00001110, 0b00000000, // 55 --> 7 + 0b00000101, 0b01101100, 0b01001000, 0b00100010, 0b10001001, 0b00100100, 0b01101100, 0b00000000, // 56 --> 8 + 0b00000101, 0b01001100, 0b01001000, 0b00100010, 0b10001001, 0b00100100, 0b01111100, 0b00000000, // 57 --> 9 + 0b00000001, 0b01001000, 0b00000000, // 58 --> : + 0b00000010, 0b00000000, 0b00100001, 0b00000011, // 59 --> ; + 0b00000011, 0b00010000, 0b10100000, 0b01000000, 0b00000100, // 60 --> < + 0b00000101, 0b00101000, 0b10100000, 0b10000000, 0b00000010, 0b00001010, 0b00101000, 0b00000000, // 61 --> = + 0b00000011, 0b01000100, 0b10100000, 0b00000000, 0b00000001, // 62 --> > + 0b00000101, 0b00000100, 0b00001000, 0b00100000, 0b10001010, 0b00000100, 0b00001100, 0b00000000, // 63 --> ? + 0b00001000, 0b01111110, 0b00000100, 0b10010010, 0b01001001, 0b00101001, 0b10100101, 0b11110100, 0b00010010, 0b10001010, 0b00000111, // 64 --> @ + 0b00000101, 0b11111100, 0b01001000, 0b00100000, 0b10000001, 0b00000100, 0b11111100, 0b00000000, // 65 --> A + 0b00000101, 0b11111110, 0b01001000, 0b00100010, 0b10001001, 0b00100100, 0b01101100, 0b00000000, // 66 --> B + 0b00000101, 0b01111100, 0b00001000, 0b00100010, 0b10001000, 0b00100000, 0b01000100, 0b00000000, // 67 --> C + 0b00000101, 0b11111110, 0b00001000, 0b00100010, 0b10001000, 0b00100000, 0b01111100, 0b00000000, // 68 --> D + 0b00000101, 0b11111110, 0b01001000, 0b00100010, 0b10001001, 0b00100100, 0b10000010, 0b00000000, // 69 --> E + 0b00000101, 0b11111110, 0b01001000, 0b00100000, 0b10000001, 0b00000100, 0b00000010, 0b00000000, // 70 --> F + 0b00000101, 0b01111100, 0b00001000, 0b00100010, 0b10001000, 0b00100100, 0b01110100, 0b00000000, // 71 --> G + 0b00000101, 0b11111110, 0b01000000, 0b00000000, 0b00000001, 0b00000100, 0b11111110, 0b00000000, // 72 --> H + 0b00000001, 0b11111110, 0b00000000, // 73 --> I + 0b00000101, 0b01000000, 0b00000000, 0b00000010, 0b00001000, 0b00100000, 0b01111110, 0b00000000, // 74 --> J + 0b00000101, 0b11111110, 0b01000000, 0b10000000, 0b00000010, 0b00010001, 0b10000010, 0b00000000, // 75 --> K + 0b00000101, 0b11111110, 0b00000000, 0b00000010, 0b00001000, 0b00100000, 0b10000000, 0b00000000, // 76 --> L + 0b00000111, 0b11111110, 0b00010000, 0b10000000, 0b00000000, 0b00000100, 0b00001000, 0b00010000, 0b11100000, 0b00001111, // 77 --> M + 0b00000101, 0b11111110, 0b00100000, 0b00000000, 0b00000001, 0b00001000, 0b11111110, 0b00000000, // 78 --> N + 0b00000101, 0b01111100, 0b00001000, 0b00100010, 0b10001000, 0b00100000, 0b01111100, 0b00000000, // 79 --> O + 0b00000101, 0b11111110, 0b01001000, 0b00100000, 0b10000001, 0b00000100, 0b00001100, 0b00000000, // 80 --> P + 0b00000101, 0b01111100, 0b00001000, 0b00100010, 0b10001000, 0b00100000, 0b01111100, 0b00000001, // 81 --> Q + 0b00000101, 0b11111110, 0b01001000, 0b00100000, 0b10000011, 0b00010100, 0b10001100, 0b00000000, // 82 --> R + 0b00000101, 0b01001100, 0b01001000, 0b00100010, 0b10001001, 0b00100100, 0b01100100, 0b00000000, // 83 --> S + 0b00000101, 0b00000010, 0b00001000, 0b11100000, 0b10001111, 0b00000000, 0b00000010, 0b00000000, // 84 --> T + 0b00000101, 0b01111110, 0b00000000, 0b00000010, 0b00001000, 0b00100000, 0b01111110, 0b00000000, // 85 --> U + 0b00000101, 0b00001110, 0b11000000, 0b00000000, 0b00001100, 0b00001100, 0b00001110, 0b00000000, // 86 --> V + 0b00000111, 0b01111110, 0b00000000, 0b00000010, 0b10001000, 0b00011111, 0b10000000, 0b00000000, 0b11100010, 0b00000111, // 87 --> W + 0b00000101, 0b11000110, 0b10100000, 0b00000000, 0b00000001, 0b00001010, 0b11000110, 0b00000000, // 88 --> X + 0b00000101, 0b00000110, 0b00100000, 0b00000000, 0b00001111, 0b00000010, 0b00000110, 0b00000000, // 89 --> Y + 0b00000101, 0b11000010, 0b10001000, 0b00100010, 0b10001001, 0b00100010, 0b10000110, 0b00000000, // 90 --> Z + 0b00000011, 0b11111111, 0b00000101, 0b00010100, 0b00010000, // 91 --> [ + 0b00000111, 0b00000010, 0b00010000, 0b10000000, 0b00000000, 0b00000100, 0b00100000, 0b00000000, 0b00000001, 0b00001000, // 92 --> \ + 0b00000011, 0b00000001, 0b00000101, 0b11110100, 0b00011111, // 93 --> ] + 0b00000101, 0b00001000, 0b00010000, 0b00100000, 0b00000000, 0b00000001, 0b00001000, 0b00000000, // 94 --> ^ + 0b00000101, 0b10000000, 0b00000000, 0b00000010, 0b00001000, 0b00100000, 0b10000000, 0b00000000, // 95 --> _ + 0b00000011, 0b00000010, 0b00010000, 0b10000000, 0b00000000, // 96 --> ` + 0b00000100, 0b01110000, 0b00100000, 0b10000010, 0b00001000, 0b00111110, // 97 --> a + 0b00000100, 0b11111110, 0b00100000, 0b10000010, 0b00001000, 0b00011100, // 98 --> b + 0b00000100, 0b01110000, 0b00100000, 0b10000010, 0b00001000, 0b00010100, // 99 --> c + 0b00000100, 0b01110000, 0b00100000, 0b10000010, 0b10001000, 0b00111111, // 100 --> d + 0b00000100, 0b01110000, 0b10100000, 0b10000010, 0b00001010, 0b00001100, // 101 --> e + 0b00000010, 0b11111100, 0b01001000, 0b00000000, // 102 --> f + 0b00000100, 0b01110000, 0b00100000, 0b10001010, 0b00101000, 0b01111110, // 103 --> g + 0b00000100, 0b11111110, 0b00100000, 0b10000000, 0b00000000, 0b00111100, // 104 --> h + 0b00000001, 0b11111010, 0b00000000, // 105 --> i + 0b00000010, 0b00000000, 0b11101010, 0b00000111, // 106 --> j + 0b00000100, 0b11111110, 0b10000000, 0b00000000, 0b00000101, 0b00100010, // 107 --> k + 0b00000001, 0b11111110, 0b00000000, // 108 --> l + 0b00000111, 0b11111000, 0b00100000, 0b10000000, 0b00000000, 0b00111100, 0b00001000, 0b00100000, 0b00000000, 0b00001111, // 109 --> m + 0b00000100, 0b11111000, 0b00100000, 0b10000000, 0b00000000, 0b00111100, // 110 --> n + 0b00000100, 0b01110000, 0b00100000, 0b10000010, 0b00001000, 0b00011100, // 111 --> o + 0b00000100, 0b11111000, 0b00100011, 0b10000010, 0b00001000, 0b00011100, // 112 --> p + 0b00000100, 0b01110000, 0b00100000, 0b10000010, 0b00001000, 0b11111110, // 113 --> q + 0b00000011, 0b11111000, 0b00100000, 0b10000000, 0b00000000, // 114 --> r + 0b00000011, 0b10010000, 0b10100000, 0b10000010, 0b00000100, // 115 --> s + 0b00000011, 0b00001000, 0b11111000, 0b10000011, 0b00000000, // 116 --> t + 0b00000100, 0b01111000, 0b00000000, 0b00000010, 0b00001000, 0b00111110, // 117 --> u + 0b00000100, 0b01111000, 0b00000000, 0b00000010, 0b00001000, 0b00011110, // 118 --> v + 0b00000111, 0b01111000, 0b00000000, 0b00000010, 0b00001000, 0b00011110, 0b10000000, 0b00000000, 0b10000010, 0b00000111, // 119 --> w + 0b00000100, 0b11011000, 0b10000000, 0b00000000, 0b00000010, 0b00110110, // 120 --> x + 0b00000100, 0b01111000, 0b00000000, 0b00001010, 0b00101000, 0b01111110, // 121 --> y + 0b00000100, 0b11001000, 0b10100000, 0b10000010, 0b00001010, 0b00100110, // 122 --> z + 0b00000011, 0b00010000, 0b10111000, 0b00010011, 0b00010000, // 123 --> { + 0b00000001, 0b11111111, 0b00000001, // 124 --> | + 0b00000011, 0b00000001, 0b10111001, 0b00000011, 0b00000001, // 125 --> } + 0b00000110, 0b00010000, 0b00100000, 0b10000000, 0b00000000, 0b00000100, 0b00010000, 0b00100000, 0b00000000, // 126 --> ~ + 0b00000000, // 127 -->  + 0b00000000, // 128 --> Ђ + 0b00000000, // 129 --> Ѓ + 0b00000000, // 130 --> ‚ + 0b00000000, // 131 --> ѓ + 0b00000000, // 132 --> „ + 0b00000000, // 133 --> … + 0b00000000, // 134 --> † + 0b00000000, // 135 --> ‡ + 0b00000000, // 136 --> € + 0b00000000, // 137 --> ‰ + 0b00000000, // 138 --> Љ + 0b00000000, // 139 --> ‹ + 0b00000000, // 140 --> Њ + 0b00000000, // 141 --> Ќ + 0b00000000, // 142 --> Ћ + 0b00000000, // 143 --> Џ + 0b00000000, // 144 --> ђ + 0b00000000, // 145 --> ‘ + 0b00000000, // 146 --> ’ + 0b00000000, // 147 --> “ + 0b00000000, // 148 --> ” + 0b00000100, 0b00110000, 0b11100000, 0b10000001, 0b00000111, 0b00001100, // 149 --> • + 0b00000000, // 150 --> – + 0b00000000, // 151 --> — + 0b00000000, // 152 --> ˜ + 0b00000000, // 153 --> ™ + 0b00000000, // 154 --> љ + 0b00000000, // 155 --> › + 0b00000000, // 156 --> њ + 0b00000000, // 157 --> ќ + 0b00000000, // 158 --> ћ + 0b00000000, // 159 --> џ + 0b00000000, // 160 -->   + 0b00000000, // 161 --> Ў + 0b00000000, // 162 --> ў + 0b00000000, // 163 --> Ј + 0b00000000, // 164 --> ¤ + 0b00000000, // 165 --> Ґ + 0b00000001, 0b11101111, 0b00000001, // 166 --> ¦ + 0b00000000, // 167 --> § + 0b00000000, // 168 --> Ё + 0b00000111, 0b01111100, 0b00001000, 0b10100010, 0b10001011, 0b00101010, 0b10101010, 0b00001000, 0b11000010, 0b00000111, // 169 --> © + 0b00000000, // 170 --> Є + 0b00000000, // 171 --> « + 0b00000000, // 172 --> ¬ + 0b00000000, // 173 --> ­ + 0b00000000, // 174 --> ® + 0b00000000, // 175 --> Ї + 0b00000100, 0b00000110, 0b00100100, 0b10010000, 0b10000000, 0b00000001, // 176 --> ° + 0b00000101, 0b10001000, 0b00100000, 0b11100010, 0b00001011, 0b00100010, 0b10001000, 0b00000000, // 177 --> ± + 0b00000100, 0b00010010, 0b01100100, 0b01010000, 0b10000001, 0b00000100, // 178 --> І + 0b00000000, // 179 --> і + 0b00000000, // 180 --> ґ + 0b00000000, // 181 --> µ + 0b00000000, // 182 --> ¶ + 0b00000000, // 183 --> · + 0b00000000, // 184 --> ё + 0b00001000, 0b11111110, 0b00100000, 0b00000000, 0b00000001, 0b00001000, 0b11111110, 0b10010000, 0b10100000, 0b00000010, 0b00001001, // 185 --> № + 0b00000000, // 186 --> є + 0b00000000, // 187 --> » + 0b00000000, // 188 --> ј + 0b00000000, // 189 --> Ѕ + 0b00000000, // 190 --> ѕ + 0b00000000, // 191 --> ї + 0b00000101, 0b11111100, 0b01001000, 0b00100000, 0b10000001, 0b00000100, 0b11111100, 0b00000000, // 192 --> А + 0b00000101, 0b11111110, 0b01001000, 0b00100010, 0b10001001, 0b00100100, 0b01100010, 0b00000000, // 193 --> Б + 0b00000101, 0b11111110, 0b01001000, 0b00100010, 0b10001001, 0b00100100, 0b01101100, 0b00000000, // 194 --> В + 0b00000101, 0b11111110, 0b00001000, 0b00100000, 0b10000000, 0b00000000, 0b00000010, 0b00000000, // 195 --> Г + 0b00000111, 0b10000000, 0b11110001, 0b00100011, 0b10001000, 0b00100000, 0b10000010, 0b11110000, 0b00000011, 0b00011000, // 196 --> Д + 0b00000101, 0b11111110, 0b01001000, 0b00100010, 0b10001001, 0b00100100, 0b10000010, 0b00000000, // 197 --> Е + 0b00000111, 0b11101110, 0b01000000, 0b00000000, 0b10000001, 0b00111111, 0b00010000, 0b01000000, 0b11100000, 0b00001110, // 198 --> Ж + 0b00000101, 0b01000100, 0b01001000, 0b00100010, 0b10001001, 0b00100100, 0b01101100, 0b00000000, // 199 --> З + 0b00000101, 0b11111110, 0b10000000, 0b00000000, 0b00000001, 0b00000010, 0b11111110, 0b00000000, // 200 --> И + 0b00000101, 0b11111100, 0b10000100, 0b00100000, 0b01000001, 0b00000010, 0b11111100, 0b00000000, // 201 --> Й + 0b00000101, 0b11111110, 0b01000000, 0b10000000, 0b00000010, 0b00010001, 0b10000010, 0b00000000, // 202 --> К + 0b00000101, 0b10000000, 0b11110000, 0b00100001, 0b10000000, 0b00000000, 0b11111110, 0b00000000, // 203 --> Л + 0b00000111, 0b11111110, 0b00010000, 0b10000000, 0b00000000, 0b00000100, 0b00001000, 0b00010000, 0b11100000, 0b00001111, // 204 --> М + 0b00000101, 0b11111110, 0b01000000, 0b00000000, 0b00000001, 0b00000100, 0b11111110, 0b00000000, // 205 --> Н + 0b00000101, 0b01111100, 0b00001000, 0b00100010, 0b10001000, 0b00100000, 0b01111100, 0b00000000, // 206 --> О + 0b00000101, 0b11111110, 0b00001000, 0b00100000, 0b10000000, 0b00000000, 0b11111110, 0b00000000, // 207 --> П + 0b00000101, 0b11111110, 0b01001000, 0b00100000, 0b10000001, 0b00000100, 0b00001100, 0b00000000, // 208 --> Р + 0b00000101, 0b01111100, 0b00001000, 0b00100010, 0b10001000, 0b00100000, 0b01000100, 0b00000000, // 209 --> С + 0b00000101, 0b00000010, 0b00001000, 0b11100000, 0b10001111, 0b00000000, 0b00000010, 0b00000000, // 210 --> Т + 0b00000101, 0b01001110, 0b01000000, 0b00000010, 0b00001001, 0b00100100, 0b01111110, 0b00000000, // 211 --> У + 0b00000111, 0b01111100, 0b00001000, 0b00100010, 0b11001000, 0b01111111, 0b10000010, 0b00001000, 0b11000010, 0b00000111, // 212 --> Ф + 0b00000101, 0b11000110, 0b10100000, 0b00000000, 0b00000001, 0b00001010, 0b11000110, 0b00000000, // 213 --> Х + 0b00000110, 0b11111110, 0b00000000, 0b00000010, 0b00001000, 0b00100000, 0b11111110, 0b00000000, 0b00000110, // 214 --> Ц + 0b00000101, 0b00001110, 0b01000000, 0b00000000, 0b00000001, 0b00000100, 0b11111110, 0b00000000, // 215 --> Ч + 0b00000111, 0b11111110, 0b00000000, 0b00000010, 0b10001000, 0b00111111, 0b10000000, 0b00000000, 0b11100010, 0b00001111, // 216 --> Ш + 0b00001000, 0b11111110, 0b00000000, 0b00000010, 0b10001000, 0b00111111, 0b10000000, 0b00000000, 0b11100010, 0b00001111, 0b01100000, // 217 --> Щ + 0b00000111, 0b00000010, 0b00001000, 0b11100000, 0b00001111, 0b00100100, 0b10010000, 0b01000000, 0b00000010, 0b00000110, // 218 --> Ъ + 0b00000111, 0b11111110, 0b01000000, 0b00000010, 0b00001001, 0b00100100, 0b01100000, 0b00000000, 0b11100000, 0b00001111, // 219 --> Ы + 0b00000101, 0b11111110, 0b01000000, 0b00000010, 0b00001001, 0b00100100, 0b01100000, 0b00000000, // 220 --> Ь + 0b00000101, 0b01000100, 0b00001000, 0b00100010, 0b10001001, 0b00100100, 0b01111100, 0b00000000, // 221 --> Э + 0b00001000, 0b11111110, 0b01000000, 0b00000000, 0b00000001, 0b00011111, 0b10000010, 0b00001000, 0b00100010, 0b00001000, 0b00011111, // 222 --> Ю + 0b00000101, 0b10001100, 0b01001000, 0b00100001, 0b10000011, 0b00000100, 0b11111110, 0b00000000, // 223 --> Я + 0b00000100, 0b01110000, 0b00100000, 0b10000010, 0b00001000, 0b00111110, // 224 --> а + 0b00000100, 0b01111100, 0b00101000, 0b10100010, 0b10001000, 0b00011100, // 225 --> б + 0b00000100, 0b11111000, 0b10100000, 0b10000010, 0b00001010, 0b00010100, // 226 --> в + 0b00000100, 0b11111000, 0b00100000, 0b10000000, 0b00000000, 0b00000010, // 227 --> г + 0b00000110, 0b10000000, 0b11000001, 0b10000011, 0b00001000, 0b00100010, 0b11110000, 0b00000000, 0b00000110, // 228 --> д + 0b00000100, 0b01110000, 0b10100000, 0b10000010, 0b00001010, 0b00001100, // 229 --> е + 0b00000111, 0b11011000, 0b10000000, 0b00000000, 0b00000010, 0b00111110, 0b00100000, 0b10000000, 0b10000000, 0b00001101, // 230 --> ж + 0b00000100, 0b01010000, 0b00100000, 0b10000010, 0b00001010, 0b00010100, // 231 --> з + 0b00000101, 0b11111000, 0b00000000, 0b00000001, 0b00000010, 0b00000100, 0b11111000, 0b00000000, // 232 --> и + 0b00000101, 0b11111000, 0b00000100, 0b00100001, 0b01000010, 0b00000100, 0b11111000, 0b00000000, // 233 --> й + 0b00000100, 0b11111000, 0b10000000, 0b00000000, 0b00000101, 0b00100010, // 234 --> к + 0b00000100, 0b10000000, 0b11000000, 0b10000001, 0b00000000, 0b00111110, // 235 --> л + 0b00000101, 0b11111000, 0b01000000, 0b00000000, 0b00000010, 0b00000100, 0b11111000, 0b00000000, // 236 --> м + 0b00000100, 0b11111000, 0b10000000, 0b00000000, 0b00000010, 0b00111110, // 237 --> н + 0b00000100, 0b01110000, 0b00100000, 0b10000010, 0b00001000, 0b00011100, // 238 --> о + 0b00000100, 0b11111000, 0b00100000, 0b10000000, 0b00000000, 0b00111110, // 239 --> п + 0b00000100, 0b11111000, 0b00100011, 0b10000010, 0b00001000, 0b00011100, // 240 --> р + 0b00000100, 0b01110000, 0b00100000, 0b10000010, 0b00001000, 0b00010100, // 241 --> с + 0b00000101, 0b00001000, 0b00100000, 0b10000000, 0b00001111, 0b00000010, 0b00001000, 0b00000000, // 242 --> т + 0b00000100, 0b01111000, 0b00000000, 0b00001010, 0b00101000, 0b01111110, // 243 --> у + 0b00000111, 0b01110000, 0b00100000, 0b10000010, 0b10001000, 0b11111111, 0b10001000, 0b00100000, 0b00000010, 0b00000111, // 244 --> ф + 0b00000100, 0b11011000, 0b10000000, 0b00000000, 0b00000010, 0b00110110, // 245 --> х + 0b00000101, 0b11111000, 0b00000000, 0b00000010, 0b00001000, 0b00111110, 0b10000000, 0b00000001, // 246 --> ц + 0b00000100, 0b00011000, 0b10000000, 0b00000000, 0b00000010, 0b00111110, // 247 --> ч + 0b00000111, 0b11111000, 0b00000000, 0b00000010, 0b00001000, 0b00111110, 0b10000000, 0b00000000, 0b10000010, 0b00001111, // 248 --> ш + 0b00001000, 0b11111000, 0b00000000, 0b00000010, 0b00001000, 0b00111110, 0b10000000, 0b00000000, 0b10000010, 0b00001111, 0b01100000, // 249 --> щ + 0b00000101, 0b00001000, 0b11100000, 0b00000011, 0b00001010, 0b00101000, 0b01000000, 0b00000000, // 250 --> ъ + 0b00000110, 0b11111000, 0b10000000, 0b00000010, 0b00001010, 0b00010000, 0b00000000, 0b11100000, 0b00000011, // 251 --> ы + 0b00000100, 0b11111000, 0b10000000, 0b00000010, 0b00001010, 0b00010000, // 252 --> ь + 0b00000100, 0b01010000, 0b00100000, 0b10000010, 0b00001010, 0b00011100, // 253 --> э + 0b00000110, 0b11111000, 0b10000000, 0b00000000, 0b00000111, 0b00100010, 0b10001000, 0b11000000, 0b00000001, // 254 --> ю + 0b00000100, 0b10010000, 0b10100000, 0b10000001, 0b00000010, 0b00111110 // 255 --> я +}; From 912b15ff3f8cf8b7cd99572f979123777f63a39d Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Tue, 27 May 2025 03:02:09 +0300 Subject: [PATCH 29/29] Little fixes (set baseline UI) --- McBitFont/Form1.Designer.cs | 1 - McBitFont/Form1.cs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index d930070..14f469d 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -123,7 +123,6 @@ dotPanel.Paint += dotPanel_Paint; dotPanel.MouseDown += dotPanel_MouseMove; dotPanel.MouseMove += dotPanel_MouseMove; - dotPanel.MouseUp += dotPanel_MouseMove; dotPanel.Resize += cbZoom_SelectedIndexChanged; // // nudX diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 9221d0a..a9b011f 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -1296,7 +1296,7 @@ namespace McBitFont { //MessageBox.Show(w + ": Length: " + w.Length + " Bits: " + bits + " Converted: " + data.Last() + "\nData length: " + data.Count); } } - if (MessageBox.Show(bits + "-font found. " + data.Count + " numbers (" + data.Count * bits / 8 + " bytes) total\n" + "Start code: " + data.ElementAt(4) + " End code: " + data.ElementAt(5) + "\nDo you want to load it?", "Import from text file", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { + if (MessageBox.Show(bits + "-bit font found. " + data.Count + " numbers (" + data.Count * bits / 8 + " bytes) total\n" + "Start code: " + data.ElementAt(4) + " End code: " + data.ElementAt(5) + "\nDo you want to load it?", "Import from text file", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { // Font header bool packed = data.ElementAt(0) == 1; int width= (int)data.ElementAt(1);

hUY46EF9S3`B=+>|QJE*kNcR=wKUe;(~uN2BhP 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 diff --git a/images/Screenshot_02.png b/images/Screenshot_02.png deleted file mode 100644 index 63ed91cc05cbfc8169c28413caf62801faa2bfea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17400 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 CCQ2Ou diff --git a/images/Screenshot_03.png b/images/Screenshot_03.png deleted file mode 100644 index b8fcb5d037ca604418f4b5b3676d753006e9a721..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44190 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