25 Commits
v1.3 ... v1

Author SHA1 Message Date
Anton Mukhin
279a24ac27 v1.7a - UI fix 2025-05-27 10:19:08 +03:00
faf14caec2 Update README.md 2025-05-20 05:27:28 +03:00
6a8ff0eb50 Merge branch 'dev' v1.7
Application:
V Implement "Save" menu
V Implement new saved font file format

Functionality:
V "Only numbers" range in the New dialog
V "Specify range" in the New dialog
V "Single frame", "only numbers" and "specify range" as radio buttons
V Button to Clear/Fill a block
V Copy-paste to a symbol with different size
V Change height of variable width fonts with ability to choose which side to add pixels to
V Make it possible to have zero width chars in VarWidth fonts
V Tooltips on main form

Bugs:
V Every char changes its width to default on VarWidth font height change!
V App allows to create fonts with a gap in symbol cequence!
V File -> New does not check for unsaveed changes!
V Export for symbols with 0 width in "1 per line" format has extra comma!
2025-05-20 05:11:07 +03:00
011c24b94b Fixed Export for symbols with 0 width in "1 per line" format 2025-05-20 05:08:40 +03:00
6fbe668284 Merge branch 'dev' 2025-05-20 04:47:03 +03:00
5fc69e9992 v 1.7 dev release
Application:
V Implement "Save" menu
V Implement new saved font file format

Functionality:
V "Only numbers" range in the New dialog
V "Specify range" in the New dialog
V "Single frame", "only numbers" and "specify range" as radio buttons
V Button to Clear/Fill a block
V Copy-paste to a symbol with different size
V Change height of variable width fonts with ability to choose which side to add pixels to
V Make it possible to have zero width chars in VarWidth fonts
V Tooltips on main form

Bugs:
V Every char changes its width to default on VarWidth font height change!
V App allows to create fonts with a gap in symbol cequence!
V File -> New does not check for unsaveed changes!
2025-05-20 04:45:45 +03:00
f2b01d4a27 TODO feature: Change height of variable width fonts with ability to choose which side to add pixels to 2025-05-18 03:15:10 +03:00
5164060ffc Menu for Clear canvas Tool 2025-05-18 01:36:47 +03:00
68bce8e14e TODO feature: Button to Clear/Fill a block 2025-05-18 01:30:32 +03:00
6fb5a1f773 TODO feature: Tooltips on main form 2025-05-18 01:13:40 +03:00
2a940c8933 TODO feature: Copy-paste to a symbol with different size 2025-05-18 00:50:05 +03:00
0aeec8bd19 It is now possible to have zero width chars in VarWidth fonts 2025-05-17 03:58:00 +03:00
d24143d1a6 Bugs fixed and new functionality:
Functionality:
V "Only numbers" range in the New dialog
V "Specify range" in the New dialog
V "Single frame", "only numbers" and "specify range" as radio buttons
Bugs:
V App allows to create fonts with a gap in symbol cequence!
V File -> New does not check for unsaveed changes!
2025-05-17 03:52:29 +03:00
03ef799381 Bug fixed: VarWidth fonts height change resets all frames' width 2025-05-17 02:20:01 +03:00
647e5f5601 Save implemented; Swapped Ctrl and Shift fow Zoom/horizontal scroll for frame matrix 2025-05-17 02:03:58 +03:00
Anton Mukhin
c5e440ee44 Update TODO; More examples 2025-05-16 18:04:09 +03:00
Anton Mukhin
34bec25b3d Fix TODO.txt 2023-07-07 12:08:44 +03:00
Anton Mukhin
b1acbdd98f Ability to open a project by double-clicking on a file in Explorer 2023-07-07 12:07:14 +03:00
Anton Mukhin
6d5f90aaac TODO added 2023-07-07 10:27:25 +03:00
72ad6e5be0 Changed Release version info 2023-07-05 02:36:24 +03:00
9d1ca65f34 Added modified check before project save 2023-07-05 02:22:58 +03:00
Anton Mukhin
dd3f4f4b4b Merge branch 'fix-broken-resize' 2023-05-17 16:48:11 +03:00
Anton Mukhin
8889b846dc Fixed font resize; Restored 8x16 example; 2023-05-17 16:47:55 +03:00
Anton Mukhin
fe0e1dabfd More examples 2023-05-17 15:26:45 +03:00
Anton Mukhin
e0786bdb07 Codepage persists through saved projects now; Fixed Baseline draw 2023-05-17 09:42:57 +03:00
22 changed files with 588 additions and 194 deletions

2
.gitignore vendored
View File

@@ -4,6 +4,8 @@
## ##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
examples/tests/32x32/
# User-specific files # User-specific files
*.rsuser *.rsuser
*.suo *.suo

View File

@@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup> </startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration> </configuration>

View File

@@ -23,6 +23,7 @@
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() { private void InitializeComponent() {
this.components = new System.ComponentModel.Container();
this.txtOutput = new System.Windows.Forms.RichTextBox(); this.txtOutput = new System.Windows.Forms.RichTextBox();
this.gbScan = new System.Windows.Forms.GroupBox(); this.gbScan = new System.Windows.Forms.GroupBox();
this.cbVDir = new System.Windows.Forms.ComboBox(); this.cbVDir = new System.Windows.Forms.ComboBox();
@@ -43,6 +44,7 @@
this.cbFormat = new System.Windows.Forms.ComboBox(); this.cbFormat = new System.Windows.Forms.ComboBox();
this.btnGenerate = new System.Windows.Forms.Button(); this.btnGenerate = new System.Windows.Forms.Button();
this.btnClose = 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.gbScan.SuspendLayout();
this.gbOptions.SuspendLayout(); this.gbOptions.SuspendLayout();
this.gbNumbers.SuspendLayout(); this.gbNumbers.SuspendLayout();
@@ -138,6 +140,7 @@
this.cbZeroes.Size = new System.Drawing.Size(98, 17); this.cbZeroes.Size = new System.Drawing.Size(98, 17);
this.cbZeroes.TabIndex = 2; this.cbZeroes.TabIndex = 2;
this.cbZeroes.Text = "Leading zeroes"; this.cbZeroes.Text = "Leading zeroes";
this.toolTip1.SetToolTip(this.cbZeroes, "Add leading zeroes: 0x01 / 0x1");
this.cbZeroes.UseVisualStyleBackColor = true; this.cbZeroes.UseVisualStyleBackColor = true;
// //
// cbHeader // cbHeader
@@ -150,6 +153,7 @@
this.cbHeader.Size = new System.Drawing.Size(86, 17); this.cbHeader.Size = new System.Drawing.Size(86, 17);
this.cbHeader.TabIndex = 1; this.cbHeader.TabIndex = 1;
this.cbHeader.Text = "Meta header"; this.cbHeader.Text = "Meta header";
this.toolTip1.SetToolTip(this.cbHeader, "Add meta header with meta data");
this.cbHeader.UseVisualStyleBackColor = true; this.cbHeader.UseVisualStyleBackColor = true;
this.cbHeader.CheckedChanged += new System.EventHandler(this.cbFormat_SelectedIndexChanged); this.cbHeader.CheckedChanged += new System.EventHandler(this.cbFormat_SelectedIndexChanged);
// //
@@ -163,6 +167,7 @@
this.cbComments.Size = new System.Drawing.Size(75, 17); this.cbComments.Size = new System.Drawing.Size(75, 17);
this.cbComments.TabIndex = 0; this.cbComments.TabIndex = 0;
this.cbComments.Text = "Comments"; this.cbComments.Text = "Comments";
this.toolTip1.SetToolTip(this.cbComments, "Add descriptive comments");
this.cbComments.UseVisualStyleBackColor = true; this.cbComments.UseVisualStyleBackColor = true;
// //
// gbNumbers // gbNumbers
@@ -309,6 +314,12 @@
this.btnClose.Text = "Close"; this.btnClose.Text = "Close";
this.btnClose.UseVisualStyleBackColor = true; this.btnClose.UseVisualStyleBackColor = true;
// //
// toolTip1
//
this.toolTip1.AutoPopDelay = 10000;
this.toolTip1.InitialDelay = 500;
this.toolTip1.ReshowDelay = 100;
//
// Export // Export
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -362,5 +373,6 @@
private System.Windows.Forms.Button btnGenerate; private System.Windows.Forms.Button btnGenerate;
private System.Windows.Forms.Button btnClose; private System.Windows.Forms.Button btnClose;
private System.Windows.Forms.CheckBox cbZeroes; private System.Windows.Forms.CheckBox cbZeroes;
private System.Windows.Forms.ToolTip toolTip1;
} }
} }

View File

