Beispiel #1
0
 private static void WriteFonts(IList <KeyValuePair <string, GMFont> > _data, Stream _s, IFF _iff)
 {
     WriteDataKVP(_data, _s, _iff, delegate(KeyValuePair <string, GMFont> _kvp, Stream __s, IFF __iff, long __index)
     {
         __s.PatchOffset(__index);
         __iff.AddString(__s, _kvp.Key);
         GMFont value = _kvp.Value;
         __iff.AddString(__s, value.Name);
         __s.WriteInteger(value.Size);
         __s.WriteBoolean(value.Bold);
         __s.WriteBoolean(value.Italic);
         //__s.WriteInteger(value.First | (value.CharSet << 16) | (value.AntiAlias << 24));
         //CharSet and AntiAliasing are NOT supported by PSP runner!
         __s.WriteInteger(value.First);
         __s.WriteInteger(value.Last);
         ms_tpageSprites.BeginGroup(_kvp.Key);
         TexturePageEntry texturePageEntry = ms_tpageSprites.AddImage(value.Bitmap, false, true);
         ms_tpageSprites.EndGroup();
         __iff.AddPatch(__s, texturePageEntry);
         double num  = 1.0;
         double num2 = 1.0;
         if (texturePageEntry.W != value.Bitmap.Width || texturePageEntry.H != value.Bitmap.Height)
         {
             num  = (double)texturePageEntry.W / (double)value.Bitmap.Width;
             num2 = (double)texturePageEntry.H / (double)value.Bitmap.Height;
         }
         num  = 1.0 / num;
         num2 = 1.0 / num2;
         __s.WriteSingle((float)num);
         __s.WriteSingle((float)num2);
         __s.WriteInteger(value.Glyphs.Count);
         foreach (GMGlyph glyph in value.Glyphs)
         {
             __s.WriteInteger((int)(((double)glyph.X + num - 1.0) / num));
             __s.WriteInteger((int)(((double)glyph.Y + num2 - 1.0) / num2));
             __s.WriteInteger((int)(((double)glyph.W + num - 1.0) / num));
             __s.WriteInteger((int)(((double)glyph.H + num2 - 1.0) / num2));
             __s.WriteInteger((int)(((double)glyph.Shift + num - 1.0) / num));
             __s.WriteInteger((int)(((double)glyph.Offset + num - 1.0) / num));
         }
     });
 }
Beispiel #2
0
        public void Font_Load(Stream _s)
        {
            int num  = _s.ReadInteger();
            int num2 = _s.ReadInteger();

            for (int i = 0; i < num2; i++)
            {
                Stream s = _s;
                if (num == 800)
                {
                    s = _s.ReadStreamC();
                }
                bool flag = s.ReadBoolean();
                KeyValuePair <string, GMFont> item = default(KeyValuePair <string, GMFont>);
                if (flag)
                {
                    string key   = s.ReadString();
                    GMFont value = new GMFont(this, s);
                    item = new KeyValuePair <string, GMFont>(key, value);
                }
                Fonts.Add(item);
            }
        }