diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs
index a30ab85..5ae003f 100644
--- a/McBitFont/Form1.Designer.cs
+++ b/McBitFont/Form1.Designer.cs
@@ -34,6 +34,7 @@
cbZoom = new System.Windows.Forms.ComboBox();
label4 = new System.Windows.Forms.Label();
panel1 = new System.Windows.Forms.Panel();
+ tbFrameNote = new System.Windows.Forms.TextBox();
btnFill = new System.Windows.Forms.Button();
btnClear = new System.Windows.Forms.Button();
btnMirrorY = new System.Windows.Forms.Button();
@@ -69,6 +70,7 @@
importImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
exportFontLayoutPNGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ frameScreenshotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -230,7 +232,7 @@
// panel1
//
panel1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right;
- panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ panel1.Controls.Add(tbFrameNote);
panel1.Controls.Add(btnFill);
panel1.Controls.Add(btnClear);
panel1.Controls.Add(btnMirrorY);
@@ -240,17 +242,28 @@
panel1.Controls.Add(btnShiftUp);
panel1.Controls.Add(btnShiftRight);
panel1.Controls.Add(btnShiftLeft);
- panel1.Location = new System.Drawing.Point(472, 31);
+ panel1.Location = new System.Drawing.Point(472, 24);
panel1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
panel1.Name = "panel1";
- panel1.Size = new System.Drawing.Size(140, 139);
+ panel1.Size = new System.Drawing.Size(140, 154);
panel1.TabIndex = 9;
//
+ // tbFrameNote
+ //
+ tbFrameNote.Location = new System.Drawing.Point(7, 127);
+ tbFrameNote.Name = "tbFrameNote";
+ tbFrameNote.PlaceholderText = "Frame note";
+ tbFrameNote.Size = new System.Drawing.Size(119, 23);
+ tbFrameNote.TabIndex = 9;
+ toolTip1.SetToolTip(tbFrameNote, "Frame note");
+ tbFrameNote.WordWrap = false;
+ tbFrameNote.TextChanged += tbFrameNote_TextChanged;
+ //
// btnFill
//
btnFill.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204);
btnFill.Image = Properties.Resources.Canvas_Fill;
- btnFill.Location = new System.Drawing.Point(92, 9);
+ btnFill.Location = new System.Drawing.Point(91, 3);
btnFill.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
btnFill.Name = "btnFill";
btnFill.Size = new System.Drawing.Size(35, 35);
@@ -263,7 +276,7 @@
//
btnClear.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204);
btnClear.Image = Properties.Resources.Canvas_Clear;
- btnClear.Location = new System.Drawing.Point(8, 9);
+ btnClear.Location = new System.Drawing.Point(7, 3);
btnClear.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
btnClear.Name = "btnClear";
btnClear.Size = new System.Drawing.Size(35, 35);
@@ -276,7 +289,7 @@
//
btnMirrorY.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204);
btnMirrorY.Image = Properties.Resources.Famfamfam_Silk_Shape_flip_vertical_16;
- btnMirrorY.Location = new System.Drawing.Point(92, 92);
+ btnMirrorY.Location = new System.Drawing.Point(91, 86);
btnMirrorY.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
btnMirrorY.Name = "btnMirrorY";
btnMirrorY.Size = new System.Drawing.Size(35, 35);
@@ -289,7 +302,7 @@
//
btnMirrorX.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204);
btnMirrorX.Image = Properties.Resources.Famfamfam_Silk_Shape_flip_horizontal_16;
- btnMirrorX.Location = new System.Drawing.Point(50, 92);
+ btnMirrorX.Location = new System.Drawing.Point(49, 86);
btnMirrorX.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
btnMirrorX.Name = "btnMirrorX";
btnMirrorX.Size = new System.Drawing.Size(35, 35);
@@ -302,7 +315,7 @@
//
btnInvert.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204);
btnInvert.Image = Properties.Resources.z_contrast;
- btnInvert.Location = new System.Drawing.Point(8, 92);
+ btnInvert.Location = new System.Drawing.Point(7, 86);
btnInvert.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
btnInvert.Name = "btnInvert";
btnInvert.Size = new System.Drawing.Size(35, 35);
@@ -315,7 +328,7 @@
//
btnShiftDown.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204);
btnShiftDown.Image = Properties.Resources.z_down;
- btnShiftDown.Location = new System.Drawing.Point(50, 51);
+ btnShiftDown.Location = new System.Drawing.Point(49, 45);
btnShiftDown.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
btnShiftDown.Name = "btnShiftDown";
btnShiftDown.Size = new System.Drawing.Size(35, 35);
@@ -328,7 +341,7 @@
//
btnShiftUp.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204);
btnShiftUp.Image = Properties.Resources.z_uo;
- btnShiftUp.Location = new System.Drawing.Point(50, 9);
+ btnShiftUp.Location = new System.Drawing.Point(49, 3);
btnShiftUp.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
btnShiftUp.Name = "btnShiftUp";
btnShiftUp.Size = new System.Drawing.Size(35, 35);
@@ -341,7 +354,7 @@
//
btnShiftRight.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204);
btnShiftRight.Image = Properties.Resources.z_right;
- btnShiftRight.Location = new System.Drawing.Point(92, 51);
+ btnShiftRight.Location = new System.Drawing.Point(91, 45);
btnShiftRight.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
btnShiftRight.Name = "btnShiftRight";
btnShiftRight.Size = new System.Drawing.Size(35, 35);
@@ -354,7 +367,7 @@
//
btnShiftLeft.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204);
btnShiftLeft.Image = Properties.Resources.z_left;
- btnShiftLeft.Location = new System.Drawing.Point(8, 51);
+ btnShiftLeft.Location = new System.Drawing.Point(7, 45);
btnShiftLeft.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
btnShiftLeft.Name = "btnShiftLeft";
btnShiftLeft.Size = new System.Drawing.Size(35, 35);
@@ -391,6 +404,7 @@
miniList.MultiSelect = false;
miniList.Name = "miniList";
miniList.ShowGroups = false;
+ miniList.ShowItemToolTips = true;
miniList.Size = new System.Drawing.Size(427, 455);
miniList.SmallImageList = ilMiniatures;
miniList.Sorting = System.Windows.Forms.SortOrder.Ascending;
@@ -543,7 +557,7 @@
//
// fileToolStripMenuItem
//
- 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, frameScreenshotToolStripMenuItem, toolStripSeparator2, exitToolStripMenuItem });
fileToolStripMenuItem.Name = "fileToolStripMenuItem";
fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
fileToolStripMenuItem.Text = "File";
@@ -635,6 +649,16 @@
exportFontLayoutPNGToolStripMenuItem.ToolTipText = "Create an image with all a table showing all 256 symbols";
exportFontLayoutPNGToolStripMenuItem.Click += ExportPNG;
//
+ // frameScreenshotToolStripMenuItem
+ //
+ frameScreenshotToolStripMenuItem.Image = Properties.Resources.picture_go;
+ frameScreenshotToolStripMenuItem.Name = "frameScreenshotToolStripMenuItem";
+ frameScreenshotToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P;
+ frameScreenshotToolStripMenuItem.Size = new System.Drawing.Size(224, 22);
+ frameScreenshotToolStripMenuItem.Text = "Frame Screenshot";
+ frameScreenshotToolStripMenuItem.ToolTipText = "Make a screenshot of the current frame";
+ frameScreenshotToolStripMenuItem.Click += frameScreenshotToolStripMenuItem_Click;
+ //
// toolStripSeparator2
//
toolStripSeparator2.Name = "toolStripSeparator2";
@@ -1208,6 +1232,7 @@
((System.ComponentModel.ISupportInitialize)nudX).EndInit();
((System.ComponentModel.ISupportInitialize)nudY).EndInit();
panel1.ResumeLayout(false);
+ panel1.PerformLayout();
cmMinilist.ResumeLayout(false);
menuStrip1.ResumeLayout(false);
menuStrip1.PerformLayout();
@@ -1320,6 +1345,8 @@
private System.Windows.Forms.ToolStripMenuItem zerofyWidthToolStripMenuItem;
public System.Windows.Forms.NumericUpDown nudBrush;
private System.Windows.Forms.Label lblBrush;
+ private System.Windows.Forms.ToolStripMenuItem frameScreenshotToolStripMenuItem;
+ private System.Windows.Forms.TextBox tbFrameNote;
}
}
diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs
index d735281..4446c51 100644
--- a/McBitFont/Form1.cs
+++ b/McBitFont/Form1.cs
@@ -18,11 +18,12 @@ namespace McBitFont {
[Serializable]
[MessagePackObject]
public struct FrameMiniature {
- public FrameMiniature(int cc, int ww, int hh) {
+ public FrameMiniature(int cc, int ww, int hh, string frameNote = "") {
code = cc;
width = ww;
height = hh;
data = new bool[ww, hh];
+ note = frameNote;
}
[Key(0)]
public int code;
@@ -32,6 +33,8 @@ namespace McBitFont {
public int height;
[Key(3)]
public bool[,] data;
+ [Key(8)]
+ public string note;
};
[Serializable]
@@ -59,7 +62,7 @@ namespace McBitFont {
public bool monospaced = false;
private bool modified = false;
private bool prjModified = false;
- public const string version = "2.7";
+ public const string version = "2.8";
public string prjName = "Untitled";
public string prjFileName = "";
public int codepage = 1251;
@@ -112,12 +115,12 @@ namespace McBitFont {
// Remember sidebar panels locations
private void SideBarRecalc() {
- sidebarLocs[0, 0] = new Point(this.Width - 459, 31);
- sidebarLocs[0, 1] = new Point(this.Width - 316, 24);
- sidebarLocs[0, 2] = new Point(this.Width - 487, 31);
- sidebarLocs[1, 0] = new Point(this.Width - panel1.Width - 70, 180);
- sidebarLocs[1, 1] = new Point(this.Width - pnlInfo.Width - 110, 320);
- sidebarLocs[1, 2] = new Point(dotPanel.Width + 17, 31);
+ sidebarLocs[0, 0] = new Point(this.Width - 459, 24); // tool panel
+ sidebarLocs[0, 1] = new Point(this.Width - 316, 24); // info panel
+ sidebarLocs[0, 2] = new Point(this.Width - 487, 31); // vertical scroll
+ sidebarLocs[1, 0] = new Point(this.Width - panel1.Width - 70, 180); // tool panel
+ sidebarLocs[1, 1] = new Point(this.Width - pnlInfo.Width - 110, 340); // info panel
+ sidebarLocs[1, 2] = new Point(dotPanel.Width + 17, 31); // vertical scroll
}
@@ -191,8 +194,10 @@ namespace McBitFont {
for (int j = 0; j <= selection2.Y - selection1.Y; j++) {
ff.data[i, j] = frame.data[i + selection1.X, j + selection1.Y];
}
- } else
+ } else {
Array.Copy(frame.data, ff.data, frame.data.Length);
+ ff.note = frame.note;
+ }
return ff;
}
@@ -621,7 +626,7 @@ namespace McBitFont {
SetModified();
changed = true;
}
-
+
}
}
return changed;
@@ -717,6 +722,7 @@ namespace McBitFont {
string s = f.code.ToString().PadLeft(3, '0');
ilMiniatures.Images.RemoveByKey(s);
ilMiniatures.Images.Add(s, (Image)sizedBMP);
+ miniList.Items[miniList.Items.IndexOfKey(s)].ToolTipText = f.note;
sizedBMP.Dispose();
SetModified(false);
SetModified(true, true);
@@ -935,6 +941,7 @@ namespace McBitFont {
nudX.Value = ff.width;
nudY.Value = ff.height;
f = ff;
+ tbFrameNote.Text = ff.note;
history.Add(code);
@@ -983,7 +990,7 @@ namespace McBitFont {
var sHex = 'x' + Convert.ToString(f.code, 16).PadLeft(2, '0').ToUpper();
var sss = DecodeSymbol(f.code);
ilMiniatures.Images.Add(s, (Image)GetMiniPictue(f));
- miniList.Items.Add(s, (chkHexCodes.Checked ? sHex : s) + ' ' + sss, s);
+ miniList.Items.Add(s, (chkHexCodes.Checked ? sHex : s) + ' ' + sss, s).ToolTipText = f.note;
}
}
@@ -1015,10 +1022,9 @@ namespace McBitFont {
nudX.ValueChanged += nudX_ValueChanged;
nudY.ValueChanged += nudY_ValueChanged;
f = CopyFrame(frames.First());
+ tbFrameNote.Text = frames.First().note;
dotPanel.Refresh();
miniList.Refresh();
- SetModified(false);
- SetModified(false, true);
prjFileName = filename;
prjName = Path.GetFileNameWithoutExtension(filename);
@@ -1037,6 +1043,8 @@ namespace McBitFont {
zerofyWidthToolStripMenuItem.Enabled = !monospaced;
tsmiCodeShift.Visible = frames.Count > 1;
CodeShiftToolStripMenuItem.Visible = frames.Count > 1;
+ SetModified(false);
+ SetModified(false, true);
Cursor.Current = Cursors.Default;
}
@@ -1694,5 +1702,18 @@ namespace McBitFont {
private void nudBrush_ValueChanged(object sender, EventArgs e) {
if (!chkRectSelect.Checked) dotPanel.Cursor = McCursor.GetCursor((int)nudBrush.Value, cellSize, gap);
}
+
+ private void frameScreenshotToolStripMenuItem_Click(object sender, EventArgs e) {
+ FrameScreenshot iform = new(f);
+ iform.ShowDialog();
+ iform.Dispose();
+ }
+
+ private void tbFrameNote_TextChanged(object sender, EventArgs e) {
+ if (tbFrameNote.Focused) {
+ f.note = tbFrameNote.Text;
+ SetModified();
+ }
+ }
}
}
diff --git a/McBitFont/FrameScreenshot.Designer.cs b/McBitFont/FrameScreenshot.Designer.cs
new file mode 100644
index 0000000..d465e2b
--- /dev/null
+++ b/McBitFont/FrameScreenshot.Designer.cs
@@ -0,0 +1,147 @@
+namespace McBitFont {
+ partial class FrameScreenshot {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing) {
+ if (disposing && (components != null)) {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent() {
+ components = new System.ComponentModel.Container();
+ btnClose = new System.Windows.Forms.Button();
+ btnOK = new System.Windows.Forms.Button();
+ toolTip1 = new System.Windows.Forms.ToolTip(components);
+ nudUpscale = new System.Windows.Forms.NumericUpDown();
+ chkTransparent = new System.Windows.Forms.CheckBox();
+ dlgSaveImage = new System.Windows.Forms.SaveFileDialog();
+ lblUpscale = new System.Windows.Forms.Label();
+ chkBlackBG = new System.Windows.Forms.CheckBox();
+ ((System.ComponentModel.ISupportInitialize)nudUpscale).BeginInit();
+ SuspendLayout();
+ //
+ // btnClose
+ //
+ btnClose.Location = new System.Drawing.Point(144, 67);
+ btnClose.Name = "btnClose";
+ btnClose.Size = new System.Drawing.Size(88, 27);
+ btnClose.TabIndex = 3;
+ btnClose.Text = "Close";
+ btnClose.UseVisualStyleBackColor = true;
+ btnClose.Click += btnClose_Click;
+ //
+ // btnOK
+ //
+ btnOK.Location = new System.Drawing.Point(12, 67);
+ btnOK.Name = "btnOK";
+ btnOK.Size = new System.Drawing.Size(88, 27);
+ btnOK.TabIndex = 1;
+ btnOK.Text = "Save";
+ btnOK.UseVisualStyleBackColor = true;
+ btnOK.Click += btnOK_Click;
+ //
+ // toolTip1
+ //
+ toolTip1.AutoPopDelay = 10000;
+ toolTip1.InitialDelay = 500;
+ toolTip1.ReshowDelay = 100;
+ //
+ // nudUpscale
+ //
+ nudUpscale.Location = new System.Drawing.Point(12, 27);
+ nudUpscale.Maximum = new decimal(new int[] { 255, 0, 0, 0 });
+ nudUpscale.Minimum = new decimal(new int[] { 1, 0, 0, 0 });
+ nudUpscale.Name = "nudUpscale";
+ nudUpscale.Size = new System.Drawing.Size(51, 23);
+ nudUpscale.TabIndex = 2;
+ toolTip1.SetToolTip(nudUpscale, "Pixel upscale factor (4 means that for each frame pixel there will be 4x4 pixels generated)");
+ nudUpscale.Value = new decimal(new int[] { 4, 0, 0, 0 });
+ //
+ // chkTransparent
+ //
+ chkTransparent.AutoSize = true;
+ chkTransparent.Location = new System.Drawing.Point(85, 18);
+ chkTransparent.Name = "chkTransparent";
+ chkTransparent.Size = new System.Drawing.Size(155, 19);
+ chkTransparent.TabIndex = 5;
+ chkTransparent.Text = "Transparent background";
+ toolTip1.SetToolTip(chkTransparent, "Make background transparent");
+ chkTransparent.UseVisualStyleBackColor = true;
+ chkTransparent.CheckedChanged += chkTransparent_CheckedChanged;
+ //
+ // dlgSaveImage
+ //
+ dlgSaveImage.DefaultExt = "png";
+ dlgSaveImage.Filter = "PNG Image|*.png;*.PNG";
+ //
+ // lblUpscale
+ //
+ lblUpscale.AutoSize = true;
+ lblUpscale.Location = new System.Drawing.Point(12, 9);
+ lblUpscale.Name = "lblUpscale";
+ lblUpscale.Size = new System.Drawing.Size(51, 15);
+ lblUpscale.TabIndex = 4;
+ lblUpscale.Text = "Upscale:";
+ //
+ // chkBlackBG
+ //
+ chkBlackBG.AutoSize = true;
+ chkBlackBG.Enabled = false;
+ chkBlackBG.Location = new System.Drawing.Point(85, 35);
+ chkBlackBG.Name = "chkBlackBG";
+ chkBlackBG.Size = new System.Drawing.Size(132, 19);
+ chkBlackBG.TabIndex = 6;
+ chkBlackBG.Text = "Background is black";
+ toolTip1.SetToolTip(chkBlackBG, "White color is considered as background by default. Check this to invert that");
+ chkBlackBG.UseVisualStyleBackColor = true;
+ //
+ // FrameScreenshot
+ //
+ AcceptButton = btnClose;
+ AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+ AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ CancelButton = btnClose;
+ ClientSize = new System.Drawing.Size(244, 111);
+ Controls.Add(chkBlackBG);
+ Controls.Add(chkTransparent);
+ Controls.Add(nudUpscale);
+ Controls.Add(lblUpscale);
+ Controls.Add(btnClose);
+ Controls.Add(btnOK);
+ FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ Name = "FrameScreenshot";
+ StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ Text = "Frame Screenshot";
+ Load += FrameScreenshot_Load;
+ ((System.ComponentModel.ISupportInitialize)nudUpscale).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button btnClose;
+ private System.Windows.Forms.Button btnOK;
+ private System.Windows.Forms.ToolTip toolTip1;
+ private System.Windows.Forms.SaveFileDialog dlgSaveImage;
+ private System.Windows.Forms.Label lblUpscale;
+ private System.Windows.Forms.NumericUpDown nudUpscale;
+ private System.Windows.Forms.CheckBox chkTransparent;
+ private System.Windows.Forms.CheckBox chkBlackBG;
+ }
+}
\ No newline at end of file
diff --git a/McBitFont/FrameScreenshot.cs b/McBitFont/FrameScreenshot.cs
new file mode 100644
index 0000000..4abcf54
--- /dev/null
+++ b/McBitFont/FrameScreenshot.cs
@@ -0,0 +1,69 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Drawing.Imaging;
+using System.Linq;
+using System.Security.Policy;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using static McBitFont.MainForm;
+
+namespace McBitFont {
+ public partial class FrameScreenshot : Form {
+
+ private FrameMiniature f;
+
+ public FrameScreenshot(FrameMiniature frame) {
+ InitializeComponent();
+ f = frame;
+ }
+
+ private void btnOK_Click(object sender, EventArgs e) {
+ if (dlgSaveImage.ShowDialog() == DialogResult.OK) {
+ int upscale = (int)nudUpscale.Value;
+ int x, y;
+ bool transp = chkTransparent.Checked;
+ bool blackBG = chkBlackBG.Checked;
+
+ Bitmap bmp = new(f.width * upscale, f.height * upscale);
+ SolidBrush bb = new(Color.Black);
+ SolidBrush bw = new(Color.White);
+ using (Graphics g = Graphics.FromImage(bmp)) {
+ for (x = 0; x < f.width; x++) {
+ for (y = 0; y < f.height; y++) {
+ if (f.data[x, y]) {
+ if (!transp || (transp && !blackBG)) g.FillRectangle(bb, x * upscale, y * upscale, upscale, upscale);
+ } else
+ if (!transp || (transp && blackBG)) g.FillRectangle(bw, x * upscale, y * upscale, upscale, upscale);
+ }
+ }
+ }
+ bool err = false;
+ try {
+ bmp.Save(dlgSaveImage.FileName, ImageFormat.Png);
+ }
+ catch (Exception ex) {
+ err = true;
+ MessageBox.Show("There was an error during image save: " + ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ if (!err) MessageBox.Show("Screenshot has been saved!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information);
+
+ }
+ }
+
+ private void FrameScreenshot_Load(object sender, EventArgs e) {
+ btnOK.Focus();
+ }
+
+ private void btnClose_Click(object sender, EventArgs e) {
+ DialogResult = DialogResult.OK;
+ }
+
+ private void chkTransparent_CheckedChanged(object sender, EventArgs e) {
+ chkBlackBG.Enabled = chkTransparent.Checked;
+ }
+ }
+}
diff --git a/McBitFont/FrameScreenshot.resx b/McBitFont/FrameScreenshot.resx
new file mode 100644
index 0000000..8ece073
--- /dev/null
+++ b/McBitFont/FrameScreenshot.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 115, 17
+
+
\ No newline at end of file
diff --git a/McBitFont/McBitFont.csproj b/McBitFont/McBitFont.csproj
index 4034c37..945ed93 100644
--- a/McBitFont/McBitFont.csproj
+++ b/McBitFont/McBitFont.csproj
@@ -20,9 +20,9 @@
true
true
icon_64.ico
- 2.7.0.0
- 2.7.0.0
- $(VersionPrefix)2.7.0
+ 2.8.0.0
+ 2.8.0.0
+ $(VersionPrefix)2.8.0
Anton Mukhin
diff --git a/README.md b/README.md
index b10d6bd..4e7626c 100644
--- a/README.md
+++ b/README.md
@@ -64,3 +64,8 @@ Code Shift dialog
Font PNG export example

+
+Frame screenshot dialog
+
+
+
diff --git a/TODO.txt b/TODO.txt
index 5ec0a7a..8c118fc 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,10 +1,9 @@
Application:
- Consider migrating to WPF in order to make DPI aware UI
-V Cursor for rectangular selection tool
-V Icons for tool buttons
-V Tooltips now has keyboard shortcuts info
Functionality:
+V Screensot a frame function
+V Frame note field to store a frame description
Bugs:
-V Fix selection info: change comma to x
+
diff --git a/examples/CP437_Cyr_8x16.mbfont b/examples/CP437_Cyr_8x16.mbfont
index c63f85c..cfd58b4 100644
Binary files a/examples/CP437_Cyr_8x16.mbfont and b/examples/CP437_Cyr_8x16.mbfont differ
diff --git a/examples/Font_5x7_vw_narrow.mbfont b/examples/Font_5x7_vw_narrow.mbfont
index 4e71075..5ca0e44 100644
Binary files a/examples/Font_5x7_vw_narrow.mbfont and b/examples/Font_5x7_vw_narrow.mbfont differ
diff --git a/images/Screenshot_Frame-screenshot.png b/images/Screenshot_Frame-screenshot.png
new file mode 100644
index 0000000..c456ef0
Binary files /dev/null and b/images/Screenshot_Frame-screenshot.png differ
diff --git a/images/Screenshot_Main.png b/images/Screenshot_Main.png
index b748c63..25e4475 100644
Binary files a/images/Screenshot_Main.png and b/images/Screenshot_Main.png differ