@@ -88,7 +88,7 @@ namespace McBitFont {
int imin, jmin, imax, jmax, idir, jdir; int imin, jmin, imax, jmax, idir, jdir;
if (com) { if (com) {
//Header comments // Header comments
output += comments["header"]; output += comments["header"];
output += comments["scan_order"] + cbOrder.Text + "\n"; output += comments["scan_order"] + cbOrder.Text + "\n";
output += comments["scan_hdir"] + cbHDir.Text + "\n"; output += comments["scan_hdir"] + cbHDir.Text + "\n";
@@ -107,7 +107,7 @@ namespace McBitFont {
} }
} }
//Figure out mins and maxes // Figure out mins and maxes
if (cbOrder.SelectedIndex == 0) { if (cbOrder.SelectedIndex == 0) {
if (cbHDir.SelectedIndex == 0) { if (cbHDir.SelectedIndex == 0) {
// Columns; Left to right // Columns; Left to right
@@ -342,7 +342,7 @@ namespace McBitFont {
} }
if (lines == 1) { if (lines == 1) {
// "1 symbol per line" - closing line // "1 symbol per line" - closing line
if (!f.Equals(flast)) output += ","; if (!f.Equals(flast) && f.width > 0) output += ",";
if (com && fcount > 1) { if (com && fcount > 1) {
//...with a comment //...with a comment
output += " // " + f.code.ToString() + " --> " + mainForm.decodeSymbol(f.code); output += " // " + f.code.ToString() + " --> " + mainForm.decodeSymbol(f.code);

View File

@@ -117,4 +117,10 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root> </root>

View File

@@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<Costura />
</Weavers>

View File

@@ -34,6 +34,7 @@
this.cbZoom = new System.Windows.Forms.ComboBox(); this.cbZoom = new System.Windows.Forms.ComboBox();
this.label4 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel(); this.panel1 = new System.Windows.Forms.Panel();
this.btnClear = new System.Windows.Forms.Button();
this.btnMirrorY = new System.Windows.Forms.Button(); this.btnMirrorY = new System.Windows.Forms.Button();
this.btnMirrorX = new System.Windows.Forms.Button(); this.btnMirrorX = new System.Windows.Forms.Button();
this.btnInvert = new System.Windows.Forms.Button(); this.btnInvert = new System.Windows.Forms.Button();
@@ -52,7 +53,10 @@
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openDEVToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveDEVToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveToolStripMenuItem = 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.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -62,6 +66,7 @@
this.removeSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.removeSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.applyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.applyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolsToolStripMenuItem = 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.shiftUpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.shiftDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.shiftDownToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.shiftLeftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.shiftLeftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -74,6 +79,9 @@
this.dlgSave = new System.Windows.Forms.SaveFileDialog(); this.dlgSave = new System.Windows.Forms.SaveFileDialog();
this.dlgOpen = new System.Windows.Forms.OpenFileDialog(); this.dlgOpen = new System.Windows.Forms.OpenFileDialog();
this.btnBaseline = new System.Windows.Forms.Button(); 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();
((System.ComponentModel.ISupportInitialize)(this.nudX)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudX)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nudY)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudY)).BeginInit();
this.panel1.SuspendLayout(); this.panel1.SuspendLayout();
@@ -99,20 +107,16 @@
// nudX // nudX
// //
this.nudX.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.nudX.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.nudX.Location = new System.Drawing.Point(717, 27); this.nudX.Location = new System.Drawing.Point(666, 27);
this.nudX.Maximum = new decimal(new int[] { this.nudX.Maximum = new decimal(new int[] {
255, 255,
0, 0,
0, 0,
0}); 0});
this.nudX.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.nudX.Name = "nudX"; this.nudX.Name = "nudX";
this.nudX.Size = new System.Drawing.Size(55, 20); this.nudX.Size = new System.Drawing.Size(40, 20);
this.nudX.TabIndex = 1; this.nudX.TabIndex = 1;
this.toolTip1.SetToolTip(this.nudX, "Symbol width");
this.nudX.Value = new decimal(new int[] { this.nudX.Value = new decimal(new int[] {
32, 32,
0, 0,
@@ -123,7 +127,7 @@
// nudY // nudY
// //
this.nudY.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.nudY.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.nudY.Location = new System.Drawing.Point(717, 49); this.nudY.Location = new System.Drawing.Point(666, 49);
this.nudY.Maximum = new decimal(new int[] { this.nudY.Maximum = new decimal(new int[] {
255, 255,
0, 0,
@@ -135,8 +139,9 @@
0, 0,
0}); 0});
this.nudY.Name = "nudY"; this.nudY.Name = "nudY";
this.nudY.Size = new System.Drawing.Size(55, 20); this.nudY.Size = new System.Drawing.Size(40, 20);
this.nudY.TabIndex = 2; this.nudY.TabIndex = 2;
this.toolTip1.SetToolTip(this.nudY, "Symbol height");
this.nudY.Value = new decimal(new int[] { this.nudY.Value = new decimal(new int[] {
32, 32,
0, 0,
@@ -148,7 +153,7 @@
// //
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.label1.AutoSize = true; this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(673, 29); this.label1.Location = new System.Drawing.Point(622, 29);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(38, 13); this.label1.Size = new System.Drawing.Size(38, 13);
this.label1.TabIndex = 3; this.label1.TabIndex = 3;
@@ -158,7 +163,7 @@
// //
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.label2.AutoSize = true; this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(670, 51); this.label2.Location = new System.Drawing.Point(619, 51);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(41, 13); this.label2.Size = new System.Drawing.Size(41, 13);
this.label2.TabIndex = 4; this.label2.TabIndex = 4;
@@ -192,18 +197,19 @@
"40", "40",
"45", "45",
"50"}); "50"});
this.cbZoom.Location = new System.Drawing.Point(605, 45); this.cbZoom.Location = new System.Drawing.Point(554, 45);
this.cbZoom.Name = "cbZoom"; this.cbZoom.Name = "cbZoom";
this.cbZoom.Size = new System.Drawing.Size(59, 21); this.cbZoom.Size = new System.Drawing.Size(59, 21);
this.cbZoom.TabIndex = 6; this.cbZoom.TabIndex = 6;
this.cbZoom.TabStop = false; this.cbZoom.TabStop = false;
this.toolTip1.SetToolTip(this.cbZoom, "Canvas zoom level");
this.cbZoom.SelectedIndexChanged += new System.EventHandler(this.cbZoom_SelectedIndexChanged); this.cbZoom.SelectedIndexChanged += new System.EventHandler(this.cbZoom_SelectedIndexChanged);
// //
// label4 // label4
// //
this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.label4.AutoSize = true; this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(604, 29); this.label4.Location = new System.Drawing.Point(553, 29);
this.label4.Name = "label4"; this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(62, 13); this.label4.Size = new System.Drawing.Size(62, 13);
this.label4.TabIndex = 7; this.label4.TabIndex = 7;
@@ -213,6 +219,7 @@
// //
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); 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.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel1.Controls.Add(this.btnClear);
this.panel1.Controls.Add(this.btnMirrorY); this.panel1.Controls.Add(this.btnMirrorY);
this.panel1.Controls.Add(this.btnMirrorX); this.panel1.Controls.Add(this.btnMirrorX);
this.panel1.Controls.Add(this.btnInvert); this.panel1.Controls.Add(this.btnInvert);
@@ -225,6 +232,18 @@
this.panel1.Size = new System.Drawing.Size(120, 121); this.panel1.Size = new System.Drawing.Size(120, 121);
this.panel1.TabIndex = 9; this.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);
//
// btnMirrorY // btnMirrorY
// //
this.btnMirrorY.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.btnMirrorY.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
@@ -233,6 +252,7 @@
this.btnMirrorY.Size = new System.Drawing.Size(30, 30); this.btnMirrorY.Size = new System.Drawing.Size(30, 30);
this.btnMirrorY.TabIndex = 6; this.btnMirrorY.TabIndex = 6;
this.btnMirrorY.Text = "⩥"; this.btnMirrorY.Text = "⩥";
this.toolTip1.SetToolTip(this.btnMirrorY, "Mirror by Y axis (vertical)");
this.btnMirrorY.UseVisualStyleBackColor = true; this.btnMirrorY.UseVisualStyleBackColor = true;
this.btnMirrorY.Click += new System.EventHandler(this.btnMirrorY_Click); this.btnMirrorY.Click += new System.EventHandler(this.btnMirrorY_Click);
// //
@@ -244,6 +264,7 @@
this.btnMirrorX.Size = new System.Drawing.Size(30, 30); this.btnMirrorX.Size = new System.Drawing.Size(30, 30);
this.btnMirrorX.TabIndex = 5; this.btnMirrorX.TabIndex = 5;
this.btnMirrorX.Text = "◮"; this.btnMirrorX.Text = "◮";
this.toolTip1.SetToolTip(this.btnMirrorX, "Mirror by X axis (horizontal)");
this.btnMirrorX.UseVisualStyleBackColor = true; this.btnMirrorX.UseVisualStyleBackColor = true;
this.btnMirrorX.Click += new System.EventHandler(this.btnMirrorX_Click); this.btnMirrorX.Click += new System.EventHandler(this.btnMirrorX_Click);
// //
@@ -255,6 +276,7 @@
this.btnInvert.Size = new System.Drawing.Size(30, 30); this.btnInvert.Size = new System.Drawing.Size(30, 30);
this.btnInvert.TabIndex = 4; this.btnInvert.TabIndex = 4;
this.btnInvert.Text = "◪"; this.btnInvert.Text = "◪";
this.toolTip1.SetToolTip(this.btnInvert, "Invert pixel colors");
this.btnInvert.UseVisualStyleBackColor = true; this.btnInvert.UseVisualStyleBackColor = true;
this.btnInvert.Click += new System.EventHandler(this.btnInvert_Click); this.btnInvert.Click += new System.EventHandler(this.btnInvert_Click);
// //
@@ -266,6 +288,7 @@
this.btnShiftDown.Size = new System.Drawing.Size(30, 30); this.btnShiftDown.Size = new System.Drawing.Size(30, 30);
this.btnShiftDown.TabIndex = 3; this.btnShiftDown.TabIndex = 3;
this.btnShiftDown.Text = "▼"; this.btnShiftDown.Text = "▼";
this.toolTip1.SetToolTip(this.btnShiftDown, "Shift pixels down");
this.btnShiftDown.UseVisualStyleBackColor = true; this.btnShiftDown.UseVisualStyleBackColor = true;
this.btnShiftDown.Click += new System.EventHandler(this.btnShiftDown_Click); this.btnShiftDown.Click += new System.EventHandler(this.btnShiftDown_Click);
// //
@@ -277,6 +300,7 @@
this.btnShiftUp.Size = new System.Drawing.Size(30, 30); this.btnShiftUp.Size = new System.Drawing.Size(30, 30);
this.btnShiftUp.TabIndex = 2; this.btnShiftUp.TabIndex = 2;
this.btnShiftUp.Text = "▲"; this.btnShiftUp.Text = "▲";
this.toolTip1.SetToolTip(this.btnShiftUp, "Shift pixels up");
this.btnShiftUp.UseVisualStyleBackColor = true; this.btnShiftUp.UseVisualStyleBackColor = true;
this.btnShiftUp.Click += new System.EventHandler(this.btnShiftUp_Click); this.btnShiftUp.Click += new System.EventHandler(this.btnShiftUp_Click);
// //
@@ -288,6 +312,7 @@
this.btnShiftRight.Size = new System.Drawing.Size(30, 30); this.btnShiftRight.Size = new System.Drawing.Size(30, 30);
this.btnShiftRight.TabIndex = 1; this.btnShiftRight.TabIndex = 1;
this.btnShiftRight.Text = "▶"; this.btnShiftRight.Text = "▶";
this.toolTip1.SetToolTip(this.btnShiftRight, "Shift pixels right");
this.btnShiftRight.UseVisualStyleBackColor = true; this.btnShiftRight.UseVisualStyleBackColor = true;
this.btnShiftRight.Click += new System.EventHandler(this.btnShiftRight_Click); this.btnShiftRight.Click += new System.EventHandler(this.btnShiftRight_Click);
// //
@@ -299,6 +324,7 @@
this.btnShiftLeft.Size = new System.Drawing.Size(30, 30); this.btnShiftLeft.Size = new System.Drawing.Size(30, 30);
this.btnShiftLeft.TabIndex = 0; this.btnShiftLeft.TabIndex = 0;
this.btnShiftLeft.Text = "◀"; this.btnShiftLeft.Text = "◀";
this.toolTip1.SetToolTip(this.btnShiftLeft, "Shift pixels left");
this.btnShiftLeft.UseVisualStyleBackColor = true; this.btnShiftLeft.UseVisualStyleBackColor = true;
this.btnShiftLeft.Click += new System.EventHandler(this.btnShiftLeft_Click); this.btnShiftLeft.Click += new System.EventHandler(this.btnShiftLeft_Click);
// //
@@ -310,6 +336,7 @@
this.btnExport.Size = new System.Drawing.Size(75, 23); this.btnExport.Size = new System.Drawing.Size(75, 23);
this.btnExport.TabIndex = 10; this.btnExport.TabIndex = 10;
this.btnExport.Text = "Export"; this.btnExport.Text = "Export";
this.toolTip1.SetToolTip(this.btnExport, "Configure and export data");
this.btnExport.UseVisualStyleBackColor = true; this.btnExport.UseVisualStyleBackColor = true;
this.btnExport.Click += new System.EventHandler(this.button1_Click); this.btnExport.Click += new System.EventHandler(this.button1_Click);
// //
@@ -349,6 +376,7 @@
this.btnApply.Size = new System.Drawing.Size(75, 23); this.btnApply.Size = new System.Drawing.Size(75, 23);
this.btnApply.TabIndex = 13; this.btnApply.TabIndex = 13;
this.btnApply.Text = "Apply"; this.btnApply.Text = "Apply";
this.toolTip1.SetToolTip(this.btnApply, "Apply changes made to the symbol");
this.btnApply.UseVisualStyleBackColor = true; this.btnApply.UseVisualStyleBackColor = true;
this.btnApply.Click += new System.EventHandler(this.button2_Click); this.btnApply.Click += new System.EventHandler(this.button2_Click);
// //
@@ -402,7 +430,10 @@
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.newToolStripMenuItem, this.newToolStripMenuItem,
this.openToolStripMenuItem, this.openToolStripMenuItem,
this.openDEVToolStripMenuItem,
this.saveDEVToolStripMenuItem,
this.saveToolStripMenuItem, this.saveToolStripMenuItem,
this.saveAsToolStripMenuItem,
this.exitToolStripMenuItem}); this.exitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
@@ -414,7 +445,7 @@
this.newToolStripMenuItem.Name = "newToolStripMenuItem"; this.newToolStripMenuItem.Name = "newToolStripMenuItem";
this.newToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+N"; this.newToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+N";
this.newToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.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(152, 22); this.newToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.newToolStripMenuItem.Text = "New"; this.newToolStripMenuItem.Text = "New";
this.newToolStripMenuItem.Click += new System.EventHandler(this.newToolStripMenuItem_Click); this.newToolStripMenuItem.Click += new System.EventHandler(this.newToolStripMenuItem_Click);
// //
@@ -424,19 +455,45 @@
this.openToolStripMenuItem.Name = "openToolStripMenuItem"; this.openToolStripMenuItem.Name = "openToolStripMenuItem";
this.openToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+O"; this.openToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+O";
this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.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(152, 22); this.openToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.openToolStripMenuItem.Text = "Open"; this.openToolStripMenuItem.Text = "Open";
this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
// //
// 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);
//
// 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);
//
// saveToolStripMenuItem // saveToolStripMenuItem
// //
this.saveToolStripMenuItem.Image = global::McBitFont.Properties.Resources.Famfamfam_Silk_Disk_16; this.saveToolStripMenuItem.Image = global::McBitFont.Properties.Resources.Famfamfam_Silk_Disk_16;
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
this.saveToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+S"; this.saveToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+S";
this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.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(152, 22); this.saveToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.saveToolStripMenuItem.Text = "Save as"; this.saveToolStripMenuItem.Text = "Save";
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); this.saveToolStripMenuItem.Click += new System.EventHandler(this.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);
// //
// exitToolStripMenuItem // exitToolStripMenuItem
// //
@@ -444,7 +501,7 @@
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.ShortcutKeyDisplayString = "Alt+X"; this.exitToolStripMenuItem.ShortcutKeyDisplayString = "Alt+X";
this.exitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.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(152, 22); this.exitToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.exitToolStripMenuItem.Text = "Exit"; this.exitToolStripMenuItem.Text = "Exit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
// //
@@ -529,6 +586,7 @@
// toolsToolStripMenuItem // toolsToolStripMenuItem
// //
this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ClearToolStripMenuItem,
this.shiftUpToolStripMenuItem, this.shiftUpToolStripMenuItem,
this.shiftDownToolStripMenuItem, this.shiftDownToolStripMenuItem,
this.shiftLeftToolStripMenuItem, this.shiftLeftToolStripMenuItem,
@@ -538,9 +596,18 @@
this.mirrorYToolStripMenuItem, this.mirrorYToolStripMenuItem,
this.exportToolStripMenuItem}); this.exportToolStripMenuItem});
this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem"; this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
this.toolsToolStripMenuItem.Size = new System.Drawing.Size(46, 20); this.toolsToolStripMenuItem.Size = new System.Drawing.Size(47, 20);
this.toolsToolStripMenuItem.Text = "Tools"; this.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);
//
// shiftUpToolStripMenuItem // shiftUpToolStripMenuItem
// //
this.shiftUpToolStripMenuItem.Image = global::McBitFont.Properties.Resources.arrow_top; this.shiftUpToolStripMenuItem.Image = global::McBitFont.Properties.Resources.arrow_top;
@@ -630,7 +697,7 @@
// dlgSave // dlgSave
// //
this.dlgSave.DefaultExt = "mbf"; this.dlgSave.DefaultExt = "mbf";
this.dlgSave.Filter = "McBitFont files|*.mbf|All files|*.*"; this.dlgSave.Filter = "McBitFont files|*.mbf|McBitFont new format|*.mbfont|All files|*.*";
// //
// dlgOpen // dlgOpen
// //
@@ -645,14 +712,47 @@
this.btnBaseline.Size = new System.Drawing.Size(75, 23); this.btnBaseline.Size = new System.Drawing.Size(75, 23);
this.btnBaseline.TabIndex = 18; this.btnBaseline.TabIndex = 18;
this.btnBaseline.Text = "Baseline"; this.btnBaseline.Text = "Baseline";
this.toolTip1.SetToolTip(this.btnBaseline, "Set irtual base line for the font");
this.btnBaseline.UseVisualStyleBackColor = true; this.btnBaseline.UseVisualStyleBackColor = true;
this.btnBaseline.Click += new System.EventHandler(this.btnBaseline_Click); this.btnBaseline.Click += new System.EventHandler(this.btnBaseline_Click);
// //
// toolTip1
//
this.toolTip1.AutoPopDelay = 10000;
this.toolTip1.InitialDelay = 500;
this.toolTip1.ReshowDelay = 100;
//
// chkLeftSide
//
this.chkLeftSide.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
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;
//
// chkTopSide
//
this.chkTopSide.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
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;
//
// MainForm // MainForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(784, 561); 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.btnBaseline);
this.Controls.Add(this.btnApply); this.Controls.Add(this.btnApply);
this.Controls.Add(this.btnExport); this.Controls.Add(this.btnExport);
@@ -716,7 +816,7 @@
private System.Windows.Forms.MenuStrip menuStrip1; private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem newToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
@@ -739,6 +839,14 @@
private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem copyToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem pasteToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem pasteToolStripMenuItem;
private System.Windows.Forms.Button btnBaseline; private System.Windows.Forms.Button btnBaseline;
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
private System.Windows.Forms.ToolTip toolTip1;
private System.Windows.Forms.Button btnClear;
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;
} }
} }

