Version changed to 2.4; TODO features:
Application: - Copy-Paste now uses System clipboard and it is possible to copy-paste from/to different instances of running program Bugs fixed: - Switching between symbols while select tool is active and small area selected trows an error - Full frame Copy in Clipboard does not respect selection on Paste operation
This commit is contained in:
39
McBitFont/Form1.Designer.cs
generated
39
McBitFont/Form1.Designer.cs
generated
@@ -64,10 +64,12 @@
|
|||||||
openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
importTextToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
importTextToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
importImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
importImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
exportFontLayoutPNGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
exportFontLayoutPNGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
undoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
undoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -84,6 +86,7 @@
|
|||||||
removeBeforeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
removeBeforeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
removeAfterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
removeAfterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
CodeShiftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
CodeShiftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
testFontToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
testFontToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
canvasToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
canvasToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
ClearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
ClearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
@@ -110,9 +113,6 @@
|
|||||||
lblSelection = new System.Windows.Forms.Label();
|
lblSelection = new System.Windows.Forms.Label();
|
||||||
lblModified = new System.Windows.Forms.Label();
|
lblModified = new System.Windows.Forms.Label();
|
||||||
dlgSavePNG = new System.Windows.Forms.SaveFileDialog();
|
dlgSavePNG = new System.Windows.Forms.SaveFileDialog();
|
||||||
toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
((System.ComponentModel.ISupportInitialize)nudX).BeginInit();
|
((System.ComponentModel.ISupportInitialize)nudX).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)nudY).BeginInit();
|
((System.ComponentModel.ISupportInitialize)nudY).BeginInit();
|
||||||
panel1.SuspendLayout();
|
panel1.SuspendLayout();
|
||||||
@@ -535,7 +535,7 @@
|
|||||||
//
|
//
|
||||||
fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, toolStripSeparator1, importTextToolStripMenuItem1, importImageToolStripMenuItem, exportToolStripMenuItem, exportFontLayoutPNGToolStripMenuItem, toolStripSeparator2, exitToolStripMenuItem });
|
fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, toolStripSeparator1, importTextToolStripMenuItem1, importImageToolStripMenuItem, exportToolStripMenuItem, exportFontLayoutPNGToolStripMenuItem, toolStripSeparator2, exitToolStripMenuItem });
|
||||||
fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||||
fileToolStripMenuItem.Size = new System.Drawing.Size(122, 20);
|
fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
||||||
fileToolStripMenuItem.Text = "File";
|
fileToolStripMenuItem.Text = "File";
|
||||||
//
|
//
|
||||||
// newToolStripMenuItem
|
// newToolStripMenuItem
|
||||||
@@ -582,6 +582,11 @@
|
|||||||
saveAsToolStripMenuItem.ToolTipText = "Save changes to another file";
|
saveAsToolStripMenuItem.ToolTipText = "Save changes to another file";
|
||||||
saveAsToolStripMenuItem.Click += SaveToolStripMenuItem_Click;
|
saveAsToolStripMenuItem.Click += SaveToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
|
// toolStripSeparator1
|
||||||
|
//
|
||||||
|
toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
|
toolStripSeparator1.Size = new System.Drawing.Size(221, 6);
|
||||||
|
//
|
||||||
// importTextToolStripMenuItem1
|
// importTextToolStripMenuItem1
|
||||||
//
|
//
|
||||||
importTextToolStripMenuItem1.Image = Properties.Resources.folder_table;
|
importTextToolStripMenuItem1.Image = Properties.Resources.folder_table;
|
||||||
@@ -620,6 +625,11 @@
|
|||||||
exportFontLayoutPNGToolStripMenuItem.ToolTipText = "Create an image with all a table showing all 256 symbols";
|
exportFontLayoutPNGToolStripMenuItem.ToolTipText = "Create an image with all a table showing all 256 symbols";
|
||||||
exportFontLayoutPNGToolStripMenuItem.Click += ExportPNG;
|
exportFontLayoutPNGToolStripMenuItem.Click += ExportPNG;
|
||||||
//
|
//
|
||||||
|
// toolStripSeparator2
|
||||||
|
//
|
||||||
|
toolStripSeparator2.Name = "toolStripSeparator2";
|
||||||
|
toolStripSeparator2.Size = new System.Drawing.Size(221, 6);
|
||||||
|
//
|
||||||
// exitToolStripMenuItem
|
// exitToolStripMenuItem
|
||||||
//
|
//
|
||||||
exitToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Door_out_16;
|
exitToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Door_out_16;
|
||||||
@@ -672,7 +682,6 @@
|
|||||||
//
|
//
|
||||||
// pasteToolStripMenuItem
|
// pasteToolStripMenuItem
|
||||||
//
|
//
|
||||||
pasteToolStripMenuItem.Enabled = false;
|
|
||||||
pasteToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Page_paste_16;
|
pasteToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Page_paste_16;
|
||||||
pasteToolStripMenuItem.Name = "pasteToolStripMenuItem";
|
pasteToolStripMenuItem.Name = "pasteToolStripMenuItem";
|
||||||
pasteToolStripMenuItem.ShortcutKeyDisplayString = "";
|
pasteToolStripMenuItem.ShortcutKeyDisplayString = "";
|
||||||
@@ -785,6 +794,11 @@
|
|||||||
CodeShiftToolStripMenuItem.ToolTipText = "Shift the font on the code line";
|
CodeShiftToolStripMenuItem.ToolTipText = "Shift the font on the code line";
|
||||||
CodeShiftToolStripMenuItem.Click += CodeShiftToolStripMenuItem_Click;
|
CodeShiftToolStripMenuItem.Click += CodeShiftToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
|
// toolStripSeparator3
|
||||||
|
//
|
||||||
|
toolStripSeparator3.Name = "toolStripSeparator3";
|
||||||
|
toolStripSeparator3.Size = new System.Drawing.Size(212, 6);
|
||||||
|
//
|
||||||
// testFontToolStripMenuItem
|
// testFontToolStripMenuItem
|
||||||
//
|
//
|
||||||
testFontToolStripMenuItem.Image = Properties.Resources.font;
|
testFontToolStripMenuItem.Image = Properties.Resources.font;
|
||||||
@@ -1055,21 +1069,6 @@
|
|||||||
dlgSavePNG.DefaultExt = "png";
|
dlgSavePNG.DefaultExt = "png";
|
||||||
dlgSavePNG.Filter = "PNG Image|*.png;*.PNG";
|
dlgSavePNG.Filter = "PNG Image|*.png;*.PNG";
|
||||||
//
|
//
|
||||||
// toolStripSeparator1
|
|
||||||
//
|
|
||||||
toolStripSeparator1.Name = "toolStripSeparator1";
|
|
||||||
toolStripSeparator1.Size = new System.Drawing.Size(221, 6);
|
|
||||||
//
|
|
||||||
// toolStripSeparator2
|
|
||||||
//
|
|
||||||
toolStripSeparator2.Name = "toolStripSeparator2";
|
|
||||||
toolStripSeparator2.Size = new System.Drawing.Size(221, 6);
|
|
||||||
//
|
|
||||||
// toolStripSeparator3
|
|
||||||
//
|
|
||||||
toolStripSeparator3.Name = "toolStripSeparator3";
|
|
||||||
toolStripSeparator3.Size = new System.Drawing.Size(212, 6);
|
|
||||||
//
|
|
||||||
// MainForm
|
// MainForm
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||||
|
@@ -8,6 +8,7 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
|
||||||
@@ -52,18 +53,18 @@ namespace McBitFont {
|
|||||||
private CanvasHistory history = new();
|
private CanvasHistory history = new();
|
||||||
private int cellSize = 10;
|
private int cellSize = 10;
|
||||||
public int dotWidth, dotHeight;
|
public int dotWidth, dotHeight;
|
||||||
private int pixelOffset = 5;
|
private readonly int pixelOffset = 5;
|
||||||
private int gap;
|
private int gap;
|
||||||
private int w, h;
|
private int w, h;
|
||||||
public bool monospaced = false;
|
public bool monospaced = false;
|
||||||
private bool modified = false;
|
private bool modified = false;
|
||||||
private bool prjModified = false;
|
private bool prjModified = false;
|
||||||
public const string version = "2.3";
|
public const string version = "2.4";
|
||||||
public string prjName = "Untitled";
|
public string prjName = "Untitled";
|
||||||
public string prjFileName = "";
|
public string prjFileName = "";
|
||||||
public int codepage = 1251;
|
public int codepage = 1251;
|
||||||
private FrameMiniature fbuf;
|
private FrameMiniature fbuf;
|
||||||
private bool fbuffer = false;
|
private readonly DataFormats.Format clpbFormat = DataFormats.GetFormat("McBitFontFrame");
|
||||||
private int baseline = 0;
|
private int baseline = 0;
|
||||||
private bool set_base = false;
|
private bool set_base = false;
|
||||||
private Point selection1, selection2;
|
private Point selection1, selection2;
|
||||||
@@ -148,8 +149,8 @@ namespace McBitFont {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private FrameMiniature CopyFrame(FrameMiniature frame, bool clipboard = false) {
|
private FrameMiniature CopyFrame(FrameMiniature frame, bool clipboard = false) {
|
||||||
int width = chkRectSelect.Checked ? selection2.X - selection1.X + 1 : frame.width;
|
int width = chkRectSelect.Checked && clipboard ? selection2.X - selection1.X + 1 : frame.width;
|
||||||
int height = chkRectSelect.Checked ? selection2.Y - selection1.Y + 1 : frame.height;
|
int height = chkRectSelect.Checked && clipboard ? selection2.Y - selection1.Y + 1 : frame.height;
|
||||||
var ff = new FrameMiniature(frame.code, width, height);
|
var ff = new FrameMiniature(frame.code, width, height);
|
||||||
|
|
||||||
if (chkRectSelect.Checked && clipboard) {
|
if (chkRectSelect.Checked && clipboard) {
|
||||||
@@ -817,7 +818,6 @@ namespace McBitFont {
|
|||||||
SetWindowCap();
|
SetWindowCap();
|
||||||
SetModified(false); ;
|
SetModified(false); ;
|
||||||
CheckForAdd();
|
CheckForAdd();
|
||||||
fbuffer = false;
|
|
||||||
miniList.Items[0].Selected = true;
|
miniList.Items[0].Selected = true;
|
||||||
miniList.Refresh();
|
miniList.Refresh();
|
||||||
dotPanel.Refresh();
|
dotPanel.Refresh();
|
||||||
@@ -839,10 +839,8 @@ namespace McBitFont {
|
|||||||
tsmiRemoveSymbol.Enabled = false;
|
tsmiRemoveSymbol.Enabled = false;
|
||||||
tsmiRemoveBefore.Enabled = false;
|
tsmiRemoveBefore.Enabled = false;
|
||||||
tsmiRemoveAfter.Enabled = false;
|
tsmiRemoveAfter.Enabled = false;
|
||||||
//copyToolStripMenuItem.Enabled = false;
|
|
||||||
pasteToolStripMenuItem.Enabled = false;
|
|
||||||
return;
|
return;
|
||||||
//miniList.Items[0].Selected = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clear history
|
// Clear history
|
||||||
@@ -863,7 +861,7 @@ namespace McBitFont {
|
|||||||
removeSymbolToolStripMenuItem.Enabled = false;
|
removeSymbolToolStripMenuItem.Enabled = false;
|
||||||
tsmiRemoveSymbol.Enabled = false;
|
tsmiRemoveSymbol.Enabled = false;
|
||||||
}
|
}
|
||||||
//copyToolStripMenuItem.Enabled = true;
|
|
||||||
if (frames.Count > 1 && ff.Equals(frames.First())) {
|
if (frames.Count > 1 && ff.Equals(frames.First())) {
|
||||||
removeBeforeToolStripMenuItem.Enabled = false;
|
removeBeforeToolStripMenuItem.Enabled = false;
|
||||||
removeAfterToolStripMenuItem.Enabled = true;
|
removeAfterToolStripMenuItem.Enabled = true;
|
||||||
@@ -881,8 +879,6 @@ namespace McBitFont {
|
|||||||
tsmiRemoveAfter.Enabled = true;
|
tsmiRemoveAfter.Enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fbuffer) pasteToolStripMenuItem.Enabled = true;
|
|
||||||
else pasteToolStripMenuItem.Enabled = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SaveToolStripMenuItem_Click(object sender, EventArgs e) {
|
private void SaveToolStripMenuItem_Click(object sender, EventArgs e) {
|
||||||
@@ -940,8 +936,6 @@ namespace McBitFont {
|
|||||||
miniList.Items[0].Selected = true;
|
miniList.Items[0].Selected = true;
|
||||||
|
|
||||||
CheckForAdd();
|
CheckForAdd();
|
||||||
fbuffer = false;
|
|
||||||
//copyToolStripMenuItem.Enabled = true;
|
|
||||||
|
|
||||||
// Re-create history object
|
// Re-create history object
|
||||||
history = new CanvasHistory();
|
history = new CanvasHistory();
|
||||||
@@ -1041,16 +1035,23 @@ namespace McBitFont {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void copyToolStripMenuItem_Click(object sender, EventArgs e) {
|
private void copyToolStripMenuItem_Click(object sender, EventArgs e) {
|
||||||
fbuffer = true;
|
var bb = MessagePackSerializer.Serialize(CopyFrame(f, true));
|
||||||
fbuf = CopyFrame(f, true);
|
DataObject clpbObj = new DataObject(clpbFormat.Name, bb);
|
||||||
pasteToolStripMenuItem.Enabled = true;
|
Clipboard.SetDataObject(clpbObj, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pasteToolStripMenuItem_Click(object sender, EventArgs e) {
|
private void pasteToolStripMenuItem_Click(object sender, EventArgs e) {
|
||||||
|
// Try to read from clipboard
|
||||||
|
try {
|
||||||
|
IDataObject clpbObj = Clipboard.GetDataObject();
|
||||||
|
byte[] bb = (byte[])clpbObj.GetData(clpbFormat.Name);
|
||||||
|
fbuf = MessagePackSerializer.Deserialize<FrameMiniature>(bb);
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
history.AddPre(f);
|
history.AddPre(f);
|
||||||
if (fbuf.width == f.width && fbuf.height == f.height) {
|
|
||||||
Array.Copy(fbuf.data, f.data, fbuf.data.Length);
|
|
||||||
} else {
|
|
||||||
int di, dj, wmax, hmax, selw, selh;
|
int di, dj, wmax, hmax, selw, selh;
|
||||||
if (chkRectSelect.Checked) {
|
if (chkRectSelect.Checked) {
|
||||||
di = selection1.X;
|
di = selection1.X;
|
||||||
@@ -1071,7 +1072,7 @@ namespace McBitFont {
|
|||||||
f.data[i + di, j + dj] = fbuf.data[i, j];
|
f.data[i + di, j + dj] = fbuf.data[i, j];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
history.AddPost(f);
|
history.AddPost(f);
|
||||||
CheckHistoryButtons();
|
CheckHistoryButtons();
|
||||||
dotPanel.Refresh();
|
dotPanel.Refresh();
|
||||||
|
@@ -20,9 +20,9 @@
|
|||||||
<UseWindowsForms>true</UseWindowsForms>
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
<ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
|
<ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
|
||||||
<ApplicationIcon>icon_64.ico</ApplicationIcon>
|
<ApplicationIcon>icon_64.ico</ApplicationIcon>
|
||||||
<AssemblyVersion>2.3.0.0</AssemblyVersion>
|
<AssemblyVersion>2.4.0.0</AssemblyVersion>
|
||||||
<FileVersion>2.3.0.0</FileVersion>
|
<FileVersion>2.4.0.0</FileVersion>
|
||||||
<Version>$(VersionPrefix)2.3.0</Version>
|
<Version>$(VersionPrefix)2.4.0</Version>
|
||||||
<Copyright>Anton Mukhin</Copyright>
|
<Copyright>Anton Mukhin</Copyright>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
3
TODO.txt
3
TODO.txt
@@ -1,5 +1,6 @@
|
|||||||
Application:
|
Application:
|
||||||
- Consider migrating to WPF in order to make DPI aware UI
|
- Consider migrating to WPF in order to make DPI aware UI
|
||||||
|
V Copy-Paste now uses System clipboard and it is possible to copy-paste from/to different instances of running program
|
||||||
|
|
||||||
Functionality:
|
Functionality:
|
||||||
V Allow to add frames to Single-frame "fonts"
|
V Allow to add frames to Single-frame "fonts"
|
||||||
@@ -8,3 +9,5 @@ V Export image with All characers table
|
|||||||
|
|
||||||
Bugs:
|
Bugs:
|
||||||
- In some cases after switching to a symbol dotPanel mouse move causes "Out of range" exception (history.Pre after width change?)
|
- In some cases after switching to a symbol dotPanel mouse move causes "Out of range" exception (history.Pre after width change?)
|
||||||
|
V Switching between symbols while select tool is active and small area selected trows an error
|
||||||
|
V Full frame Copy in Clipboard does not respect selection on Paste operation
|
Reference in New Issue
Block a user