53 Commits
v1.4 ... v2.0

Author SHA1 Message Date
57d4ecfd54 Merge branch 'dev-migrate' (v2.0):
Changes list:

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
V Change Menu icons
V Re-arranged menu items
V Option to display codes in Hex numbers
V Make symbol list wider to display 8 characters instead of 7

Functionality:
V Fill canvas button
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)
V Ability to make monospaced font a variable width one
V Undo/Redo for canvas changes
V Image import from a file
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

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
2025-05-27 03:09:54 +03:00
912b15ff3f Little fixes (set baseline UI) 2025-05-27 03:02:09 +03:00
c892e3076d TODO feature: Import from a text array; Little Export fix 2025-05-27 02:44:42 +03:00
295b079dab WIP: text import 2025-05-26 03:12:03 +03:00
d508f0ab35 UI changes... icons etc 2025-05-25 23:37:30 +03:00
68c2e10ab5 WIP: hzzzzzzz.... 2025-05-25 22:48:38 +03:00
d7dfcd3931 UI tidy-ups; Little fixes; New Main window screenshot 2025-05-24 09:42:14 +03:00
b1986c0f28 TODO feature: Rectangle selection to mass-paint, shift and mirror pixels etc... 2025-05-24 08:31:05 +03:00
1034bd98d6 Fill canvas button and several small UI changes/fixes 2025-05-24 00:04:26 +03:00
Anton Mukhin
c1a8d30760 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
2025-05-23 18:48:28 +03:00
Anton Mukhin
ab77f9de21 Little UI fixes 2025-05-23 17:13:32 +03:00
Anton Mukhin
a5e3c8812f README.md update 2025-05-23 16:53:34 +03:00
Anton Mukhin
1bf2de8b43 README.md update 2025-05-23 16:43:56 +03:00
Anton Mukhin
6e48acc3bf Screenshots and README.md updates 2025-05-23 16:41:58 +03:00
Anton Mukhin
6c97aa32d1 Little Form designes changes 2025-05-23 16:41:38 +03:00
Anton Mukhin
a287ddaee7 Bugs fixed:
- Improper bytes count for 16 or 32 bit numbers export
- Exception on Code Shift when nothing is selected in Symbols List
2025-05-23 16:40:44 +03:00
Anton Mukhin
0f2da5542c TODO feature: Image import from a file 2025-05-22 20:32:15 +03:00
Anton Mukhin
ce21792088 TODO feature: Context menu in symbol navigator 2025-05-22 10:30:36 +03:00
8c08c9a897 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)
2025-05-22 06:33:10 +03:00
ca8b53ba74 TODO feature: Spinning cursor when application is busy; small history fix 2025-05-22 01:31:16 +03:00
038fd42841 TODO feature: Undo/Redo for canvas changes 2025-05-22 01:10:38 +03:00
Anton Mukhin
ce3b0ddd94 WIP: Undo/Redo 2025-05-21 18:20:39 +03:00
Anton Mukhin
e76778d8fb TODO feature: Ability to make monospaced font a variable width one 2025-05-21 14:05:34 +03:00
Anton Mukhin
19c12754ef TODO feature: Better quality pictures in symbol list 2025-05-21 12:38:27 +03:00
Anton Mukhin
f33b107fdb haxrcorp font updated in examples 2025-05-21 12:17:16 +03:00
Anton Mukhin
4d39b3586e TODO features:
V "Packed" fonts export
V "Bytes total comment in export
2025-05-21 12:16:44 +03:00
Anton Mukhin
5e55c0a5ea WIP: Packed fonts... 2025-05-20 17:08:42 +03:00
Anton Mukhin
ca42d3819f TODO feature: Delete symbols before/after selected 2025-05-20 14:05:42 +03:00
Anton Mukhin
bbfccc2308 Example files: saved in new format. Moved old format ones to a sub-folder 2025-05-20 14:05:18 +03:00
Anton Mukhin
ea3de134d2 Migrated to .NET 9 (with some functionality broken) 2025-05-20 09:12:34 +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
139 changed files with 4857 additions and 1649 deletions

2
.gitignore vendored
View File

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

