// Rsvg.Pixbuf.custom - Rsvg Pixbuf class customizations
//
// Author: John Luke  <jluke@cfl.rr.com>
//
// Copyright (C) 2004 Novell, Inc.
//
// This code is inserted after the automatically generated code.
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of version 2 of the Lesser GNU General
// Public License as published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this program; if not, write to the
// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.

	public static Gdk.Pixbuf LoadFromResource (string resource)
	{
		if (resource == null)
			throw new ArgumentNullException ("resource");
		
		System.IO.Stream s = System.Reflection.Assembly.GetCallingAssembly ().GetManifestResourceStream (resource);
		if (s == null)
			throw new ArgumentException ("resource must be a valid resource name of 'assembly'.");

		return LoadFromStream (s);
	}

	public static Gdk.Pixbuf LoadFromStream (System.IO.Stream input)
	{
		Handle loader = new Handle ();
		byte [] buffer = new byte [8192];
		int n;                                                                                 
		while ((n = input.Read (buffer, 0, 8192)) != 0)
			loader.Write (buffer, (uint) n);
                                                                                
		loader.Close ();
		return loader.Pixbuf;
	}
