260 lines
No EOL
9.5 KiB
C#
260 lines
No EOL
9.5 KiB
C#
using System.Runtime.InteropServices;
|
|
using System.Security;
|
|
using NetVips.Interop;
|
|
|
|
using GObjectManaged = NetVips.GObject;
|
|
using VipsBlobManaged = NetVips.VipsBlob;
|
|
|
|
namespace NetVips.Internal;
|
|
|
|
[SuppressUnmanagedCodeSecurity, UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
|
internal delegate void GWeakNotify(nint data, nint objectPointer);
|
|
|
|
internal static class GObject
|
|
{
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct Struct
|
|
{
|
|
internal nint GTypeInstance;
|
|
|
|
internal uint RefCount;
|
|
|
|
internal nint QData;
|
|
}
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_object_set_property")]
|
|
internal static extern void SetProperty(GObjectManaged @object,
|
|
[MarshalAs(UnmanagedType.LPStr)] string propertyName, in GValue.Struct value);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_object_get_property")]
|
|
internal static extern void GetProperty(GObjectManaged @object,
|
|
[MarshalAs(UnmanagedType.LPStr)] string propertyName, ref GValue.Struct value);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_object_ref")]
|
|
internal static extern nint Ref(nint @object);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_object_unref")]
|
|
internal static extern void Unref(nint @object);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_object_weak_ref")]
|
|
internal static extern void WeakRef(GObjectManaged @object, GWeakNotify notify, nint data);
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct GEnumValue
|
|
{
|
|
internal int Value;
|
|
|
|
[MarshalAs(UnmanagedType.LPStr)]
|
|
internal string ValueName;
|
|
|
|
[MarshalAs(UnmanagedType.LPStr)]
|
|
internal string ValueNick;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct GEnumClass
|
|
{
|
|
internal nint GTypeClass;
|
|
|
|
internal int Minimum;
|
|
internal int Maximum;
|
|
internal uint NValues;
|
|
|
|
internal nint Values;
|
|
}
|
|
|
|
internal static class GType
|
|
{
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_type_name")]
|
|
internal static extern nint Name(nint type);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_type_from_name")]
|
|
internal static extern nint FromName([MarshalAs(UnmanagedType.LPStr)] string name);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_type_fundamental")]
|
|
internal static extern nint Fundamental(nint typeId);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_type_class_ref")]
|
|
internal static extern nint ClassRef(nint type);
|
|
}
|
|
|
|
internal static class GValue
|
|
{
|
|
[StructLayout(LayoutKind.Explicit, Size = 24)]
|
|
internal struct Struct
|
|
{
|
|
[FieldOffset(0)]
|
|
internal nint GType;
|
|
|
|
[FieldOffset(8)]
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
|
|
internal nint[] Data;
|
|
}
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_init")]
|
|
internal static extern nint Init(ref Struct value, nint gType);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_unset")]
|
|
internal static extern void Unset(ref Struct value);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_set_boolean")]
|
|
internal static extern void SetBoolean(ref Struct value, [MarshalAs(UnmanagedType.Bool)] bool vBoolean);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_get_boolean")]
|
|
[return: MarshalAs(UnmanagedType.Bool)]
|
|
internal static extern bool GetBoolean(in Struct value);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_set_int")]
|
|
internal static extern void SetInt(ref Struct value, int vInt);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_get_int")]
|
|
internal static extern int GetInt(in Struct value);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_set_uint64")]
|
|
internal static extern void SetUint64(ref Struct value, ulong vUint64);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_get_uint64")]
|
|
internal static extern ulong GetUint64(in Struct value);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_set_double")]
|
|
internal static extern void SetDouble(ref Struct value, double vDouble);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_get_double")]
|
|
internal static extern double GetDouble(in Struct value);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_set_string")]
|
|
internal static extern void SetString(ref Struct value, byte[] vString);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_get_string")]
|
|
internal static extern nint GetString(in Struct value);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_set_enum")]
|
|
internal static extern void SetEnum(ref Struct value, int vEnum);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_get_enum")]
|
|
internal static extern int GetEnum(in Struct value);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_set_flags")]
|
|
internal static extern void SetFlags(ref Struct value, uint vFlags);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_get_flags")]
|
|
internal static extern uint GetFlags(in Struct value);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_set_object")]
|
|
internal static extern void SetObject(ref Struct value, GObjectManaged vObject);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_get_object")]
|
|
internal static extern nint GetObject(in Struct value);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_value_set_boxed")]
|
|
internal static extern void SetBoxed(ref Struct value, VipsBlobManaged boxed);
|
|
}
|
|
|
|
internal static class GParamSpec
|
|
{
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal struct Struct
|
|
{
|
|
internal nint GTypeInstance;
|
|
|
|
internal nint Name;
|
|
|
|
internal Enums.GParamFlags Flags;
|
|
internal nint ValueType;
|
|
internal nint OwnerType;
|
|
|
|
internal nint Nick;
|
|
internal nint Blurb;
|
|
internal nint QData;
|
|
internal uint RefCount;
|
|
internal uint ParamId;
|
|
}
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_param_spec_get_blurb")]
|
|
internal static extern nint GetBlurb(in Struct pspec);
|
|
}
|
|
|
|
[SuppressUnmanagedCodeSecurity, UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
|
internal delegate void GClosureNotify(nint data, nint closure);
|
|
|
|
internal static class GSignal
|
|
{
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_signal_connect_data")]
|
|
internal static extern ulong ConnectData(GObjectManaged instance,
|
|
[MarshalAs(UnmanagedType.LPStr)] string detailedSignal,
|
|
nint cHandler, nint data,
|
|
GClosureNotify destroyData, Enums.GConnectFlags connectFlags);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_signal_handler_disconnect")]
|
|
internal static extern void HandlerDisconnect(GObjectManaged instance, ulong handlerId);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
[DllImport(Libraries.GObject, CallingConvention = CallingConvention.Cdecl,
|
|
EntryPoint = "g_signal_handlers_disconnect_matched")]
|
|
internal static extern uint HandlersDisconnectMatched(GObjectManaged instance,
|
|
Enums.GSignalMatchType mask, uint signalId, uint detail, nint closure,
|
|
nint func, nint data);
|
|
} |