View File

@@ -24,103 +24,112 @@
/// </summary>
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();
((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, 210);
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, 118);
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, 155);
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, 194);
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;
//
// 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, 236);
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 McBitFont";
Load += About_Load;
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
ResumeLayout(false);
PerformLayout();
}

View File

@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
@@ -26,36 +26,36 @@
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->

View File

@@ -1,6 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</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>

View File

@@ -0,0 +1,85 @@
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<bool[,]> stack;
public int Depth { get; set; }
public int Index { get; set; }
public int Count {
get { return stack.Count - 1; }
}
public int Redos {
get {
var r = Count - Index - 1;
return r < 0 ? 0 : r;
}
}
public int Undos {
get {
return Index + 1;
}
}
public CanvasHistory(int depth = 50) {
Depth = depth;
Index = -1;
stack = [];
}
public void Clear() {
stack.Clear();
Index = -1;
}
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);
}
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() {
while (Count > Depth) stack.RemoveAt(0);
Index = Count - 1;
}
public void Remove(bool useIndex = true) {
stack.RemoveAt(Count - 1);
if (useIndex) Index--;
}
public void Undo(MainForm.FrameMiniature f) {
if (Index < 0) return;
var d = stack.ElementAt(Index);
Array.Copy(d, f.data, d.Length);
Index--;
}
public void Redo(MainForm.FrameMiniature f) {
if (Index >= Count - 1) return;
Index++;
var d = stack.ElementAt(Index + 1);
Array.Copy(d, f.data, d.Length);
}
}
}

187
McBitFont/CodeShift.Designer.cs generated Normal file
View File

@@ -0,0 +1,187 @@
namespace McBitFont {
partial class CodeShift {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if (disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
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();
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();
toolTip1 = new System.Windows.Forms.ToolTip(components);
((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)";
toolTip1.SetToolTip(rbShiftLeft, "Shift all symbols left on the code sequence decreasing codes");
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)";
toolTip1.SetToolTip(rbShiftRight, "Shift all symbols right on the code sequence increasing codes");
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";
toolTip1.SetToolTip(rbSpecify, "Specify the code for the first symbol in sequence");
rbSpecify.UseVisualStyleBackColor = true;
rbSpecify.CheckedChanged += ModeChanged;
//
// lblValue
//
lblValue.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right;
lblValue.Location = new System.Drawing.Point(156, 8);
lblValue.Name = "lblValue";
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(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";
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(183, 53);
lblRange.Name = "lblRange";
lblRange.Size = new System.Drawing.Size(62, 31);
lblRange.TabIndex = 9;
lblRange.Text = "min: 222\r\nmax: 222";
//
// toolTip1
//
toolTip1.AutoPopDelay = 10000;
toolTip1.InitialDelay = 500;
toolTip1.ReshowDelay = 100;
//
// 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;
private System.Windows.Forms.ToolTip toolTip1;
}
}

99
McBitFont/CodeShift.cs Normal file
View File

@@ -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;
}
}
}

123
McBitFont/CodeShift.resx Normal file
View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</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>
</root>

View File

@@ -23,320 +23,337 @@
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
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.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.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.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.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
//
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);
}
@@ -362,5 +379,7 @@
private System.Windows.Forms.Button btnGenerate;
private System.Windows.Forms.Button btnClose;
private System.Windows.Forms.CheckBox cbZeroes;
private System.Windows.Forms.ToolTip toolTip1;
private System.Windows.Forms.CheckBox cbPacked;
}
}

View File

