Пример #1
0
        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);
            }
        }
Пример #2
0
        public static PolygonFont2d ReadFont(Stream s)
        {
            var binReader = new BinaryReader(s);
            var newfont   = new PolygonFont2d();

            PolygonFont2d.Restore(newfont, binReader);
            return(newfont);
        }
Пример #3
0
 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);
     }
 }
Пример #4
0
        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);
                }
            }
        }