Index: Core/Common/src/Core.Common.Util/Drawing/FontHelper.cs
===================================================================
diff -u
--- Core/Common/src/Core.Common.Util/Drawing/FontHelper.cs (revision 0)
+++ Core/Common/src/Core.Common.Util/Drawing/FontHelper.cs (revision c0a586e98573119668b51c29185aab183b580e40)
@@ -0,0 +1,57 @@
+// Copyright (C) Stichting Deltares 2021. All rights reserved.
+//
+// This file is part of Riskeer.
+//
+// Riskeer is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+using System.Drawing;
+using System.Drawing.Text;
+using System.Runtime.InteropServices;
+
+namespace Core.Common.Util.Drawing
+{
+ ///
+ /// Helper class for related logic.
+ ///
+ public static class FontHelper
+ {
+ ///
+ /// Creates a based on the provided byte array.
+ ///
+ /// The data to create the from.
+ /// The created .
+ public static Font CreateFont(byte[] fontData)
+ {
+ uint dummy = 0;
+ var fonts = new PrivateFontCollection();
+
+ IntPtr fontPtr = Marshal.AllocCoTaskMem(fontData.Length);
+ Marshal.Copy(fontData, 0, fontPtr, fontData.Length);
+ fonts.AddMemoryFont(fontPtr, fontData.Length);
+ AddFontMemResourceEx(fontPtr, (uint) fontData.Length, IntPtr.Zero, ref dummy);
+ Marshal.FreeCoTaskMem(fontPtr);
+
+ return new Font(fonts.Families[0], 14.0F);
+ }
+
+ [DllImport("gdi32.dll")]
+ private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont,
+ IntPtr pdv, [In] ref uint pcFonts);
+ }
+}
\ No newline at end of file
Index: Core/Components/src/Core.Components.DotSpatial.Forms/MapControl.cs
===================================================================
diff -u -re25cbbd88e41c07ec5be2ba2f686f2e85e0f3706 -rc0a586e98573119668b51c29185aab183b580e40
--- Core/Components/src/Core.Components.DotSpatial.Forms/MapControl.cs (.../MapControl.cs) (revision e25cbbd88e41c07ec5be2ba2f686f2e85e0f3706)
+++ Core/Components/src/Core.Components.DotSpatial.Forms/MapControl.cs (.../MapControl.cs) (revision c0a586e98573119668b51c29185aab183b580e40)
@@ -22,11 +22,10 @@
using System;
using System.Collections.Generic;
using System.Drawing;
-using System.Drawing.Text;
using System.Linq;
-using System.Runtime.InteropServices;
using System.Windows.Forms;
using Core.Common.Base;
+using Core.Common.Util.Drawing;
using Core.Components.DotSpatial.Forms.Properties;
using Core.Components.DotSpatial.Layer;
using Core.Components.DotSpatial.Layer.BruTile;
@@ -56,7 +55,6 @@
private readonly List drawnMapDataList = new List();
private readonly MapControlBackgroundLayerStatus backgroundLayerStatus = new MapControlBackgroundLayerStatus();
private readonly List mapDataLayersToUpdate = new List();
- private readonly PrivateFontCollection fonts = new PrivateFontCollection();
private Map map;
private bool removing;
@@ -73,7 +71,7 @@
{
InitializeComponent();
- InitializeFont();
+ SetFonts();
InitializeMap();
@@ -179,22 +177,10 @@
}
}
- [DllImport("gdi32.dll")]
- private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont,
- IntPtr pdv, [In] ref uint pcFonts);
-
- private void InitializeFont()
+ private void SetFonts()
{
- byte[] fontData = Resources.Deltares_Riskeer_Symbols;
- IntPtr fontPtr = Marshal.AllocCoTaskMem(fontData.Length);
- Marshal.Copy(fontData, 0, fontPtr, fontData.Length);
+ Font font = FontHelper.CreateFont(Resources.Deltares_Riskeer_Symbols);
- uint dummy = 0;
- fonts.AddMemoryFont(fontPtr, Resources.Deltares_Riskeer_Symbols.Length);
- AddFontMemResourceEx(fontPtr, (uint) Resources.Deltares_Riskeer_Symbols.Length, IntPtr.Zero, ref dummy);
- Marshal.FreeCoTaskMem(fontPtr);
-
- var font = new Font(fonts.Families[0], 14.0F);
panToolStripButton.Font = font;
zoomToRectangleToolStripButton.Font = font;
zoomToVisibleLayersToolStripButton.Font = font;