@@ -33,25 +33,26 @@ 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"
);
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" +
"// width; // Font width in pixels\n" +
"// 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" +
"// first; // First character code\n" +
@@ -76,9 +77,11 @@ 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;
bool packed = cbPacked.Checked;
int lines = cbLines.SelectedIndex;
int format = cbFormat.SelectedIndex;
bool mono = mainForm.monospaced;
@@ -88,8 +91,8 @@ namespace McBitFont {
int imin, jmin, imax, jmax, idir, jdir;
if (com) {
//Header comments
output += comments["header"];
// Header comments
//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";
@@ -107,7 +110,7 @@ namespace McBitFont {
}
}
//Figure out mins and maxes
// Figure out mins and maxes
if (cbOrder.SelectedIndex == 0) {
if (cbHDir.SelectedIndex == 0) {
// Columns; Left to right
@@ -156,7 +159,7 @@ namespace McBitFont {
}
}
// C data type selection
ushort bits = 8;
string dataType = "uint8_t";
switch (cbNumSize.SelectedIndex) {
@@ -197,30 +200,32 @@ 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?
if (hdr) {
output +=
" // Meta header\n" +
" " + (mono ? mainForm.frames.First().width.ToString() : "0") + ", // Font width in pixels; 0 - variable width\n" +
" " + (packed ? "1" : "0") + ", // Is it a packed font?\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" +
" " + mainForm.frames.Last().code.ToString() + ", // Last character code\n"
;
bTotal += 6*bits / 8; // Count bytes total
}
// 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
@@ -241,6 +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 += bits / 8; // Count bytes total
// Count posted numbers
numcount++;
if (lines != 2) numcount = 0;
@@ -289,6 +295,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 +303,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 +326,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?
@@ -325,6 +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 += bits / 8; // Count bytes total
// count posted numbers
numcount++;
@@ -337,12 +350,23 @@ 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) % bits > 0) {
// 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 += bits / 8; // Count bytes total
// count posted numbers
numcount++;
}
if (lines == 1) {
// "1 symbol per line" - closing line
if (!f.Equals(flast)) output += ",";
if (!f.Equals(flast) && f.width > 0) output += ",";
if (com && fcount > 1) {
//...with a comment
output += " // " + f.code.ToString() + " --> " + mainForm.decodeSymbol(f.code);
@@ -359,6 +383,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();
@@ -382,6 +412,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;
@@ -390,5 +424,9 @@ namespace McBitFont {
lblXLines.Enabled = false;
}
}
private void cbPacked_CheckedChanged(object sender, EventArgs e) {
if (cbPacked.Checked && cbLines.SelectedIndex == 0) cbLines.SelectedIndex = 1;
}
}
}

View File

@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
@@ -26,36 +26,36 @@
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
@@ -117,4 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</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>
</root>

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
@@ -26,36 +26,36 @@
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
@@ -117,6 +117,12 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</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="cmMinilist.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>534, 17</value>
</metadata>
<metadata name="ilMiniatures.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>

423
McBitFont/ImageImporter.Designer.cs generated Normal file
View File

@@ -0,0 +1,423 @@
namespace McBitFont {
partial class ImageImporter {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if (disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
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;
toolTip1.SetToolTip(btnLoadImage, "Load image from a file");
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;
toolTip1.SetToolTip(btnConvert, "Convert image to pixelated black and white");
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;
toolTip1.SetToolTip(tbPixelization, "Pixelization level. Higher value makes bigger pixels during conversion");
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;
toolTip1.SetToolTip(tbThreshold, "Black / White conversion threshold");
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;
toolTip1.SetToolTip(btnResize, "Resize converted image to fit the current frame");
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(438, 323);
lblTransparency.Name = "lblTransparency";
lblTransparency.Size = new System.Drawing.Size(184, 15);
lblTransparency.TabIndex = 22;
lblTransparency.Text = "Transparency 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;
}
}

235
McBitFont/ImageImporter.cs Normal file
View File

@@ -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<Color> 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 = "Transparency 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);
}
}
}

View File

@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>147, 17</value>
</metadata>
<metadata name="dlgLoadImage.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>147, 17</value>
</metadata>
</root>

View File

