9 Commits

Author SHA1 Message Date
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
10 changed files with 82 additions and 44 deletions

View File

@@ -88,7 +88,7 @@ namespace McBitFont {
int imin, jmin, imax, jmax, idir, jdir; int imin, jmin, imax, jmax, idir, jdir;
if (com) { if (com) {
//Header comments // Header comments
output += comments["header"]; output += comments["header"];
output += comments["scan_order"] + cbOrder.Text + "\n"; output += comments["scan_order"] + cbOrder.Text + "\n";
output += comments["scan_hdir"] + cbHDir.Text + "\n"; output += comments["scan_hdir"] + cbHDir.Text + "\n";
@@ -107,7 +107,7 @@ namespace McBitFont {
} }
} }
//Figure out mins and maxes // Figure out mins and maxes
if (cbOrder.SelectedIndex == 0) { if (cbOrder.SelectedIndex == 0) {
if (cbHDir.SelectedIndex == 0) { if (cbHDir.SelectedIndex == 0) {
// Columns; Left to right // Columns; Left to right

View File

@@ -51,7 +51,7 @@ namespace McBitFont {
public bool monospaced = false; public bool monospaced = false;
bool modified = false; bool modified = false;
bool prjModified = false; bool prjModified = false;
public const string version = "1.4"; public const string version = "1.6";
public string prjName = "Untitled"; public string prjName = "Untitled";
public int codepage = 1251; public int codepage = 1251;
private FrameMiniature fbuf; private FrameMiniature fbuf;
@@ -89,6 +89,11 @@ namespace McBitFont {
this.Text = "McBitFont " + version + " - " + prjName; this.Text = "McBitFont " + version + " - " + prjName;
fbuf = new FrameMiniature(0, dotWidth, dotHeight); fbuf = new FrameMiniature(0, dotWidth, dotHeight);
// Chek for arguments
if (Environment.GetCommandLineArgs().Length > 1) {
loadProject(Environment.GetCommandLineArgs()[1]);
}
} }
[DllImport("user32.dll")] [DllImport("user32.dll")]
@@ -141,7 +146,7 @@ namespace McBitFont {
for (int i = 0; i < frames.Count; i++) { for (int i = 0; i < frames.Count; i++) {
frames[i] = frameResize(frames[i], (int)nudX.Value, dotHeight); frames[i] = frameResize(frames[i], (int)nudX.Value, dotHeight);
bmp = getMiniPictue(frames[i]); bmp = getMiniPictue(frames[i]);
string s = frames[i].code.ToString(); string s = frames[i].code.ToString().PadLeft(3, '0');
ilMiniatures.Images.RemoveByKey(s); ilMiniatures.Images.RemoveByKey(s);
ilMiniatures.Images.Add(s, (Image)bmp); ilMiniatures.Images.Add(s, (Image)bmp);
miniList.Items[s].ImageKey = s; miniList.Items[s].ImageKey = s;
@@ -158,11 +163,12 @@ namespace McBitFont {
for (int i = 0; i < frames.Count; i++) { for (int i = 0; i < frames.Count; i++) {
frames[i] = frameResize(frames[i], dotWidth, (int)nudY.Value); frames[i] = frameResize(frames[i], dotWidth, (int)nudY.Value);
bmp = getMiniPictue(frames[i]); bmp = getMiniPictue(frames[i]);
string s = frames[i].code.ToString(); string s = frames[i].code.ToString().PadLeft(3, '0');
ilMiniatures.Images.RemoveByKey(s); ilMiniatures.Images.RemoveByKey(s);
ilMiniatures.Images.Add(s, (Image)bmp); ilMiniatures.Images.Add(s, (Image)bmp);
miniList.Items[s].ImageKey = s; miniList.Items[s].ImageKey = s;
} }
if (nudY.Focused) modified = true;
prjModified = true; prjModified = true;
dotResize(dotWidth, (int)nudY.Value); dotResize(dotWidth, (int)nudY.Value);
} }
@@ -631,6 +637,11 @@ namespace McBitFont {
} }
private void saveToolStripMenuItem_Click(object sender, EventArgs e) { private void saveToolStripMenuItem_Click(object sender, EventArgs e) {
if (modified) {
if (MessageBox.Show("Current frame is modified.\nDo you want to apply the changes first?", "The frame was modified!", MessageBoxButtons.YesNo) == DialogResult.Yes) {
saveFrame();
}
}
if (dlgSave.ShowDialog() == DialogResult.OK) { if (dlgSave.ShowDialog() == DialogResult.OK) {
SaveBlock sav; SaveBlock sav;
sav.monospaced = monospaced; sav.monospaced = monospaced;
@@ -648,6 +659,46 @@ namespace McBitFont {
} }
} }
private void loadProject(string filename) {
SaveBlock sav;
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fs = File.Open(filename, FileMode.Open)) {
sav = (SaveBlock)formatter.Deserialize(fs);
fs.Close();
}
monospaced = sav.monospaced;
codepage = sav.codepage;
baseline = sav.baseline;
lblType.Text = monospaced ? "Monospaced" : "Variable width / Single";
frames = sav.frames;
miniList.Items.Clear();
ilMiniatures.Images.Clear();
foreach (FrameMiniature ff in frames) {
var s = ff.code.ToString().PadLeft(3, '0');
var sss = decodeSymbol(ff.code);
ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff));
miniList.Items.Add(s, s + ' ' + sss, s);
}
nudX.ValueChanged -= nudX_ValueChanged;
nudY.ValueChanged -= nudY_ValueChanged;
nudX.Value = frames.First().width;
nudY.Value = frames.First().height;
dotResize((int)nudX.Value, (int)nudY.Value);
nudX.ValueChanged += nudX_ValueChanged;
nudY.ValueChanged += nudY_ValueChanged;
f = copyFrame(frames.First());
dotPanel.Refresh();
miniList.Refresh();
modified = false;
prjModified = false;
prjName = Path.GetFileNameWithoutExtension(filename);
this.Text = "McBitFont " + version + " - " + prjName;
checkForAdd();
fbuffer = false;
}
private void openToolStripMenuItem_Click(object sender, EventArgs e) { private void openToolStripMenuItem_Click(object sender, EventArgs e) {
if (prjModified) { if (prjModified) {
if (MessageBox.Show("The project is modified.\nDo you want to save it first?", "Project was modified!", MessageBoxButtons.YesNo) == DialogResult.Yes) { if (MessageBox.Show("The project is modified.\nDo you want to save it first?", "Project was modified!", MessageBoxButtons.YesNo) == DialogResult.Yes) {
@@ -656,43 +707,7 @@ namespace McBitFont {
} }
} }
if (dlgOpen.ShowDialog() == DialogResult.OK) { if (dlgOpen.ShowDialog() == DialogResult.OK) {
SaveBlock sav; loadProject(dlgOpen.FileName);
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fs = File.Open(dlgOpen.FileName, FileMode.Open)) {
sav = (SaveBlock)formatter.Deserialize(fs);
fs.Close();
}
monospaced = sav.monospaced;
codepage = sav.codepage;
baseline = sav.baseline;
lblType.Text = monospaced ? "Monospaced" : "Variable width / Single";
frames = sav.frames;
miniList.Items.Clear();
ilMiniatures.Images.Clear();
foreach (FrameMiniature ff in frames) {
var s = ff.code.ToString().PadLeft(3, '0');
var sss = decodeSymbol(ff.code);
ilMiniatures.Images.Add(s, (Image)getMiniPictue(ff));
miniList.Items.Add(s, s + ' ' + sss, s);
}
nudX.ValueChanged -= nudX_ValueChanged;
nudY.ValueChanged -= nudY_ValueChanged;
nudX.Value = frames.First().width;
nudY.Value = frames.First().height;
dotResize((int)nudX.Value, (int)nudY.Value);
nudX.ValueChanged += nudX_ValueChanged;
nudY.ValueChanged += nudY_ValueChanged;
f = copyFrame(frames.First());
dotPanel.Refresh();
miniList.Refresh();
modified = false;
prjModified = false;
prjName = Path.GetFileNameWithoutExtension(dlgOpen.FileName);
this.Text = "McBitFont " + version + " - " + prjName;
checkForAdd();
fbuffer = false;
} }
} }

View File

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

23
TODO.txt Normal file
View File

@@ -0,0 +1,23 @@
Application:
- Implement "Save" menu
Functionality:
- Context menu in symbol navigator
- Delete symbols before/after selected
- Shift all symbols on code line (change symbol codes)
- Specify starting code (extends the shift)
- "Only numbers" range in the New dialog
- "Specify range" in the New dialog
- "Single frame", "only numbers" and "specify range" as radio buttons
- Button to Clear/Fill a block
- Undo/Redo
- Image import from a file
- Import from a text array
- Copy-paste to a symbol with different size
- Rectangle selection to mass-paint, shift and mirror pixels
- Change height of variable width fonts with ability to choose which side to add pixels to
- Make it possible to have zero width chars in VarWidth fonts
- "Packed" fonts export
Bugs:
- Every char changes its width to default on VarWidth font height change!

BIN
examples/Font_5x7.mbf Normal file

Binary file not shown.

BIN
examples/Numbers_11x16.mbf Normal file

Binary file not shown.

BIN
examples/Numbers_13x20.mbf Normal file

Binary file not shown.

Binary file not shown.

BIN
examples/helvB08_PREFAB.mbf Normal file

Binary file not shown.

Binary file not shown.