using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.IO;
namespace Vestris.ResourceLib
{
///
/// This structure depicts the organization of data in a hardware-independent cursor resource.
///
public class CursorDirectoryResource : DirectoryResource
{
///
/// A hardware-independent cursor resource.
///
/// Module handle.
/// Resource ID.
/// Resource type.
/// Resource name.
/// Language ID.
/// Resource size.
internal CursorDirectoryResource(IntPtr hModule, IntPtr hResource, ResourceId type, ResourceId name, UInt16 language, int size)
: base(hModule, hResource, type, name, language, size)
{
}
///
/// A new hardware-independent cursor resource.
///
public CursorDirectoryResource()
: base(Kernel32.ResourceTypes.RT_GROUP_CURSOR)
{
}
///
/// A new collection of cursors that can be embedded into an executable file.
///
public CursorDirectoryResource(IconFile iconFile)
: base(Kernel32.ResourceTypes.RT_GROUP_CURSOR)
{
for (UInt16 id = 0; id < iconFile.Icons.Count; id++)
{
CursorResource cursorResource = new CursorResource(
iconFile.Icons[id], new ResourceId(id), _language);
// cursor structure abuses planes and bits per pixel for cursor data
cursorResource.HotspotX = iconFile.Icons[id].Header.wPlanes;
cursorResource.HotspotY = iconFile.Icons[id].Header.wBitsPerPixel;
Icons.Add(cursorResource);
}
}
}
}