@@ -1,17 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{7C01529E-4414-405F-9B57-19FA4AF8ED60}</ProjectGuid>
<TargetFramework>net9.0-windows</TargetFramework>
<OutputType>WinExe</OutputType>
<RootNamespace>McBitFont</RootNamespace>
<AssemblyName>McBitFont</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
@@ -27,170 +17,34 @@
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<UseWindowsForms>true</UseWindowsForms>
<ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
<ApplicationIcon>icon_64.ico</ApplicationIcon>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<FileVersion>2.0.0.0</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugType>portable</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebugType>portable</DebugType>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="About.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="About.Designer.cs">
<DependentUpon>About.cs</DependentUpon>
</Compile>
<Compile Include="Export.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Export.Designer.cs">
<DependentUpon>Export.cs</DependentUpon>
</Compile>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="New.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="New.Designer.cs">
<DependentUpon>New.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="About.resx">
<DependentUpon>About.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Export.resx">
<DependentUpon>Export.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="New.resx">
<DependentUpon>New.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\action_add.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\action_remove.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\arrow_back.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\arrow_down.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\arrow_next.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\arrow_top.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\file.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\folder_open.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\save.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\action_check.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Famfamfam-Silk-Shape-flip-vertical.16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Famfamfam-Silk-Shape-flip-horizontal.16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Famfamfam-Silk-Page-paste.16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Famfamfam-Silk-Page-copy.16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Famfamfam-Silk-Door-out.16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Famfamfam-Silk-Disk.16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Famfamfam-Silk-Page-white.16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Famfamfam-Silk-Folder-page.16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Famfamfam-Silk-Folder.16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Ionic-Ionicons-Invert-mode-outline.16.png" />
</ItemGroup>
<ItemGroup>
<Content Include="icon.ico" />
<Content Include="icon_64.ico" />
<None Include="Resources\icon_64.png" />
<None Include="Resources\icon_32.png" />
<None Include="Resources\icon.png" />
<PackageReference Include="Costura.Fody" Version="6.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="MessagePack" Version="3.1.3" />
<PackageReference Include="MessagePack.Annotations" Version="3.1.3" />
<PackageReference Include="MessagePackAnalyzer" Version="3.1.3" />
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.5" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Microsoft.NET.StringTools" Version="17.11.4" />
<PackageReference Include="System.Collections.Immutable" Version="9.0.5" />
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.1.2" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="9.0.5" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
@@ -204,5 +58,28 @@
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Update="Properties\Settings.Designer.cs">
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Update="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
</ItemGroup>
</Project>

View File

