public static void Restore(PolygonFont2d font, BinaryReader reader) { int version = reader.ReadInt32(); if (version != SerializerVersion) { throw new Exception("PolygonFont2d.Restore: invalid version!"); } int nc = reader.ReadInt32(); for (int ci = 0; ci < nc; ++ci) { int buflen = reader.ReadInt32(); byte[] stringbuf = reader.ReadBytes(buflen); string s = Encoding.Unicode.GetString(stringbuf); int numpolys = reader.ReadInt32(); GeneralPolygon2d[] polys = new GeneralPolygon2d[numpolys]; for (int k = 0; k < numpolys; ++k) { polys[k] = new GeneralPolygon2d(); gSerialization.Restore(polys[k], reader); } font.AddCharacter(s, polys); } }
public static PolygonFont2d ReadFont(Stream s) { var binReader = new BinaryReader(s); var newfont = new PolygonFont2d(); PolygonFont2d.Restore(newfont, binReader); return(newfont); }
public static PolygonFont2d ReadFont(string filename) { using (FileStream file_stream = File.Open(filename, FileMode.Open)) { BinaryReader binReader = new BinaryReader(file_stream); PolygonFont2d newfont = new PolygonFont2d(); PolygonFont2d.Restore(newfont, binReader); return(newfont); } }
public static void Store(PolygonFont2d font, BinaryWriter writer) { writer.Write(SerializerVersion); // version number int nc = font.Characters.Count; writer.Write((int)nc); foreach (var pair in font.Characters) { byte[] stringbuf = Encoding.Unicode.GetBytes(pair.Key); writer.Write((int)stringbuf.Length); writer.Write(stringbuf); CharacterInfo ci = pair.Value; writer.Write((int)ci.Polygons.Length); for (int k = 0; k < ci.Polygons.Length; ++k) { gSerialization.Store(ci.Polygons[k], writer); } } }