// Author: Everaldo Canuto everaldo.canuto@bol.com.br
// Sanjay Gupta (gsanjay@novell.com)
//
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
using System;
using System.Drawing;
using System.Runtime.InteropServices;
public abstract class FontCollection : IDisposable {
- //internal IFontCollection implementation;
internal IntPtr nativeFontCollection = IntPtr.Zero;
internal FontCollection ()
{
}
- internal FontCollection (IntPtr ptr)
+ internal FontCollection (IntPtr ptr)
{
nativeFontCollection = ptr;
}
public void Dispose()
{
Dispose (true);
- System.GC.SuppressFinalize (this);
+ GC.SuppressFinalize (true);
}
- [MonoTODO]
protected virtual void Dispose (bool disposing)
- {
- //Nothing for now
+ {
}
// properties
int found;
int returned;
Status status;
+ FontFamily[] families;
- Console.WriteLine("came to Families method of FontCollection");
-
- status = GDIPlus.GdipGetFontCollectionFamilyCount( nativeFontCollection, out found);
- if (status != Status.Ok){
- throw new Exception ("Error calling GDIPlus.GdipGetFontCollectionFamilyCount: " +status);
- }
-
- Console.WriteLine("FamilyFont count returned in Families method of FontCollection " + found);
-
- int nSize = Marshal.SizeOf(IntPtr.Zero);
- IntPtr dest = Marshal.AllocHGlobal(nSize* found);
-
- status = GDIPlus.GdipGetFontCollectionFamilyList( nativeFontCollection, found, dest, out returned);
- if (status != Status.Ok){
- Console.WriteLine("Error calling GDIPlus.GdipGetFontCollectionFamilyList: " +status);
- throw new Exception ("Error calling GDIPlus.GdipGetFontCollectionFamilyList: " +status);
- }
-
- IntPtr[] ptrAr = new IntPtr[returned];
-
- int pos = dest.ToInt32();
- for (int i=0; i<returned; i++, pos+=nSize)
- ptrAr[i] = (IntPtr) Marshal.PtrToStructure((IntPtr)pos, typeof(IntPtr));
-
- Marshal.FreeHGlobal(dest);
-
- FontFamily [] familyList = new FontFamily[returned];
- Console.WriteLine("No of FontFamilies returned in Families method of FontCollection " + returned);
- for( int i = 0 ; i < returned ; i++ )
- {
- Console.WriteLine("Handle returned " + ptrAr[i]);
- familyList [i] = new FontFamily(ptrAr[i]);
- }
+ status = GDIPlus.GdipGetFontCollectionFamilyCount (nativeFontCollection, out found);
+ GDIPlus.CheckStatus (status);
- return familyList;
+ int nSize = Marshal.SizeOf (IntPtr.Zero);
+ IntPtr dest = Marshal.AllocHGlobal (nSize * found);
+
+ status = GDIPlus.GdipGetFontCollectionFamilyList(nativeFontCollection, found, dest, out returned);
+
+ IntPtr[] ptrAr = new IntPtr [returned];
+ int pos = dest.ToInt32 ();
+ for ( int i = 0; i < returned ; i++, pos+=nSize)
+ ptrAr[i] = (IntPtr)Marshal.PtrToStructure ((IntPtr)pos, typeof(IntPtr));
+
+ Marshal.FreeHGlobal (dest);
+
+ families = new FontFamily [returned];
+ for ( int i = 0; i < returned; i++ )
+ families[i] = new FontFamily (ptrAr[i]);
+
+ return families;
}
}