@@ -50,10 +50,11 @@
this.lblShiftX = new System.Windows.Forms.Label();
this.lblShiftY = new System.Windows.Forms.Label();
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.nudChar1 = new System.Windows.Forms.NumericUpDown();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.cbDigits = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.nudNewX)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nudNewY)).BeginInit();
this.panel1.SuspendLayout();
@@ -159,35 +160,37 @@
// cbNotPrintable
//
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.Size = new System.Drawing.Size(116, 17);
this.cbNotPrintable.TabIndex = 7;
this.cbNotPrintable.Text = "0-31 (Not printable)";
this.cbNotPrintable.UseVisualStyleBackColor = true;
this.cbNotPrintable.CheckedChanged += new System.EventHandler(this.checkboxChanged);
//
// cbLatin
//
this.cbLatin.AutoSize = true;
this.cbLatin.Checked = true;
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.Size = new System.Drawing.Size(91, 17);
this.cbLatin.TabIndex = 8;
this.cbLatin.Text = "32-127 (Latin)";
this.cbLatin.UseVisualStyleBackColor = true;
this.cbLatin.CheckedChanged += new System.EventHandler(this.checkboxChanged);
//
// cbExtended
//
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.Size = new System.Drawing.Size(119, 17);
this.cbExtended.TabIndex = 9;
this.cbExtended.Text = "128-255 (Extended)";
this.cbExtended.UseVisualStyleBackColor = true;
this.cbExtended.CheckedChanged += new System.EventHandler(this.cbExtended_CheckedChanged);
this.cbExtended.CheckedChanged += new System.EventHandler(this.checkboxChanged);
//
// btnOK
//
@@ -221,7 +224,7 @@
this.cbSingle.TabIndex = 12;
this.cbSingle.Text = "Single frame";
this.cbSingle.UseVisualStyleBackColor = true;
this.cbSingle.CheckedChanged += new System.EventHandler(this.cbSingle_CheckedChanged);
this.cbSingle.CheckedChanged += new System.EventHandler(this.checkboxChanged);
//
// toolTip1
//
@@ -235,7 +238,7 @@
this.cbEncoding.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbEncoding.Enabled = false;
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.Size = new System.Drawing.Size(121, 21);
this.cbEncoding.TabIndex = 13;
@@ -294,7 +297,7 @@
this.cbFontBased.TabIndex = 16;
this.cbFontBased.Text = "Based on a font";
this.cbFontBased.UseVisualStyleBackColor = true;
this.cbFontBased.CheckedChanged += new System.EventHandler(this.cbFontBased_CheckedChanged);
this.cbFontBased.CheckedChanged += new System.EventHandler(this.checkboxChanged);
//
// lblFont
//
@@ -371,6 +374,26 @@
this.pnlFont.TabIndex = 22;
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
//
this.nudChar2.Location = new System.Drawing.Point(161, 149);
@@ -407,25 +430,16 @@
0});
this.nudChar1.ValueChanged += new System.EventHandler(this.nudNewX_ValueChanged);
//
// label3
// cbDigits
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(14, 152);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(45, 13);
this.label3.TabIndex = 24;
this.label3.Text = "Sample:";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(112, 152);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(45, 13);
this.label4.TabIndex = 25;
this.label4.Text = "Sample:";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.cbDigits.AutoSize = true;
this.cbDigits.Location = new System.Drawing.Point(140, 54);
this.cbDigits.Name = "cbDigits";
this.cbDigits.Size = new System.Drawing.Size(74, 17);
this.cbDigits.TabIndex = 23;
this.cbDigits.Text = "Digits only";
this.cbDigits.UseVisualStyleBackColor = true;
this.cbDigits.CheckedChanged += new System.EventHandler(this.checkboxChanged);
//
// New
//
@@ -433,6 +447,7 @@
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.CancelButton = this.btnCancel;
this.ClientSize = new System.Drawing.Size(484, 211);
this.Controls.Add(this.cbDigits);
this.Controls.Add(this.pnlFont);
this.Controls.Add(this.cbFontBased);
this.Controls.Add(this.cbEncoding);
@@ -506,5 +521,6 @@
private System.Windows.Forms.Label label3;
public System.Windows.Forms.NumericUpDown nudChar2;
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;
}
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) {
toolTip1.SetToolTip(nudNewX, "Frame Width;\nCharacter width;\nDefault character width for Variable width fonts");
toolTip1.SetToolTip(nudNewY, "Frame Height;\nCharacter height");
toolTip1.SetToolTip(rbMono, "Monospaced font");
toolTip1.SetToolTip(rbVar, "Variable width font");
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(cbLatin, "Add Latin characters with codes 32 - 127");
toolTip1.SetToolTip(cbExtended, "Add Extended characters with codes 128 - 255");
@@ -157,17 +145,6 @@ namespace McBitFont {
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) {
if (dlgFont.ShowDialog() == DialogResult.OK) {
lblFont.Text = dlgFont.Font.Name + " " + dlgFont.Font.Size.ToString();
@@ -178,5 +155,28 @@ namespace McBitFont {
private void nudNewX_ValueChanged(object sender, EventArgs e) {
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

@@ -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.4.0.0")]
[assembly: AssemblyFileVersion("1.4.0.0")]

View File

@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия: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.
// </auto-generated>
//------------------------------------------------------------------------------
@@ -13,12 +13,12 @@ namespace McBitFont.Properties {
/// <summary>
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// Этот класс создан автоматически классом 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 {
}
/// <summary>
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
@@ -47,8 +47,8 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
@@ -61,77 +61,107 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap action_add {
internal static System.Drawing.Bitmap add {
get {
object obj = ResourceManager.GetObject("action_add", resourceCulture);
object obj = ResourceManager.GetObject("add", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap action_check {
internal static System.Drawing.Bitmap arrow_inout {
get {
object obj = ResourceManager.GetObject("action_check", resourceCulture);
object obj = ResourceManager.GetObject("arrow_inout", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap action_remove {
internal static System.Drawing.Bitmap arrow_redo {
get {
object obj = ResourceManager.GetObject("action_remove", resourceCulture);
object obj = ResourceManager.GetObject("arrow_redo", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap arrow_back {
internal static System.Drawing.Bitmap arrow_undo {
get {
object obj = ResourceManager.GetObject("arrow_back", resourceCulture);
object obj = ResourceManager.GetObject("arrow_undo", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap arrow_down {
internal static System.Drawing.Bitmap calculator {
get {
object obj = ResourceManager.GetObject("arrow_down", resourceCulture);
object obj = ResourceManager.GetObject("calculator", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap arrow_next {
internal static System.Drawing.Bitmap Canvas_Clear {
get {
object obj = ResourceManager.GetObject("arrow_next", resourceCulture);
object obj = ResourceManager.GetObject("Canvas_Clear", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap arrow_top {
internal static System.Drawing.Bitmap Canvas_Fill {
get {
object obj = ResourceManager.GetObject("arrow_top", resourceCulture);
object obj = ResourceManager.GetObject("Canvas_Fill", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap delete {
get {
object obj = ResourceManager.GetObject("delete", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap fam_base {
get {
object obj = ResourceManager.GetObject("fam_base", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap fam_rectt {
get {
object obj = ResourceManager.GetObject("fam_rectt", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Famfamfam_Silk_Disk_16 {
get {
@@ -141,7 +171,7 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Famfamfam_Silk_Door_out_16 {
get {
@@ -151,27 +181,7 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Famfamfam_Silk_Folder_16 {
get {
object obj = ResourceManager.GetObject("Famfamfam-Silk-Folder.16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// </summary>
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));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Famfamfam_Silk_Page_copy_16 {
get {
@@ -181,7 +191,7 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Famfamfam_Silk_Page_paste_16 {
get {
@@ -191,7 +201,7 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Famfamfam_Silk_Page_white_16 {
get {
@@ -201,7 +211,7 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Famfamfam_Silk_Shape_flip_horizontal_16 {
get {
@@ -211,7 +221,7 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Famfamfam_Silk_Shape_flip_vertical_16 {
get {
@@ -221,7 +231,7 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap file {
get {
@@ -231,7 +241,7 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap folder_open {
get {
@@ -241,7 +251,17 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap folder_table {
get {
object obj = ResourceManager.GetObject("folder_table", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icon {
get {
@@ -251,7 +271,7 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icon_32 {
get {
@@ -261,7 +281,7 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icon_64 {
get {
@@ -271,21 +291,131 @@ namespace McBitFont.Properties {
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Ionic_Ionicons_Invert_mode_outline_16 {
internal static System.Drawing.Bitmap z_align_center {
get {
object obj = ResourceManager.GetObject("Ionic-Ionicons-Invert-mode-outline.16", resourceCulture);
object obj = ResourceManager.GetObject("z_align_center", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap save {
internal static System.Drawing.Bitmap z_asterisk {
get {
object obj = ResourceManager.GetObject("save", resourceCulture);
object obj = ResourceManager.GetObject("z_asterisk", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap z_contrast {
get {
object obj = ResourceManager.GetObject("z_contrast", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap z_down {
get {
object obj = ResourceManager.GetObject("z_down", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap z_export {
get {
object obj = ResourceManager.GetObject("z_export", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap z_folder_image {
get {
object obj = ResourceManager.GetObject("z_folder_image", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap z_left {
get {
object obj = ResourceManager.GetObject("z_left", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap z_redo {
get {
object obj = ResourceManager.GetObject("z_redo", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap z_right {
get {
object obj = ResourceManager.GetObject("z_right", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap z_shading {
get {
object obj = ResourceManager.GetObject("z_shading", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap z_tick {
get {
object obj = ResourceManager.GetObject("z_tick", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap z_undo {
get {
object obj = ResourceManager.GetObject("z_undo", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap z_uo {
get {
object obj = ResourceManager.GetObject("z_uo", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}

View File

@@ -118,73 +118,112 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Ionic-Ionicons-Invert-mode-outline.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Ionic-Ionicons-Invert-mode-outline.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="z_left" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow_left.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="arrow_next" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow_next.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="z_export" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\package_go.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Page-copy.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Page-copy.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Disk.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Disk.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="arrow_back" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow_back.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="action_check" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\action_check.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Page-white.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Page-white.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="save" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\save.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Door-out.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Door-out.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Folder-page.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Folder-page.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Folder.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Folder.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="action_add" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\action_add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="folder_open" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\folder_open.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="z_contrast" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\contrast.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Page-paste.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Page-paste.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="action_remove" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\action_remove.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="folder_open" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\folder_open.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Page-copy.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Page-copy.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="arrow_inout" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow_inout.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="arrow_redo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\redo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="z_right" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow_right.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="calculator" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\calculator.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="z_asterisk" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\asterisk_orange.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="z_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\..\icons\famfamfam\arrow_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Canvas_Clear" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Canvas_Clear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="z_uo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow_up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Door-out.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Door-out.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="file" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\file.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Shape-flip-vertical.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Shape-flip-vertical.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="z_align_center" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\shape_align_center.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Shape-flip-horizontal.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Shape-flip-horizontal.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="z_shading" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\shading.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="arrow_top" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow_top.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="arrow_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="add" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="z_undo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow_undo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="z_tick" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\tick.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="delete" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="z_redo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow_redo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="fam_base" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\fam_base.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="fam_rectt" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\fam_rectt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Page-white.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Page-white.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Disk.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Disk.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Canvas_Fill" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Canvas_Fill.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Shape-flip-horizontal.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Shape-flip-horizontal.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Famfamfam-Silk-Shape-flip-vertical.16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Famfamfam-Silk-Shape-flip-vertical.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="z_folder_image" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\folder_image.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="arrow_undo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\undo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icon_64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="folder_table" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\folder_table.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -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;

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

BIN
McBitFont/Resources/add.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 898 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 B

View File

@@ -5,33 +5,46 @@ 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+
Requires:
- Windows 7+
- .NET 9
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 scroll left and right
- Shift + scroll to zoom
- Shift + scroll to scroll left and right
- Crtl + scroll to zoom
Download in the [Releases](https://gitea.mcflyer.ru/McFLY/McBitFont/releases) section!
Download in the 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:
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)

28
TODO.txt Normal file
View File

@@ -0,0 +1,28 @@
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
V Change Menu icons
V Re-arranged menu items
V Option to display codes in Hex numbers
V Make symbol list wider to display 8 characters instead of 7
Functionality:
V Fill canvas button
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)
V Ability to make monospaced font a variable width one
V Undo/Redo for canvas changes
V Image import from a file
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
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

Binary file not shown.

BIN
examples/Font_5x7.mbfont Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
examples/helvB08_PREFAB.mbf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
examples/icons_9x9.mbfont Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
examples/tests/derevya.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
examples/tests/flipper.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
examples/tests/panda.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,51 @@
// File generated by McBitFont v2.0
// made by Anton Mukhin (mcfly@mcflyer.ru)
//
//
// Bytes total: 38
// 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 Column 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 test16x16[] = {
// Meta header
0, // Is it a packed font?
16, // Font width in pixels; 0 - variable width
16, // Font height in pixels
0, // Font space (between symbols) in pixels
0, // First character code
0, // Last character code
// Data:
0xfc, 0x1f,
0x00, 0x30,
0x0c, 0xe0,
0x06, 0x1c,
0x02, 0x36,
0x32, 0x23,
0x32, 0x21,
0x82, 0x21,
0x82, 0x2c,
0xc6, 0x2c,
0x64, 0x20,
0x3c, 0x30,
0x00, 0x10,
0x1f, 0x20,
0xf0, 0x3f,
0x00, 0x20
};

258
examples/tests/testfont.txt Normal file
View File

@@ -0,0 +1,258 @@
// File generated by McBitFont v2.0
// made by Anton Mukhin (mcfly@mcflyer.ru)
//
//
// Bytes total: 1768
// 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
0, // 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, 0x00, 0x00, // 32 -->
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 --> я
};

View File

@@ -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 --> я
};

View File

@@ -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 --> я
};

BIN
icons/fam_base.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
icons/fam_rectt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

Some files were not shown because too many files have changed in this diff Show More