diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index c99abea..d858208 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -124,6 +124,10 @@ pnlRightButtons = new System.Windows.Forms.Panel(); lblBrush = new System.Windows.Forms.Label(); pnlInfo = new System.Windows.Forms.Panel(); + cmBaseline = new System.Windows.Forms.ContextMenuStrip(components); + tsmiBaseline = new System.Windows.Forms.ToolStripMenuItem(); + tsmiMidline = new System.Windows.Forms.ToolStripMenuItem(); + tsmiTopline = new System.Windows.Forms.ToolStripMenuItem(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -132,6 +136,7 @@ ((System.ComponentModel.ISupportInitialize)nudBrush).BeginInit(); pnlRightButtons.SuspendLayout(); pnlInfo.SuspendLayout(); + cmBaseline.SuspendLayout(); SuspendLayout(); // // dotPanel @@ -688,7 +693,7 @@ undoToolStripMenuItem.Image = Properties.Resources.arrow_undo; undoToolStripMenuItem.Name = "undoToolStripMenuItem"; undoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z; - undoToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + undoToolStripMenuItem.Size = new System.Drawing.Size(164, 22); undoToolStripMenuItem.Text = "Undo"; undoToolStripMenuItem.ToolTipText = "Undo last canvas change"; undoToolStripMenuItem.Click += undoToolStripMenuItem_Click; @@ -698,7 +703,7 @@ redoToolStripMenuItem.Image = Properties.Resources.arrow_redo; redoToolStripMenuItem.Name = "redoToolStripMenuItem"; redoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y; - redoToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + redoToolStripMenuItem.Size = new System.Drawing.Size(164, 22); redoToolStripMenuItem.Text = "Redo"; redoToolStripMenuItem.ToolTipText = "Redo canvas change"; redoToolStripMenuItem.Click += redoToolStripMenuItem_Click; @@ -709,7 +714,7 @@ copyToolStripMenuItem.Name = "copyToolStripMenuItem"; copyToolStripMenuItem.ShortcutKeyDisplayString = ""; copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C; - copyToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + copyToolStripMenuItem.Size = new System.Drawing.Size(164, 22); copyToolStripMenuItem.Text = "Copy"; copyToolStripMenuItem.ToolTipText = "Copy current symbol to clipboard"; copyToolStripMenuItem.Click += copyToolStripMenuItem_Click; @@ -720,7 +725,7 @@ pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; pasteToolStripMenuItem.ShortcutKeyDisplayString = ""; pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V; - pasteToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + pasteToolStripMenuItem.Size = new System.Drawing.Size(164, 22); pasteToolStripMenuItem.Text = "Paste"; pasteToolStripMenuItem.ToolTipText = "Paste from clipboard to current symbol"; pasteToolStripMenuItem.Click += pasteToolStripMenuItem_Click; @@ -730,7 +735,7 @@ selectToolStripMenuItem.Image = Properties.Resources.fam_rectt; selectToolStripMenuItem.Name = "selectToolStripMenuItem"; selectToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R; - selectToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + selectToolStripMenuItem.Size = new System.Drawing.Size(164, 22); selectToolStripMenuItem.Text = "Select"; selectToolStripMenuItem.ToolTipText = "Toggle Rectangle selection tool"; selectToolStripMenuItem.Click += selectToolStripMenuItem_Click; @@ -741,7 +746,7 @@ selectAllToolStripMenuItem.Image = Properties.Resources.arrow_out; selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem"; selectAllToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A; - selectAllToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + selectAllToolStripMenuItem.Size = new System.Drawing.Size(164, 22); selectAllToolStripMenuItem.Text = "Select All"; selectAllToolStripMenuItem.ToolTipText = "Select entire canvas"; selectAllToolStripMenuItem.Click += selectAllToolStripMenuItem_Click; @@ -1021,18 +1026,18 @@ // // btnBaseline // - btnBaseline.Image = Properties.Resources.fam_base; - btnBaseline.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; + btnBaseline.Image = Properties.Resources.fam_lines; btnBaseline.Location = new System.Drawing.Point(94, 81); btnBaseline.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); btnBaseline.Name = "btnBaseline"; btnBaseline.Size = new System.Drawing.Size(88, 27); btnBaseline.TabIndex = 18; - btnBaseline.Text = " Baseline"; + btnBaseline.Text = " Lines"; btnBaseline.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; toolTip1.SetToolTip(btnBaseline, "Set irtual base line for the font"); btnBaseline.UseVisualStyleBackColor = true; btnBaseline.Click += btnBaseline_Click; + btnBaseline.Paint += btnBaseline_Paint; // // toolTip1 // @@ -1207,6 +1212,36 @@ pnlInfo.Size = new System.Drawing.Size(103, 154); pnlInfo.TabIndex = 28; // + // cmBaseline + // + cmBaseline.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { tsmiTopline, tsmiMidline, tsmiBaseline }); + cmBaseline.Name = "cmBaseline"; + cmBaseline.Size = new System.Drawing.Size(181, 92); + // + // tsmiBaseline + // + tsmiBaseline.Image = Properties.Resources.fam_base; + tsmiBaseline.Name = "tsmiBaseline"; + tsmiBaseline.Size = new System.Drawing.Size(180, 22); + tsmiBaseline.Text = "Base line"; + tsmiBaseline.Click += tsmiBaseline_Click; + // + // tsmiMidline + // + tsmiMidline.Image = Properties.Resources.fam_mid; + tsmiMidline.Name = "tsmiMidline"; + tsmiMidline.Size = new System.Drawing.Size(180, 22); + tsmiMidline.Text = "Mid line"; + tsmiMidline.Click += tsmiMidline_Click; + // + // tsmiTopline + // + tsmiTopline.Image = Properties.Resources.fam_top; + tsmiTopline.Name = "tsmiTopline"; + tsmiTopline.Size = new System.Drawing.Size(180, 22); + tsmiTopline.Text = "Top line"; + tsmiTopline.Click += tsmiTopline_Click; + // // MainForm // AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); @@ -1244,6 +1279,7 @@ pnlRightButtons.PerformLayout(); pnlInfo.ResumeLayout(false); pnlInfo.PerformLayout(); + cmBaseline.ResumeLayout(false); ResumeLayout(false); PerformLayout(); @@ -1350,6 +1386,10 @@ private System.Windows.Forms.Label lblBrush; private System.Windows.Forms.ToolStripMenuItem frameScreenshotToolStripMenuItem; private System.Windows.Forms.TextBox tbFrameNote; + private System.Windows.Forms.ContextMenuStrip cmBaseline; + private System.Windows.Forms.ToolStripMenuItem tsmiBaseline; + private System.Windows.Forms.ToolStripMenuItem tsmiMidline; + private System.Windows.Forms.ToolStripMenuItem tsmiTopline; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 44fb827..01d977b 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -45,11 +45,22 @@ namespace McBitFont { [Key(5)] public int codepage; [Key(6)] - public int baseline; + public int baseline1; + [Key(9)] + public int baseline2; + [Key(10)] + public int baseline3; [Key(7)] public List frames; } + public enum SetLines { + SL_None = 0, + SL_Base, + SL_Mid, + SL_Top + } + public FrameMiniature f; public List frames = new List(); //private CanvasHistory history = new(); @@ -62,14 +73,14 @@ namespace McBitFont { public bool monospaced = false; private bool modified = false; private bool prjModified = false; - public const string version = "2.8"; + public const string version = "2.9"; public string prjName = "Untitled"; public string prjFileName = ""; public int codepage = 1251; private FrameMiniature fbuf; private readonly DataFormats.Format clpbFormat = DataFormats.GetFormat("McBitFontFrame"); - private int baseline = 0; - private bool set_base = false; + private int baseline1 = 0, baseline2 = 0, baseline3 = 0; + private SetLines set_lines = SetLines.SL_None; private Point selection1, selection2; private Point[,] sidebarLocs = new Point[2, 3]; @@ -173,7 +184,7 @@ namespace McBitFont { SideBarRecalc(); // Create default cursor - dotPanel.Cursor = McCursor.GetCursor((int)nudBrush.Value, cellSize, gap); + SetPanelCursor(); } @@ -351,7 +362,7 @@ namespace McBitFont { vScroll.Enabled = true; } - if (!chkRectSelect.Checked) dotPanel.Cursor = McCursor.GetCursor((int)nudBrush.Value, cellSize, gap); + SetPanelCursor(); dotPanel.Refresh(); } @@ -490,16 +501,22 @@ namespace McBitFont { mouseDownMiddle = true; mouseX = e.X; mouseY = e.Y; + SetPanelCursor(); } if (mouseDownMiddle && e.Button == MouseButtons.None) { mouseDownMiddle = false; + SetPanelCursor(); } } // Moving baseline Rectangle rect1, rect2; - if (set_base) { + if (set_lines > SetLines.SL_None) { + int baseline = 0; + if (set_lines == SetLines.SL_Base) baseline = baseline1; + if (set_lines == SetLines.SL_Mid) baseline = baseline2; + if (set_lines == SetLines.SL_Top) baseline = baseline3; int yy = pixelOffset + baseline * (cellSize + gap) - vScroll.Value - 1; rect1 = new Rectangle(pixelOffset, yy, w, 2); @@ -511,11 +528,17 @@ namespace McBitFont { yy = pixelOffset + baseline * (cellSize + gap) - vScroll.Value - 1; rect2 = new Rectangle(pixelOffset, yy, w, 2); + if (set_lines == SetLines.SL_Base) baseline1 = baseline; + if (set_lines == SetLines.SL_Mid) baseline2 = baseline; + if (set_lines == SetLines.SL_Top) baseline3 = baseline; + dotPanel.Invalidate(rect1); dotPanel.Invalidate(rect2); if (e.Button == MouseButtons.Left) { - set_base = false; + set_lines = SetLines.SL_None; + SetPanelCursor(); + SetModified(true, true); return; } } @@ -534,7 +557,7 @@ namespace McBitFont { selection2.Y = j; } } - if (e.Button != MouseButtons.None && !mouseDown) { + if ((e.Button == MouseButtons.Left || e.Button == MouseButtons.Right) && !mouseDown) { // Started to move a mouse with button held mouseDown = true; if (rectSel) { @@ -774,21 +797,36 @@ namespace McBitFont { // Fill the cell with color if (f.data[i, j]) sb = sbb; else sb = sbw; - g.FillRectangle(sb, x, (baseline == j ? y + 1 : y), cellSize, (baseline == j ? cellSize - 1 : cellSize)); + g.FillRectangle(sb, x, ((baseline1 == j || baseline2 == j || baseline3 == j) ? y + 1 : y), cellSize, ((baseline1 == j || baseline2 == j || baseline3 == j) ? cellSize - 1 : cellSize)); } } - // Draw the baseline - if (baseline > 0 && gap > 0) { + // Draw the base lines + if (baseline1 > 0 || baseline2 > 0 || baseline3 > 0) { x = pixelOffset - hScroll.Value; - y = pixelOffset + baseline * (cellSize + gap) - vScroll.Value; - - Pen sbBase = new(Color.Blue, 2); - g.DrawLine(sbBase, x, y, w, y); + // Base line + if (baseline1 > 0) { + Pen sbBase = new(Color.Blue, gap > 0 ? 2 : 1); + y = pixelOffset + baseline1 * (cellSize + gap) - vScroll.Value; + g.DrawLine(sbBase, x, y, w, y); + } + // Mid line + if (baseline2 > 0) { + Pen sbBase = new(Color.MediumPurple, gap > 0 ? 2 : 1); + y = pixelOffset + baseline2 * (cellSize + gap) - vScroll.Value; + g.DrawLine(sbBase, x, y, w, y); + } + // Top line + if (baseline3 > 0) { + Pen sbBase = new(Color.FromArgb(0x16, 0x8b, 0x76), gap > 0 ? 2 : 1); + y = pixelOffset + baseline3 * (cellSize + gap) - vScroll.Value; + g.DrawLine(sbBase, x, y, w, y); + } } + // Draw the Rect selection - if (chkRectSelect.Checked) { + if (chkRectSelect.Checked || CAKeyDown) { Point p1 = new(selection1.X, selection1.Y); Point p2 = new(selection2.X, selection2.Y); NormPoints(ref p1, ref p2); @@ -903,7 +941,9 @@ namespace McBitFont { f = CopyFrame(frames.First()); form.Dispose(); - baseline = 0; + baseline1 = 0; + baseline2 = 0; + baseline3 = 0; prjName = "Untitled"; prjFileName = ""; @@ -1004,7 +1044,9 @@ namespace McBitFont { } monospaced = sav.monospaced; codepage = sav.codepage; - baseline = sav.baseline; + baseline1 = sav.baseline1; + baseline2 = sav.baseline2; + baseline3 = sav.baseline3; lblType.Text = monospaced ? "Monospaced" : "Variable width / Single"; frames = sav.frames; makeVarWidthToolStripMenuItem.Visible = monospaced; @@ -1053,7 +1095,9 @@ namespace McBitFont { sav.monospaced = monospaced; sav.frames = frames; sav.codepage = codepage; - sav.baseline = baseline; + sav.baseline1 = baseline1; + sav.baseline2 = baseline2; + sav.baseline3 = baseline3; using (Stream ms = File.OpenWrite(filename)) { MessagePackSerializer.Serialize(ms, sav); @@ -1187,7 +1231,7 @@ namespace McBitFont { } private void btnBaseline_Click(object sender, EventArgs e) { - set_base = !set_base; + cmBaseline.Show(btnBaseline, new Point(0, btnBaseline.Height)); } // Check modified / Save frame @@ -1403,8 +1447,7 @@ namespace McBitFont { lblSelection.Visible = lblSelectionLabel.Visible = chkRectSelect.Checked; selectAllToolStripMenuItem.Enabled = chkRectSelect.Checked; - if (chkRectSelect.Checked) dotPanel.Cursor = McCursor.GetCursorSelect(); - else dotPanel.Cursor = McCursor.GetCursor((int)nudBrush.Value, cellSize, gap); + SetPanelCursor(); dotPanel.Refresh(); } @@ -1534,7 +1577,7 @@ namespace McBitFont { } private void TestFont_Click(object sender, EventArgs e) { - var tester = new FontTester(codepage, dotHeight, baseline, frames); + var tester = new FontTester(codepage, dotHeight, baseline1, frames); tester.ShowDialog(); } @@ -1700,7 +1743,7 @@ namespace McBitFont { } private void nudBrush_ValueChanged(object sender, EventArgs e) { - if (!chkRectSelect.Checked) dotPanel.Cursor = McCursor.GetCursor((int)nudBrush.Value, cellSize, gap); + SetPanelCursor(); } private void frameScreenshotToolStripMenuItem_Click(object sender, EventArgs e) { @@ -1720,9 +1763,9 @@ namespace McBitFont { private void MainForm_KeyDown(object sender, KeyEventArgs e) { if (CAKeyDown) return; if (chkRectSelect.Checked && e.Control && e.Alt) { - //MessageBox.Show("Down: Alt!"); chkRectSelect.Checked = false; CAKeyDown = true; + dotPanel.Invalidate(); e.Handled = true; } } @@ -1734,5 +1777,44 @@ namespace McBitFont { e.Handled = true; } } + + private void btnBaseline_Paint(object sender, PaintEventArgs e) { + Button btn = (sender as Button); + int arrowX = btn.ClientRectangle.Width - btn.Padding.Right - 14; + int arrowY = btn.ClientRectangle.Height / 2 - 1; + + Color color = btn.Enabled ? ForeColor : SystemColors.ControlDark; + using Brush brush = new SolidBrush(color); + using Pen pen = new Pen(color); + Point[] arrow = [new Point(arrowX, arrowY), new Point(arrowX + 7, arrowY), new Point(arrowX + 3, arrowY + 4)]; + + e.Graphics.FillPolygon(brush, arrow); + e.Graphics.DrawLine(pen, arrowX - 5, btn.ClientRectangle.Top + 4, arrowX - 5, btn.ClientRectangle.Bottom - 4); + } + + private void tsmiBaseline_Click(object sender, EventArgs e) { + if (set_lines == SetLines.SL_Base) set_lines = SetLines.SL_None; + else set_lines = SetLines.SL_Base; + SetPanelCursor(); + } + + private void tsmiMidline_Click(object sender, EventArgs e) { + if (set_lines == SetLines.SL_Mid) set_lines = SetLines.SL_None; + else set_lines = SetLines.SL_Mid; + SetPanelCursor(); + } + + private void tsmiTopline_Click(object sender, EventArgs e) { + if (set_lines == SetLines.SL_Top) set_lines = SetLines.SL_None; + else set_lines = SetLines.SL_Top; + SetPanelCursor(); + } + + private void SetPanelCursor() { + if (mouseDownMiddle) dotPanel.Cursor = McCursor.GetCursorDrag(); + else if (set_lines > SetLines.SL_None) dotPanel.Cursor = McCursor.GetCursorLines(); + else if (chkRectSelect.Checked) dotPanel.Cursor = McCursor.GetCursorSelect(); + else dotPanel.Cursor = McCursor.GetCursor((int)nudBrush.Value, cellSize, gap); + } } } diff --git a/McBitFont/Form1.resx b/McBitFont/Form1.resx index 5800d67..293aef1 100644 --- a/McBitFont/Form1.resx +++ b/McBitFont/Form1.resx @@ -138,6 +138,9 @@ 644, 17 + + 763, 17 + diff --git a/McBitFont/McBitFont.csproj b/McBitFont/McBitFont.csproj index 945ed93..094edfd 100644 --- a/McBitFont/McBitFont.csproj +++ b/McBitFont/McBitFont.csproj @@ -20,9 +20,9 @@ true true icon_64.ico - 2.8.0.0 - 2.8.0.0 - $(VersionPrefix)2.8.0 + 2.9.0.0 + 2.9.0.0 + $(VersionPrefix)2.9.0 Anton Mukhin diff --git a/McBitFont/McCursor.cs b/McBitFont/McCursor.cs index a2cb6e4..d93d40f 100644 --- a/McBitFont/McCursor.cs +++ b/McBitFont/McCursor.cs @@ -127,5 +127,46 @@ namespace McBitFont { return CreateCursorNoResize(bmp, 1, 1); } + public static Cursor GetCursorLines() { + Point[] arrow = { new(1, 1), new(12, 12), new(11, 13), new(6, 13), new(2, 17), new(1, 16) }; + Rectangle line = new(0, 18, 20, 5); + + Bitmap bmp = new(21, 24); + Pen pb = new(Color.Black, 1); + Pen pw = new(Color.White, 1); + SolidBrush bw = new(Color.White); + SolidBrush bb = new(Color.Black); + using (Graphics g = Graphics.FromImage(bmp)) { + g.FillPolygon(bw, arrow); + g.DrawPolygon(pb, arrow); + g.FillRectangle(bb, line); + g.DrawRectangle(pw, line); + } + + return CreateCursorNoResize(bmp, 1, 1); + } + + public static Cursor GetCursorDrag() { + Point[] arrow1 = { new(11, 0), new(15, 4), new(13, 4), new(13, 7), new(9, 7), new(9, 4), new(7, 4) }; + Point[] arrow2 = { new(22, 11), new(18, 15), new(18, 13), new(15, 13), new(15, 9), new(18, 9), new(18, 7) }; + Point[] arrow3 = { new(11, 22), new(7, 18), new(9, 18), new(9, 15), new(13, 15), new(13, 18), new(15, 18) }; + Point[] arrow4 = { new(0, 11), new(4, 7), new(4, 9), new(7, 9), new(7, 13), new(4, 13), new(4, 15) }; + + Bitmap bmp = new(23, 23); + Pen pb = new(Color.Black, 1); + SolidBrush bw = new(Color.White); + using (Graphics g = Graphics.FromImage(bmp)) { + g.FillPolygon(bw, arrow1); + g.DrawPolygon(pb, arrow1); + g.FillPolygon(bw, arrow2); + g.DrawPolygon(pb, arrow2); + g.FillPolygon(bw, arrow3); + g.DrawPolygon(pb, arrow3); + g.FillPolygon(bw, arrow4); + g.DrawPolygon(pb, arrow4); + } + return CreateCursorNoResize(bmp, 11, 11); + } + } } diff --git a/McBitFont/Properties/Resources.Designer.cs b/McBitFont/Properties/Resources.Designer.cs index 80aefdd..17896b4 100644 --- a/McBitFont/Properties/Resources.Designer.cs +++ b/McBitFont/Properties/Resources.Designer.cs @@ -180,6 +180,26 @@ namespace McBitFont.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fam_lines { + get { + object obj = ResourceManager.GetObject("fam_lines", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fam_mid { + get { + object obj = ResourceManager.GetObject("fam_mid", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -190,6 +210,16 @@ namespace McBitFont.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap fam_top { + get { + object obj = ResourceManager.GetObject("fam_top", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/McBitFont/Properties/Resources.resx b/McBitFont/Properties/Resources.resx index b1cad7e..060b557 100644 --- a/McBitFont/Properties/Resources.resx +++ b/McBitFont/Properties/Resources.resx @@ -118,6 +118,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\fam_mid.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\arrow_left.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -130,6 +133,9 @@ ..\Resources\Famfamfam-Silk-Page-paste.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\folder_table.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\folder_open.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -145,12 +151,12 @@ ..\Resources\font.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\picture_save.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\redo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Famfamfam-Silk-Disk.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -169,9 +175,6 @@ ..\Resources\Canvas_Clear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\text_letterspacing2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\arrow_up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -196,6 +199,9 @@ ..\Resources\icon_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\fam_lines.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\tick.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -211,17 +217,20 @@ ..\Resources\fam_rectt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Famfamfam-Silk-Page-white.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\arrow_turn_right.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Famfamfam-Silk-Page-white.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Famfamfam-Silk-Disk.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\folder_table.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\text_letterspacing2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Canvas_Fill.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -244,7 +253,7 @@ ..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\picture_save.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\fam_top.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/McBitFont/Resources/fam_lines.png b/McBitFont/Resources/fam_lines.png new file mode 100644 index 0000000..437bfc0 Binary files /dev/null and b/McBitFont/Resources/fam_lines.png differ diff --git a/McBitFont/Resources/fam_mid.png b/McBitFont/Resources/fam_mid.png new file mode 100644 index 0000000..3b82f68 Binary files /dev/null and b/McBitFont/Resources/fam_mid.png differ diff --git a/McBitFont/Resources/fam_top.png b/McBitFont/Resources/fam_top.png new file mode 100644 index 0000000..06704b6 Binary files /dev/null and b/McBitFont/Resources/fam_top.png differ diff --git a/TODO.txt b/TODO.txt index e4ec459..166aa22 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,11 +1,14 @@ Application: - Consider migrating to WPF in order to make DPI aware UI +V Special cursor to indicate baseline set +V Special cursor when dragging canvas with middle mouse button Functionality: V Show note field in Export comments V When Rectangle selection tool is active hold Ctrl+Alt to temporary disable it to be able to draw V Frame screenshot can be copied to clipboard with some limitations (no transparency) -- Beside Baseline, also make top and mid lines +V Beside Baseline, also make top and mid lines Bugs: V Fixed "Frame modified" check. It leaves modified flag if user refused to save changes. +V Middle mouse button tries to change selection while dragging canvas with rectSelection tool active \ No newline at end of file diff --git a/examples/Cursors.mbfont b/examples/Cursors.mbfont new file mode 100644 index 0000000..ee26711 Binary files /dev/null and b/examples/Cursors.mbfont differ diff --git a/examples/Font_9x17_Alagard_cyr_vw.mbfont b/examples/Font_9x17_Alagard_cyr_vw.mbfont index 4720ecd..8e4603e 100644 Binary files a/examples/Font_9x17_Alagard_cyr_vw.mbfont and b/examples/Font_9x17_Alagard_cyr_vw.mbfont differ diff --git a/examples/SelectionCursor.mbfont b/examples/SelectionCursor.mbfont deleted file mode 100644 index dcd90e2..0000000 Binary files a/examples/SelectionCursor.mbfont and /dev/null differ diff --git a/icons/famfamfam/fam_lines.png b/icons/famfamfam/fam_lines.png new file mode 100644 index 0000000..437bfc0 Binary files /dev/null and b/icons/famfamfam/fam_lines.png differ diff --git a/icons/famfamfam/fam_mid.png b/icons/famfamfam/fam_mid.png new file mode 100644 index 0000000..3b82f68 Binary files /dev/null and b/icons/famfamfam/fam_mid.png differ diff --git a/icons/famfamfam/fam_top.png b/icons/famfamfam/fam_top.png new file mode 100644 index 0000000..06704b6 Binary files /dev/null and b/icons/famfamfam/fam_top.png differ