public Blob(IntPtr data, uint length, MemoryMode mode, object userData, BlobReleaseDelegate releaseDelegate) : this(data, (int)length, mode, userData, releaseDelegate) { }
private static IntPtr Create(IntPtr data, int length, MemoryMode mode, object context, BlobReleaseDelegate releaseProc) { if (releaseProc == null) { return(HarfBuzzApi.hb_blob_create(data, length, mode, IntPtr.Zero, IntPtr.Zero)); } else { var ctx = new NativeDelegateContext(context, releaseProc); return(HarfBuzzApi.hb_blob_create(data, length, mode, ctx.NativeContext, destroy_func)); } }
public Blob(IntPtr data, int length, MemoryMode mode, object userData, BlobReleaseDelegate releaseDelegate) : this(Create(data, length, mode, userData, new ReleaseDelegate(releaseDelegate))) { }
public Blob(IntPtr data, uint length, MemoryMode mode, object userData, BlobReleaseDelegate releaseDelegate) : this(data, (int)length, mode, () => releaseDelegate?.Invoke(userData)) { }