using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.IO;
using System.Reflection;
using System.IO.Compression;
namespace FastReport.Utils
{
///
/// Resource loader class.
///
public static partial class ResourceLoader
{
///
/// Gets a stream from specified assembly resource.
///
/// Assembly name.
/// Resource name.
/// Stream object.
public static Stream GetStream(string assembly, string resource)
{
string assembly_full_name = assembly;
#if MONO
assembly_full_name += ".Mono";
#endif
foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
{
AssemblyName name = new AssemblyName(a.FullName);
if (name.Name == assembly_full_name)
{
return a.GetManifestResourceStream(assembly + ".Resources." + resource);
}
}
return null;
}
///
/// Gets a stream from FastReport assembly resource.
///
/// Resource name.
/// Stream object.
public static Stream GetStream(string resource)
{
return GetStream("FastReport", resource);
}
///
/// Gets a stream from specified assembly resource and unpacks it.
///
/// Assembly name.
/// Resource name.
/// Stream object.
public static Stream UnpackStream(string assembly, string resource)
{
using (Stream packedStream = GetStream(assembly, resource))
using (Stream gzipStream = new GZipStream(packedStream, CompressionMode.Decompress, true))
{
MemoryStream result = new MemoryStream();
const int BUFFER_SIZE = 4096;
gzipStream.CopyTo(result, BUFFER_SIZE);
result.Position = 0;
return result;
}
}
///
/// Gets a stream from specified FastReport assembly resource and unpacks it.
///
/// Resource name.
/// Stream object.
public static Stream UnpackStream(string resource)
{
return UnpackStream("FastReport", resource);
}
}
}