View File

@@ -1,25 +1,29 @@
using System; using MessagePack;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using System.Windows.Forms.VisualStyles; using System.Windows.Forms.VisualStyles;
using System.Runtime.InteropServices;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.InteropServices.ComTypes;
using System.Diagnostics;
using System.Drawing.Drawing2D;
namespace McBitFont { namespace McBitFont {
public partial class MainForm : Form { public partial class MainForm : Form {
[Serializable] [Serializable]
[MessagePackObject]
public struct FrameMiniature { public struct FrameMiniature {
public FrameMiniature(int cc, int ww, int hh) { public FrameMiniature(int cc, int ww, int hh) {
code = cc; code = cc;
@@ -27,17 +31,26 @@ namespace McBitFont {
height = hh; height = hh;
data = new bool[ww, hh]; data = new bool[ww, hh];
} }
[Key(0)]
public int code; public int code;
[Key(1)]
public int width; public int width;
[Key(2)]
public int height; public int height;
[Key(3)]
public bool[,] data; public bool[,] data;
}; };
[Serializable] [Serializable]
[MessagePackObject]
public struct SaveBlock { public struct SaveBlock {
[Key(4)]
public bool monospaced; public bool monospaced;
[Key(5)]
public int codepage; public int codepage;
[Key(6)]
public int baseline; public int baseline;
[Key(7)]
public List<FrameMiniature> frames; public List<FrameMiniature> frames;
} }
@@ -51,8 +64,9 @@ namespace McBitFont {
public bool monospaced = false; public bool monospaced = false;
bool modified = false; bool modified = false;
bool prjModified = false; bool prjModified = false;
public const string version = "1.3"; public const string version = "1.7a";
public string prjName = "Untitled"; public string prjName = "Untitled";
public string prjFileName = "";
public int codepage = 1251; public int codepage = 1251;
private FrameMiniature fbuf; private FrameMiniature fbuf;
private bool fbuffer = false; private bool fbuffer = false;
@@ -89,6 +103,11 @@ namespace McBitFont {
this.Text = "McBitFont " + version + " - " + prjName; this.Text = "McBitFont " + version + " - " + prjName;
fbuf = new FrameMiniature(0, dotWidth, dotHeight); fbuf = new FrameMiniature(0, dotWidth, dotHeight);
// Chek for arguments
if (Environment.GetCommandLineArgs().Length > 1) {
loadProject(Environment.GetCommandLineArgs()[1]);
}
} }
[DllImport("user32.dll")] [DllImport("user32.dll")]
@@ -113,12 +132,12 @@ namespace McBitFont {
private void dotPanel_MouseWheel(object sender, MouseEventArgs e) { private void dotPanel_MouseWheel(object sender, MouseEventArgs e) {
int t = e.Delta / 120; int t = e.Delta / 120;
if (e.Delta == 0) return; if (e.Delta == 0) return;
if (ModifierKeys.HasFlag(Keys.Shift)) { if (ModifierKeys.HasFlag(Keys.Control)) {
t += cbZoom.SelectedIndex; t += cbZoom.SelectedIndex;
if (t > cbZoom.Items.Count - 1) return; if (t > cbZoom.Items.Count - 1) return;
if (t < 0) return; if (t < 0) return;
cbZoom.SelectedIndex = t; cbZoom.SelectedIndex = t;
} else if (ModifierKeys.HasFlag(Keys.Control)) { } else if (ModifierKeys.HasFlag(Keys.Shift)) {
if (hScroll.Enabled) { if (hScroll.Enabled) {
t = t * -1 * (cellSize + gap) + hScroll.Value; t = t * -1 * (cellSize + gap) + hScroll.Value;
if (t < hScroll.Minimum) t = hScroll.Minimum; if (t < hScroll.Minimum) t = hScroll.Minimum;
@@ -141,7 +160,7 @@ namespace McBitFont {
for (int i = 0; i < frames.Count; i++) { for (int i = 0; i < frames.Count; i++) {
frames[i] = frameResize(frames[i], (int)nudX.Value, dotHeight); frames[i] = frameResize(frames[i], (int)nudX.Value, dotHeight);
bmp = getMiniPictue(frames[i]); bmp = getMiniPictue(frames[i]);
string s = frames[i].code.ToString(); string s = frames[i].code.ToString().PadLeft(3, '0');
ilMiniatures.Images.RemoveByKey(s); ilMiniatures.Images.RemoveByKey(s);
ilMiniatures.Images.Add(s, (Image)bmp); ilMiniatures.Images.Add(s, (Image)bmp);
miniList.Items[s].ImageKey = s; miniList.Items[s].ImageKey = s;
@@ -156,13 +175,14 @@ namespace McBitFont {
private void nudY_ValueChanged(object sender, EventArgs e) { private void nudY_ValueChanged(object sender, EventArgs e) {
Bitmap bmp; Bitmap bmp;
for (int i = 0; i < frames.Count; i++) { for (int i = 0; i < frames.Count; i++) {
frames[i] = frameResize(frames[i], dotWidth, (int)nudY.Value); frames[i] = frameResize(frames[i], frames[i].width, (int)nudY.Value);
bmp = getMiniPictue(frames[i]); bmp = getMiniPictue(frames[i]);
string s = frames[i].code.ToString(); string s = frames[i].code.ToString().PadLeft(3, '0');
ilMiniatures.Images.RemoveByKey(s); ilMiniatures.Images.RemoveByKey(s);
ilMiniatures.Images.Add(s, (Image)bmp); ilMiniatures.Images.Add(s, (Image)bmp);
miniList.Items[s].ImageKey = s; miniList.Items[s].ImageKey = s;
} }
if (nudY.Focused) modified = true;
prjModified = true; prjModified = true;
dotResize(dotWidth, (int)nudY.Value); dotResize(dotWidth, (int)nudY.Value);
} }
@@ -170,20 +190,24 @@ namespace McBitFont {
private FrameMiniature frameResize(FrameMiniature ff, int neww, int newh) { private FrameMiniature frameResize(FrameMiniature ff, int neww, int newh) {
int oldw = ff.width; int oldw = ff.width;
int oldh = ff.height; int oldh = ff.height;
int di = 0, dj = 0;
int imax, jmax; int imax, jmax;
bool[,] t; bool[,] t;
if (neww < oldw) imax = neww; if (chkLeftSide.Checked) di = oldw - neww;
else imax = oldw; if (chkTopSide.Checked) dj = oldh - newh;
if (newh < oldh) jmax = newh;
else jmax = oldh; imax = (neww < oldw) ? neww : oldw;
jmax = (newh < oldh) ? newh : oldh;
if (neww > oldw) imax -= di;
if (newh > oldh) jmax -= dj;
ff.width = neww; ff.width = neww;
ff.height = newh; ff.height = newh;
t = new bool[neww, newh]; t = new bool[neww, newh];
for (int i=0; i<imax; i++) { for (int i=0; i<imax; i++) {
for (int j=0;j<jmax; j++) { for (int j=0;j<jmax; j++) {
t[i, j] = ff.data[i, j]; if (i+di >= 0 && j+dj >= 0) t[i, j] = ff.data[i + di, j + dj];
} }
} }
ff.data = t; ff.data = t;
@@ -192,30 +216,12 @@ namespace McBitFont {
} }
private void dotResize(int ww, int hh) { private void dotResize(int ww, int hh) {
int imax, jmax; f = frameResize(f, ww, hh);
bool[,] t;
if (ww < dotWidth) imax = ww;
else imax = dotWidth;
if (hh < dotHeight) jmax = hh;
else jmax = dotHeight;
f.width = ww;
f.height = hh;
t = new bool[ww, hh];
for (int i=0; i<imax; i++) {
for (int j=0; j<jmax; j++) {
t[i, j] = f.data[i, j];
}
}
f.data = t;
dotWidth = ww; dotWidth = ww;
dotHeight = hh; dotHeight = hh;
w = pixelOffset + dotWidth * (cellSize + gap); w = pixelOffset + dotWidth * (cellSize + gap);
h = pixelOffset + dotHeight * (cellSize + gap); h = pixelOffset + dotHeight * (cellSize + gap);
cbZoom_SelectedIndexChanged(cbZoom, null); cbZoom_SelectedIndexChanged(cbZoom, null);
fbuffer = false;
} }
private void cbZoom_SelectedIndexChanged(object sender, EventArgs e) { private void cbZoom_SelectedIndexChanged(object sender, EventArgs e) {
@@ -278,17 +284,18 @@ namespace McBitFont {
} }
private void dotPanel_MouseMove(object sender, MouseEventArgs e) { private void dotPanel_MouseMove(object sender, MouseEventArgs e) {
Rectangle rect1, rect2;
if (set_base) { if (set_base) {
int yy = pixelOffset + baseline * (cellSize + gap) - vScroll.Value - 1; int yy = pixelOffset + baseline * (cellSize + gap) - vScroll.Value - 1;
Rectangle rect1 = new Rectangle(pixelOffset, yy, w, 3); rect1 = new Rectangle(pixelOffset, yy, w, 2);
baseline = (e.Y - pixelOffset + vScroll.Value) / (cellSize + gap); baseline = (e.Y - pixelOffset + vScroll.Value) / (cellSize + gap);
if (baseline >= dotHeight) baseline = dotHeight - 1; if (baseline >= dotHeight) baseline = dotHeight - 1;
if (baseline < 0) baseline = 0; if (baseline < 0) baseline = 0;
yy = pixelOffset + baseline * (cellSize + gap) - vScroll.Value - 1; yy = pixelOffset + baseline * (cellSize + gap) - vScroll.Value - 1;
Rectangle rect2 = new Rectangle(pixelOffset, yy, w, 3); rect2 = new Rectangle(pixelOffset, yy, w, 2);
dotPanel.Invalidate(rect1); dotPanel.Invalidate(rect1);
dotPanel.Invalidate(rect2); dotPanel.Invalidate(rect2);
@@ -309,8 +316,9 @@ namespace McBitFont {
f.data[i, j] = true; f.data[i, j] = true;
int x = pixelOffset + i * (cellSize + gap) - hScroll.Value; int x = pixelOffset + i * (cellSize + gap) - hScroll.Value;
int y = pixelOffset + j * (cellSize + gap) - vScroll.Value; int y = pixelOffset + j * (cellSize + gap) - vScroll.Value;
g.FillRectangle(sbb, x, y, cellSize, cellSize);
modified = true; modified = true;
rect1 = new Rectangle(x, y, cellSize, cellSize);
dotPanel.Invalidate(rect1);
} }
if (e.Button == MouseButtons.Right && f.data[i, j]) { if (e.Button == MouseButtons.Right && f.data[i, j]) {
Graphics g = dotPanel.CreateGraphics(); Graphics g = dotPanel.CreateGraphics();
@@ -318,8 +326,9 @@ namespace McBitFont {
f.data[i, j] = false; f.data[i, j] = false;
int x = pixelOffset + i * (cellSize + gap) - hScroll.Value; int x = pixelOffset + i * (cellSize + gap) - hScroll.Value;
int y = pixelOffset + j * (cellSize + gap) - vScroll.Value; int y = pixelOffset + j * (cellSize + gap) - vScroll.Value;
g.FillRectangle(sbw, x, y, cellSize, cellSize);
modified = true; modified = true;
rect1 = new Rectangle(x, y, cellSize, cellSize);
dotPanel.Invalidate(rect1);
} }
} }
@@ -473,13 +482,13 @@ namespace McBitFont {
} }
if (f.data[i, j]) sb = sbb; if (f.data[i, j]) sb = sbb;
else sb = sbw; else sb = sbw;
g.FillRectangle(sb, x, y, cellSize, cellSize); g.FillRectangle(sb, x, (baseline == j ? y+1 : y), cellSize, (baseline == j ? cellSize-1 : cellSize));
} }
} }
if (baseline > 0 && gap > 0) { if (baseline > 0 && gap > 0) {
x = pixelOffset - hScroll.Value; x = pixelOffset - hScroll.Value;
y = pixelOffset + baseline * (cellSize + gap) - vScroll.Value - 1; y = pixelOffset + baseline * (cellSize + gap) - vScroll.Value;
g.DrawLine( g.DrawLine(
new Pen(Color.Blue, 2), new Pen(Color.Blue, 2),
x, y, x, y,
@@ -522,6 +531,7 @@ namespace McBitFont {
} }
private void newToolStripMenuItem_Click(object sender, EventArgs e) { private void newToolStripMenuItem_Click(object sender, EventArgs e) {
checkModifiedFrame();
if (prjModified) { 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) { 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(); saveToolStripMenuItem.PerformClick();
@@ -546,35 +556,34 @@ namespace McBitFont {
append = "Single"; append = "Single";
monospaced = false; monospaced = false;
} else { } else {
int i; int i, imin, imax;
if (form.cbNotPrintable.Checked) { if (form.cbDigits.Checked) {
for (i = 0; i < 32; i++) { imin = 48;
newf = new FrameMiniature(i, neww, newh); imax = 57;
if (form.cbFontBased.Checked) newf = fillFrame(newf, form.dlgFont.Font, (int)form.nudShiftX.Value, (int)form.nudShiftY.Value); } else {
frames.Add(newf); if (form.cbNotPrintable.Checked) imin = 0;
} else if (form.cbLatin.Checked) imin = 32;
else imin = 128;
if (form.cbExtended.Checked) imax = 255;
else if (form.cbLatin.Checked) imax = 127;
else imax = 31;
} }
if (form.cbLatin.Checked) {
for (i = 32; i < 128; i++) {
newf = new FrameMiniature(i, neww, newh); for (i = imin; i <= imax; i++) {
if (form.cbFontBased.Checked) newf = fillFrame(newf, form.dlgFont.Font, (int)form.nudShiftX.Value, (int)form.nudShiftY.Value); newf = new FrameMiniature(i, neww, newh);
frames.Add(newf); if (form.cbFontBased.Checked) newf = fillFrame(newf, form.dlgFont.Font, (int)form.nudShiftX.Value, (int)form.nudShiftY.Value);
} frames.Add(newf);
}
if (form.cbExtended.Checked) {
for (i = 128; i < 256; i++) {
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; monospaced = form.rbMono.Checked;
} }
lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; lblType.Text = monospaced ? "Monospaced" : "Variable width / Single";
codepage = (form.cbEncoding.SelectedItem as New.EncodingItem).Code;
foreach (FrameMiniature ff in frames) { foreach (FrameMiniature ff in frames) {
var s = ff.code.ToString().PadLeft(3, '0'); var s = ff.code.ToString().PadLeft(3, '0');
ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff)); ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff));
codepage =(form.cbEncoding.SelectedItem as New.EncodingItem).Code;
var sss = decodeSymbol(ff.code); var sss = decodeSymbol(ff.code);
miniList.Items.Add(s, s+' '+append+sss, s); miniList.Items.Add(s, s+' '+append+sss, s);
} }
@@ -583,22 +592,21 @@ namespace McBitFont {
miniList.Refresh(); miniList.Refresh();
form.Dispose(); form.Dispose();
baseline = 0;
prjName = "Untitled"; prjName = "Untitled";
prjFileName = "";
this.Text = "McBitFont " + version + " - " + prjName; this.Text = "McBitFont " + version + " - " + prjName;
modified = false; modified = false;
checkForAdd(); checkForAdd();
fbuffer = false; fbuffer = false;
dotPanel.Refresh();
} }
} }
private void miniList_SelectedIndexChanged(object sender, EventArgs e) { private void miniList_SelectedIndexChanged(object sender, EventArgs e) {
if (miniList.FocusedItem == null) return; if (miniList.FocusedItem == null) return;
if (modified) { checkModifiedFrame();
if (MessageBox.Show("Current symbol is modified.\nDo you want to save the changes?", "Symbol was modified!", MessageBoxButtons.YesNo) == DialogResult.Yes) {
saveFrame();
}
modified = false;
}
if (miniList.SelectedItems.Count == 0) { if (miniList.SelectedItems.Count == 0) {
removeSymbolToolStripMenuItem.Enabled = false; removeSymbolToolStripMenuItem.Enabled = false;
copyToolStripMenuItem.Enabled = false; copyToolStripMenuItem.Enabled = false;
@@ -625,6 +633,7 @@ namespace McBitFont {
} }
private void saveToolStripMenuItem_Click(object sender, EventArgs e) { private void saveToolStripMenuItem_Click(object sender, EventArgs e) {
checkModifiedFrame();
if (dlgSave.ShowDialog() == DialogResult.OK) { if (dlgSave.ShowDialog() == DialogResult.OK) {
SaveBlock sav; SaveBlock sav;
sav.monospaced = monospaced; sav.monospaced = monospaced;
@@ -638,54 +647,78 @@ namespace McBitFont {
} }
prjModified = false; prjModified = false;
prjName = Path.GetFileNameWithoutExtension(dlgSave.FileName); prjName = Path.GetFileNameWithoutExtension(dlgSave.FileName);
prjFileName = dlgSave.FileName;
this.Text = "McBitFont " + version + " - " + prjName; this.Text = "McBitFont " + version + " - " + prjName;
} }
} }
private void loadProject(string filename) {
SaveBlock sav;
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fs = File.Open(filename, FileMode.Open)) {
sav = (SaveBlock)formatter.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 saveProject(string filename) {
SaveBlock sav;
sav.monospaced = monospaced;
sav.frames = frames;
sav.codepage = codepage;
sav.baseline = baseline;
BinaryFormatter formatter = new BinaryFormatter();
using (Stream ms = File.OpenWrite(filename)) {
formatter.Serialize(ms, sav);
ms.Close();
}
prjModified = false;
prjName = Path.GetFileNameWithoutExtension(filename);
prjFileName = filename;
this.Text = "McBitFont " + version + " - " + prjName;
}
private void openToolStripMenuItem_Click(object sender, EventArgs e) { private void openToolStripMenuItem_Click(object sender, EventArgs e) {
if (prjModified) { if (prjModified) {
if (MessageBox.Show("The project is modified.\nDo you want to save it first?", "Project was modified!", MessageBoxButtons.YesNo) == DialogResult.Yes) { if (MessageBox.Show("The project is modified.\nDo you want to save it first?", "Project was modified!", MessageBoxButtons.YesNo) == DialogResult.Yes) {
saveToolStripMenuItem.PerformClick(); saveAsToolStripMenuItem.PerformClick();
return; return;
} }
} }
if (dlgOpen.ShowDialog() == DialogResult.OK) { if (dlgOpen.ShowDialog() == DialogResult.OK) {
SaveBlock sav; loadProject(dlgOpen.FileName);
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fs = File.Open(dlgOpen.FileName, FileMode.Open)) {
sav = (SaveBlock)formatter.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');
ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff));
miniList.Items.Add(s, s + ' ' + (char)ff.code, 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;
prjName = Path.GetFileNameWithoutExtension(dlgOpen.FileName);
this.Text = "McBitFont " + version + " - " + prjName;
checkForAdd();
fbuffer = false;
} }
} }
@@ -738,7 +771,19 @@ namespace McBitFont {
} }
private void pasteToolStripMenuItem_Click(object sender, EventArgs e) { private void pasteToolStripMenuItem_Click(object sender, EventArgs e) {
Array.Copy(fbuf.data, f.data, fbuf.data.Length); if (fbuf.width == f.width && fbuf.height == f.height) {
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;
for (int i = 0; i < wmax; i++) {
for (int j = 0; j < hmax; j++) {
f.data[i,j] = fbuf.data[i,j];
}
}
}
dotPanel.Refresh(); dotPanel.Refresh();
modified = true; modified = true;
} }
@@ -752,6 +797,101 @@ namespace McBitFont {
set_base = !set_base; set_base = !set_base;
} }
// Check modified / Save frame
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();
}
modified = false;
}
}
private void saveToolStripMenuItem_Click_1(object sender, EventArgs e) {
if (prjFileName == "") {
saveAsToolStripMenuItem.PerformClick();
} else {
checkModifiedFrame();
saveProject(prjFileName);
}
}
private void btnClear_Click(object sender, EventArgs e) {
Array.Clear(f.data, 0, f.data.Length);
modified = true;
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<SaveBlock>(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) { private void MainForm_FormClosing(object sender, FormClosingEventArgs e) {
if (prjModified) { 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) { if (MessageBox.Show("The project is modified.\nAre you sure you want to quit?", "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) {

View File

@@ -117,6 +117,9 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>436, 17</value>
</metadata>
<metadata name="ilMiniatures.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="ilMiniatures.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Costura.Fody.6.0.0\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.6.0.0\build\Costura.Fody.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -12,6 +13,9 @@
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<IsWebBootstrapper>false</IsWebBootstrapper>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<PublishUrl>publish\</PublishUrl> <PublishUrl>publish\</PublishUrl>
<Install>true</Install> <Install>true</Install>
<InstallFrom>Disk</InstallFrom> <InstallFrom>Disk</InstallFrom>
@@ -23,9 +27,9 @@
<UpdateRequired>false</UpdateRequired> <UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions> <MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision> <ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion> <ApplicationVersion>1.7.0.0</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust> <UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled> <BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
@@ -40,19 +44,67 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType> <DebugType>embedded</DebugType>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<ApplicationIcon>icon_64.ico</ApplicationIcon> <ApplicationIcon>icon_64.ico</ApplicationIcon>
</PropertyGroup> </PropertyGroup>
<PropertyGroup>
<ManifestCertificateThumbprint>0A7368787FA9EE4B7327F4CB5CD09A2A4CBF3168</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<ManifestKeyFile>McBitFont_TemporaryKey.pfx</ManifestKeyFile>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>true</GenerateManifests>
</PropertyGroup>
<PropertyGroup>
<SignManifests>true</SignManifests>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Costura, Version=6.0.0.0, Culture=neutral, PublicKeyToken=9919ef960d84173d, processorArchitecture=MSIL">
<HintPath>..\packages\Costura.Fody.6.0.0\lib\netstandard2.0\Costura.dll</HintPath>
</Reference>
<Reference Include="MessagePack, Version=3.1.3.0, Culture=neutral, PublicKeyToken=b4a0369545f0a1be, processorArchitecture=MSIL">
<HintPath>..\packages\MessagePack.3.1.3\lib\net472\MessagePack.dll</HintPath>
</Reference>
<Reference Include="MessagePack.Annotations, Version=3.1.3.0, Culture=neutral, PublicKeyToken=b4a0369545f0a1be, processorArchitecture=MSIL">
<HintPath>..\packages\MessagePack.Annotations.3.1.3\lib\netstandard2.0\MessagePack.Annotations.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.NET.StringTools, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.NET.StringTools.17.11.4\lib\net472\Microsoft.NET.StringTools.dll</HintPath>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Collections.Immutable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Collections.Immutable.8.0.0\lib\net462\System.Collections.Immutable.dll</HintPath>
</Reference>
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
@@ -112,6 +164,8 @@
<DependentUpon>Resources.resx</DependentUpon> <DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
</Compile> </Compile>
<None Include="McBitFont_TemporaryKey.pfx" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings"> <None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator> <Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput> <LastGenOutput>Settings.Designer.cs</LastGenOutput>
@@ -195,7 +249,7 @@
<ItemGroup> <ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2"> <BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
<Visible>False</Visible> <Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 и x64%29</ProductName> <ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>
<Install>true</Install> <Install>true</Install>
</BootstrapperPackage> </BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
@@ -205,4 +259,16 @@
</BootstrapperPackage> </BootstrapperPackage>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\MessagePackAnalyzer.3.1.3\build\MessagePackAnalyzer.targets" Condition="Exists('..\packages\MessagePackAnalyzer.3.1.3\build\MessagePackAnalyzer.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>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}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\MessagePackAnalyzer.3.1.3\build\MessagePackAnalyzer.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MessagePackAnalyzer.3.1.3\build\MessagePackAnalyzer.targets'))" />
<Error Condition="!Exists('..\packages\Fody.6.8.2\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.8.2\build\Fody.targets'))" />
<Error Condition="!Exists('..\packages\Costura.Fody.6.0.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.6.0.0\build\Costura.Fody.props'))" />
<Error Condition="!Exists('..\packages\Costura.Fody.6.0.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.6.0.0\build\Costura.Fody.targets'))" />
</Target>
<Import Project="..\packages\Fody.6.8.2\build\Fody.targets" Condition="Exists('..\packages\Fody.6.8.2\build\Fody.targets')" />
<Import Project="..\packages\Costura.Fody.6.0.0\build\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.6.0.0\build\Costura.Fody.targets')" />
</Project> </Project>

View File

@@ -50,10 +50,11 @@
this.lblShiftX = new System.Windows.Forms.Label(); this.lblShiftX = new System.Windows.Forms.Label();
this.lblShiftY = new System.Windows.Forms.Label(); this.lblShiftY = new System.Windows.Forms.Label();
this.pnlFont = new System.Windows.Forms.Panel(); this.pnlFont = new System.Windows.Forms.Panel();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.nudChar2 = new System.Windows.Forms.NumericUpDown(); this.nudChar2 = new System.Windows.Forms.NumericUpDown();
this.nudChar1 = new System.Windows.Forms.NumericUpDown(); this.nudChar1 = new System.Windows.Forms.NumericUpDown();
this.label3 = new System.Windows.Forms.Label(); this.cbDigits = new System.Windows.Forms.CheckBox();
this.label4 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.nudNewX)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudNewX)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nudNewY)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudNewY)).BeginInit();
this.panel1.SuspendLayout(); this.panel1.SuspendLayout();
@@ -159,35 +160,37 @@
// cbNotPrintable // cbNotPrintable
// //
this.cbNotPrintable.AutoSize = true; this.cbNotPrintable.AutoSize = true;
this.cbNotPrintable.Location = new System.Drawing.Point(140, 54); this.cbNotPrintable.Location = new System.Drawing.Point(140, 77);
this.cbNotPrintable.Name = "cbNotPrintable"; this.cbNotPrintable.Name = "cbNotPrintable";
this.cbNotPrintable.Size = new System.Drawing.Size(116, 17); this.cbNotPrintable.Size = new System.Drawing.Size(116, 17);
this.cbNotPrintable.TabIndex = 7; this.cbNotPrintable.TabIndex = 7;
this.cbNotPrintable.Text = "0-31 (Not printable)"; this.cbNotPrintable.Text = "0-31 (Not printable)";
this.cbNotPrintable.UseVisualStyleBackColor = true; this.cbNotPrintable.UseVisualStyleBackColor = true;
this.cbNotPrintable.CheckedChanged += new System.EventHandler(this.checkboxChanged);
// //
// cbLatin // cbLatin
// //
this.cbLatin.AutoSize = true; this.cbLatin.AutoSize = true;
this.cbLatin.Checked = true; this.cbLatin.Checked = true;
this.cbLatin.CheckState = System.Windows.Forms.CheckState.Checked; this.cbLatin.CheckState = System.Windows.Forms.CheckState.Checked;
this.cbLatin.Location = new System.Drawing.Point(140, 77); this.cbLatin.Location = new System.Drawing.Point(140, 100);
this.cbLatin.Name = "cbLatin"; this.cbLatin.Name = "cbLatin";
this.cbLatin.Size = new System.Drawing.Size(91, 17); this.cbLatin.Size = new System.Drawing.Size(91, 17);
this.cbLatin.TabIndex = 8; this.cbLatin.TabIndex = 8;
this.cbLatin.Text = "32-127 (Latin)"; this.cbLatin.Text = "32-127 (Latin)";
this.cbLatin.UseVisualStyleBackColor = true; this.cbLatin.UseVisualStyleBackColor = true;
this.cbLatin.CheckedChanged += new System.EventHandler(this.checkboxChanged);
// //
// cbExtended // cbExtended
// //
this.cbExtended.AutoSize = true; this.cbExtended.AutoSize = true;
this.cbExtended.Location = new System.Drawing.Point(140, 100); this.cbExtended.Location = new System.Drawing.Point(140, 123);
this.cbExtended.Name = "cbExtended"; this.cbExtended.Name = "cbExtended";
this.cbExtended.Size = new System.Drawing.Size(119, 17); this.cbExtended.Size = new System.Drawing.Size(119, 17);
this.cbExtended.TabIndex = 9; this.cbExtended.TabIndex = 9;
this.cbExtended.Text = "128-255 (Extended)"; this.cbExtended.Text = "128-255 (Extended)";
this.cbExtended.UseVisualStyleBackColor = true; this.cbExtended.UseVisualStyleBackColor = true;
this.cbExtended.CheckedChanged += new System.EventHandler(this.cbExtended_CheckedChanged); this.cbExtended.CheckedChanged += new System.EventHandler(this.checkboxChanged);
// //
// btnOK // btnOK
// //
@@ -221,7 +224,7 @@
this.cbSingle.TabIndex = 12; this.cbSingle.TabIndex = 12;
this.cbSingle.Text = "Single frame"; this.cbSingle.Text = "Single frame";
this.cbSingle.UseVisualStyleBackColor = true; this.cbSingle.UseVisualStyleBackColor = true;
this.cbSingle.CheckedChanged += new System.EventHandler(this.cbSingle_CheckedChanged); this.cbSingle.CheckedChanged += new System.EventHandler(this.checkboxChanged);
// //
// toolTip1 // toolTip1
// //
@@ -235,7 +238,7 @@
this.cbEncoding.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cbEncoding.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbEncoding.Enabled = false; this.cbEncoding.Enabled = false;
this.cbEncoding.FormattingEnabled = true; this.cbEncoding.FormattingEnabled = true;
this.cbEncoding.Location = new System.Drawing.Point(140, 123); this.cbEncoding.Location = new System.Drawing.Point(140, 146);
this.cbEncoding.Name = "cbEncoding"; this.cbEncoding.Name = "cbEncoding";
this.cbEncoding.Size = new System.Drawing.Size(121, 21); this.cbEncoding.Size = new System.Drawing.Size(121, 21);
this.cbEncoding.TabIndex = 13; this.cbEncoding.TabIndex = 13;
@@ -294,7 +297,7 @@
this.cbFontBased.TabIndex = 16; this.cbFontBased.TabIndex = 16;
this.cbFontBased.Text = "Based on a font"; this.cbFontBased.Text = "Based on a font";
this.cbFontBased.UseVisualStyleBackColor = true; this.cbFontBased.UseVisualStyleBackColor = true;
this.cbFontBased.CheckedChanged += new System.EventHandler(this.cbFontBased_CheckedChanged); this.cbFontBased.CheckedChanged += new System.EventHandler(this.checkboxChanged);
// //
// lblFont // lblFont
// //
@@ -371,6 +374,26 @@
this.pnlFont.TabIndex = 22; this.pnlFont.TabIndex = 22;
this.pnlFont.Visible = false; this.pnlFont.Visible = false;
// //
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(112, 152);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(45, 13);
this.label4.TabIndex = 25;
this.label4.Text = "Sample:";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(14, 152);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(45, 13);
this.label3.TabIndex = 24;
this.label3.Text = "Sample:";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// nudChar2 // nudChar2
// //
this.nudChar2.Location = new System.Drawing.Point(161, 149); this.nudChar2.Location = new System.Drawing.Point(161, 149);
@@ -407,25 +430,16 @@
0}); 0});
this.nudChar1.ValueChanged += new System.EventHandler(this.nudNewX_ValueChanged); this.nudChar1.ValueChanged += new System.EventHandler(this.nudNewX_ValueChanged);
// //
// label3 // cbDigits
// //
this.label3.AutoSize = true; this.cbDigits.AutoSize = true;
this.label3.Location = new System.Drawing.Point(14, 152); this.cbDigits.Location = new System.Drawing.Point(140, 54);
this.label3.Name = "label3"; this.cbDigits.Name = "cbDigits";
this.label3.Size = new System.Drawing.Size(45, 13); this.cbDigits.Size = new System.Drawing.Size(74, 17);
this.label3.TabIndex = 24; this.cbDigits.TabIndex = 23;
this.label3.Text = "Sample:"; this.cbDigits.Text = "Digits only";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; this.cbDigits.UseVisualStyleBackColor = true;
// this.cbDigits.CheckedChanged += new System.EventHandler(this.checkboxChanged);
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(112, 152);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(45, 13);
this.label4.TabIndex = 25;
this.label4.Text = "Sample:";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
// //
// New // New
// //
@@ -433,6 +447,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.CancelButton = this.btnCancel; this.CancelButton = this.btnCancel;
this.ClientSize = new System.Drawing.Size(484, 211); this.ClientSize = new System.Drawing.Size(484, 211);
this.Controls.Add(this.cbDigits);
this.Controls.Add(this.pnlFont); this.Controls.Add(this.pnlFont);
this.Controls.Add(this.cbFontBased); this.Controls.Add(this.cbFontBased);
this.Controls.Add(this.cbEncoding); this.Controls.Add(this.cbEncoding);
@@ -506,5 +521,6 @@
private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label3;
public System.Windows.Forms.NumericUpDown nudChar2; public System.Windows.Forms.NumericUpDown nudChar2;
public System.Windows.Forms.NumericUpDown nudChar1; public System.Windows.Forms.NumericUpDown nudChar1;
public System.Windows.Forms.CheckBox cbDigits;
} }
} }

View File

@@ -36,25 +36,13 @@ namespace McBitFont {
this.Width = 300; this.Height = 250; this.Width = 300; this.Height = 250;
} }
private void cbSingle_CheckedChanged(object sender, EventArgs e) {
bool c = !cbSingle.Checked;
bool f = cbFontBased.Checked;
cbNotPrintable.Enabled = c;
cbLatin.Enabled = c;
cbExtended.Enabled = c;
cbFontBased.Enabled = c;
rbMono.Enabled = c;
rbVar.Enabled = c;
pnlFont.Visible = c && f;
this.Width = c && f ? 500 : 300;
}
private void New_Load(object sender, EventArgs e) { private void New_Load(object sender, EventArgs e) {
toolTip1.SetToolTip(nudNewX, "Frame Width;\nCharacter width;\nDefault character width for Variable width fonts"); toolTip1.SetToolTip(nudNewX, "Frame Width;\nCharacter width;\nDefault character width for Variable width fonts");
toolTip1.SetToolTip(nudNewY, "Frame Height;\nCharacter height"); toolTip1.SetToolTip(nudNewY, "Frame Height;\nCharacter height");
toolTip1.SetToolTip(rbMono, "Monospaced font"); toolTip1.SetToolTip(rbMono, "Monospaced font");
toolTip1.SetToolTip(rbVar, "Variable width font"); toolTip1.SetToolTip(rbVar, "Variable width font");
toolTip1.SetToolTip(cbSingle, "Create one single frame"); toolTip1.SetToolTip(cbSingle, "Create one single frame");
toolTip1.SetToolTip(cbDigits, "Only digits characters with codes 48 - 57");
toolTip1.SetToolTip(cbNotPrintable, "Add not printable characters with codes 0 - 31"); toolTip1.SetToolTip(cbNotPrintable, "Add not printable characters with codes 0 - 31");
toolTip1.SetToolTip(cbLatin, "Add Latin characters with codes 32 - 127"); toolTip1.SetToolTip(cbLatin, "Add Latin characters with codes 32 - 127");
toolTip1.SetToolTip(cbExtended, "Add Extended characters with codes 128 - 255"); toolTip1.SetToolTip(cbExtended, "Add Extended characters with codes 128 - 255");
@@ -157,17 +145,6 @@ namespace McBitFont {
nud.Select(0, nud.Text.Length); nud.Select(0, nud.Text.Length);
} }
private void cbExtended_CheckedChanged(object sender, EventArgs e) {
cbEncoding.Enabled = cbExtended.Checked;
}
private void cbFontBased_CheckedChanged(object sender, EventArgs e) {
bool c = !cbSingle.Checked;
bool f = cbFontBased.Checked;
pnlFont.Visible = c && f;
this.Width = c && f ? 500 : 300;
}
private void btnFont_Click(object sender, EventArgs e) { private void btnFont_Click(object sender, EventArgs e) {
if (dlgFont.ShowDialog() == DialogResult.OK) { if (dlgFont.ShowDialog() == DialogResult.OK) {
lblFont.Text = dlgFont.Font.Name + " " + dlgFont.Font.Size.ToString(); lblFont.Text = dlgFont.Font.Name + " " + dlgFont.Font.Size.ToString();
@@ -178,5 +155,28 @@ namespace McBitFont {
private void nudNewX_ValueChanged(object sender, EventArgs e) { private void nudNewX_ValueChanged(object sender, EventArgs e) {
updateChars(); updateChars();
} }
private void checkboxChanged(object sender, EventArgs e) {
if (!(sender as CheckBox).Focused) return;
bool c = !cbSingle.Checked;
bool d = !cbDigits.Checked;
bool p = cbNotPrintable.Checked;
bool x = cbExtended.Checked;
bool f = cbFontBased.Checked;
cbDigits.Enabled = c;
cbNotPrintable.Enabled = c && d;
cbLatin.Enabled = c && d;
cbExtended.Enabled = c && d;
cbFontBased.Enabled = c;
cbEncoding.Enabled = c && d && x;
rbMono.Enabled = c;
rbVar.Enabled = c;
pnlFont.Visible = c && f;
if (p && x) cbLatin.Checked = true;
this.Width = c && f ? 500 : 300;
btnOK.Enabled = !c || !d || x || p || cbLatin.Checked;
}
} }
} }

View File

@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// Можно задать все значения или принять номера сборки и редакции по умолчанию // Можно задать все значения или принять номера сборки и редакции по умолчанию
// используя "*", как показано ниже: // используя "*", как показано ниже:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.3.0.0")] [assembly: AssemblyVersion("1.7.0.0")]
[assembly: AssemblyFileVersion("1.3.0.0")] [assembly: AssemblyFileVersion("1.7.0.0")]

16
McBitFont/packages.config Normal file
View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Costura.Fody" version="6.0.0" targetFramework="net472" developmentDependency="true" />
<package id="Fody" version="6.8.2" targetFramework="net472" developmentDependency="true" />
<package id="MessagePack" version="3.1.3" targetFramework="net472" />
<package id="MessagePack.Annotations" version="3.1.3" targetFramework="net472" />
<package id="MessagePackAnalyzer" version="3.1.3" targetFramework="net472" developmentDependency="true" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" targetFramework="net472" />
<package id="Microsoft.NET.StringTools" version="17.11.4" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.Collections.Immutable" version="8.0.0" targetFramework="net472" />
<package id="System.Memory" version="4.5.5" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
</packages>

View File

@@ -15,9 +15,8 @@ Some basic hints on the interface:
- Mouse 2 to mark a puxel white - Mouse 2 to mark a puxel white
- Drag the mouse holding a button to draw pixels - Drag the mouse holding a button to draw pixels
- Mouse Scroll to scroll up and down - Mouse Scroll to scroll up and down
- Crtl + scroll to scroll left and right - Crtl + scroll to zoom
- Shift + scroll to zoom - Shift + scroll to scroll left and right
Download in the Releases section! Download in the Releases section!

15
TODO.txt Normal file
View File

@@ -0,0 +1,15 @@
Application:
Functionality:
- Context menu in symbol navigator
- 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
- Undo/Redo
- Image import from a file
- Import from a text array
- Rectangle selection to mass-paint, shift and mirror pixels
- "Packed" fonts export
Bugs:

BIN
examples/Font_5x7.mbf Normal file

Binary file not shown.

BIN
examples/Numbers_11x16.mbf Normal file

Binary file not shown.

BIN
examples/Numbers_13x20.mbf Normal file

Binary file not shown.

Binary file not shown.

BIN
examples/helvB08_PREFAB.mbf Normal file

Binary file not shown.

Binary file not shown.