示例#1
0
        /// <summary>
        /// Load type from xml stream
        /// </summary>
        /// <param name="stream"></param>
        /// <returns></returns>
        public static T DeserializeFromXml <T>(this Stream stream)
        {
            var reader = new StreamReader(stream);

            try {
                var serializer = new Xml.Serialization.XmlSerializer(typeof(T));
                return((T)serializer.Deserialize(reader));
            }
            finally {
                reader.Close();
            }
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="fontImage"></param>
        /// <param name="format">GHL format (FontBuilder)</param>
        public void Load(Bitmap fontImage, byte[] format)
        {
            var ser = new Xml.Serialization.XmlSerializer(typeof(font));

            using (var str = new System.IO.MemoryStream(format))
            {
                var font = (font)ser.Deserialize(str);
                textureList = new Dictionary <int, BitmapChar>();
                for (int i = 0; i < font.chars.Length; i++)
                {
                    var fChar = font.chars[i];

                    var bChar = new BitmapChar();
                    bChar.Id      = fChar.id[0];
                    bChar.Advance = fChar.advance;

                    var charRect = fChar.rect.Split(' ');
                    int charX    = Convert.ToInt32(charRect[0]);
                    int charY    = Convert.ToInt32(charRect[1]);
                    int charW    = Convert.ToInt32(charRect[2]);
                    int charH    = Convert.ToInt32(charRect[3]);

                    var offset = fChar.offset.Split(' ');
                    bChar.OffsetX = Convert.ToInt32(offset[0]);
                    bChar.OffsetY = Convert.ToInt32(offset[1]);

                    bChar.Texture = new Bitmap(charW, charH);
                    bChar.Texture.uTexture.name = (char)bChar.Id + "_GlyphTexture";
                    if (charW > 0 && charH > 0)
                    {
                    }

                    if (charW > 0 && charH > 0)
                    {
                        for (int y = charY, by = 0; by < charH; y++, by++)
                        {
                            for (int x = charX, bx = 0; bx < charW; x++, bx++)
                            {
                                var c1 = fontImage.GetPixel(x, y);
                                bChar.Texture.SetPixel(bx, by, c1);
                            }
                        }
                    }

                    bChar.Texture.Apply();
                    textureList.Add(bChar.Id, bChar);
                }
            }

            Loaded = true;
        }
示例#3
0
        /// <summary>
        /// Load type from xml stream
        /// </summary>
        /// <param name="stream"></param>
        /// <returns></returns>
        public static T DeserializeFromXml <T>(this Stream stream)
        {
            var reader = new StreamReader(stream);

            try {
                var serializer = new Xml.Serialization.XmlSerializer(typeof(T));
                var xmlReader  = new XmlTextReader(reader)
                {
                    DtdProcessing = DtdProcessing.Prohibit,
                    XmlResolver   = null
                };
                return((T)serializer.Deserialize(xmlReader));
            }
            finally {
                reader.Close();
            }
        }