97 lines
3.1 KiB
C#
97 lines
3.1 KiB
C#
using System.IO;
|
|
using System.Reflection;
|
|
using System.Runtime.Serialization;
|
|
using System.Runtime.Serialization.Formatters.Binary;
|
|
|
|
namespace SavedFontsConverter
|
|
{
|
|
public partial class Form1 : Form
|
|
{
|
|
|
|
//sealed class PreMergeToMergedDeserializationBinder : SerializationBinder {
|
|
// public override Type BindToType(string assemblyName, string typeName) {
|
|
// Type typeToDeserialize = null;
|
|
|
|
// // For each assemblyName/typeName that you want to deserialize to
|
|
// // a different type, set typeToDeserialize to the desired type.
|
|
// //String exeAssembly = Assembly.GetExecutingAssembly().FullName;
|
|
// String exeAssembly = "McBitFont, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null";
|
|
// //MessageBox.Show(exeAssembly);
|
|
|
|
// // The following line of code returns the type.
|
|
// typeToDeserialize = Type.GetType(String.Format("{0}, {1}", typeName, exeAssembly));
|
|
|
|
// return typeToDeserialize;
|
|
// }
|
|
//}
|
|
|
|
public class CustomSerializationBinder : SerializationBinder {
|
|
public override Type BindToType(string assemblyName, string typeName) {
|
|
Assembly.GetExecutingAssembly().GetType(typeName)
|
|
return Assembly.GetExecutingAssembly().GetType(typeName);
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public struct FrameMiniature
|
|
{
|
|
public FrameMiniature(int cc, int ww, int hh)
|
|
{
|
|
code = cc;
|
|
width = ww;
|
|
height = hh;
|
|
data = new bool[ww, hh];
|
|
}
|
|
public int code;
|
|
public int width;
|
|
public int height;
|
|
public bool[,] data;
|
|
};
|
|
|
|
[Serializable]
|
|
public struct SaveBlock
|
|
{
|
|
public bool monospaced;
|
|
public int codepage;
|
|
public int baseline;
|
|
public List<FrameMiniature> frames;
|
|
}
|
|
|
|
public Form1()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
|
|
private void oldLoad(string filename)
|
|
{
|
|
// Disable the warning.
|
|
#pragma warning disable SYSLIB0011
|
|
|
|
SaveBlock sav;
|
|
BinaryFormatter formatter = new BinaryFormatter();
|
|
formatter.Binder = new CustomSerializationBinder();
|
|
|
|
using (FileStream fs = File.Open(filename, FileMode.Open)) {
|
|
sav = (SaveBlock)formatter.Deserialize(fs);
|
|
fs.Close();
|
|
}
|
|
tbInfo.Clear();
|
|
tbInfo.AppendText("Monospaced: " + sav.monospaced.ToString() + "\n");
|
|
tbInfo.AppendText("Codepage: " + sav.codepage.ToString() + "\n");
|
|
tbInfo.AppendText("Frames: " + sav.frames.Count.ToString() + "\n");
|
|
// Re-enable the warning.
|
|
#pragma warning restore SYSLIB0011
|
|
}
|
|
|
|
private void btnOpen_Click(object sender, EventArgs e)
|
|
{
|
|
if (dlgOpen.ShowDialog() == DialogResult.OK)
|
|
{
|
|
lblPathOriginal.Text = dlgOpen.FileName;
|
|
oldLoad(dlgOpen.FileName);
|
|
}
|
|
}
|
|
}
|
|
}
|