2 // System.Drawing.Text.FontCollection.cs
4 // (C) 2002 Ximian, Inc. http://www.ximian.com
5 // Author: Everaldo Canuto everaldo.canuto@bol.com.br
6 // Sanjay Gupta (gsanjay@novell.com)
10 using System.Runtime.InteropServices;
12 namespace System.Drawing.Text {
14 public abstract class FontCollection : IDisposable {
16 internal IntPtr nativeFontCollection = IntPtr.Zero;
18 internal FontCollection ()
22 internal FontCollection ( IntPtr ptr )
24 nativeFontCollection = ptr;
33 protected virtual void Dispose (bool disposing)
38 public FontFamily[] Families
44 FontFamily[] families;
46 Console.WriteLine("nativeFontCollection " + nativeFontCollection);
48 status = GDIPlus.GdipGetFontCollectionFamilyCount (nativeFontCollection, out found);
50 int nSize = Marshal.SizeOf (IntPtr.Zero);
51 IntPtr dest = Marshal.AllocHGlobal (nSize * found);
53 status = GDIPlus.GdipGetFontCollectionFamilyList(nativeFontCollection, found, dest, out returned);
55 IntPtr[] ptrAr = new IntPtr [returned];
56 int pos = dest.ToInt32 ();
57 for ( int i = 0; i < returned ; i++, pos+=nSize)
58 ptrAr[i] = (IntPtr)Marshal.PtrToStructure ((IntPtr)pos, typeof(IntPtr));
60 Marshal.FreeHGlobal (dest);
62 families = new FontFamily [returned];
63 for ( int i = 0; i < returned; i++ )
64 families[i] = new FontFamily (ptrAr[i]);