merge -r 58060:58217
[mono.git] / mcs / class / System.Drawing / System.Drawing.Text / FontCollection.cs
index 7454fdbfd90e1d7b03dd56b0024b3b46478fe9ef..81d6ed771e331f8883619cd2fd4061518d19dea1 100644 (file)
@@ -5,6 +5,29 @@
 // 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;
@@ -13,14 +36,13 @@ namespace System.Drawing.Text {
 
        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;
                }
@@ -29,13 +51,11 @@ namespace System.Drawing.Text {
                public void Dispose()
                {
                        Dispose (true);
-                       System.GC.SuppressFinalize (this);
+                       GC.SuppressFinalize (true);
                }
 
-               [MonoTODO]
                protected virtual void Dispose (bool disposing)
-               {
-                       //Nothing for now
+               {               
                }
 
                // properties
@@ -45,42 +65,28 @@ namespace System.Drawing.Text {
                                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;               
                        }
                }