using System; using System.Runtime.InteropServices; namespace Gimp { [StructLayout(LayoutKind.Explicit)] public struct ParamData { [FieldOffset(0)] public Int32 d_int32; [FieldOffset(0)] public Int16 d_int16; [FieldOffset(0)] public byte d_int8; [FieldOffset(0)] public double d_float; [FieldOffset(0)] public IntPtr d_string; [FieldOffset(0)] public GimpRGB d_color; #if _FIXME_ [FieldOffset(0)] public ParamRegion d_region; #endif [FieldOffset(0)] public Int32 d_image; [FieldOffset(0)] public Int32 d_drawable; #if _FIXME_ [FieldOffset(0)] GimpParasite d_parasite; #endif [FieldOffset(0)] public PDBStatusType d_status; }; [StructLayout(LayoutKind.Sequential)] public struct GimpParamDef { public PDBArgType type; public string name; public string description; }; [StructLayout(LayoutKind.Sequential)] public struct GimpParam { public PDBArgType type; public ParamData data; }; [Serializable] [StructLayout(LayoutKind.Sequential)] public struct GimpRGB { public double r, g, b, a; } [StructLayout(LayoutKind.Sequential)] public struct ParamRegion { public Int32 x; public Int32 y; public Int32 width; public Int32 height; }; [StructLayout(LayoutKind.Sequential)] public struct GimpParasite { string name; Int32 flags; Int32 size; IntPtr data; }; }