/// <summary> /// Sets a metadata item to a specific location. /// </summary> /// <param name="name">The name of the metadata item.</param> /// <param name="value">The metadata to set.</param> /// <remarks> /// SetMetadataByName uses metadata query expressions to set metadata. For more information on the metadata query language, see the Metadata Query Language Overview. /// </remarks> public static void SetMetadataByName(this IWICMetadataQueryWriter metadataQueryWriter, string name, object value) { if (metadataQueryWriter is null) { throw new NullReferenceException(); } if (name is null) { throw new ArgumentNullException(nameof(name)); } if (value is null) { throw new ArgumentNullException(nameof(value)); } var variant = PropVariantHelper.Encode(value); try { metadataQueryWriter.SetMetadataByName(name, ref variant); } finally { PropVariantHelper.Free(variant); } }
public static bool TrySetMetadataByName(this IWICMetadataQueryWriter meta, string name, PropVariant value) { var pvMarshal = PropVariant.Marshaler.GetInstance(null); var pvNative = pvMarshal.MarshalManagedToNative(value); int hr = ProxyFunctions.SetMetadataByName(meta, name, pvNative); pvMarshal.CleanUpNativeData(pvNative); return(hr >= 0); }
public static void RemoveMetadataByName(this IWICMetadataQueryWriter writer, string name) { if (writer == null) { throw new ArgumentNullException(nameof(writer)); } if (name == null) { throw new ArgumentNullException(nameof(name)); } writer.RemoveMetadataByName(name).ThrowOnError(); }
public static void SetMetadataByName(this IWICMetadataQueryWriter writer, string name, object value, PropertyType?type = null) { if (writer == null) { throw new ArgumentNullException(nameof(writer)); } if (name == null) { throw new ArgumentNullException(nameof(name)); } using (var pv = new PropVariant(value, type)) { writer.SetMetadataByName(name, pv).ThrowOnError(); } }
public static void EncodeMetadata(this IWICMetadataQueryWriter writer, IEnumerable <WicMetadataKeyValue> metadata) { if (writer == null) { throw new ArgumentNullException(nameof(writer)); } if (metadata == null) { return; } if (!metadata.Any()) { return; } WICImagingFactory.WithFactory(factory => { foreach (var kv in metadata) { if (kv.Value is IEnumerable <WicMetadataKeyValue> childMetadata) { if (!childMetadata.Any()) { continue; } factory.CreateQueryWriter(kv.Key.Format, IntPtr.Zero, out var childWriter).ThrowOnError(); using (var pv = new PropVariant(childWriter)) { var hr = writer.SetMetadataByName(kv.Key.Key, pv).ThrowOnError(); } EncodeMetadata(childWriter, childMetadata); } else { using (var pv = new PropVariant(kv.Value, kv.Type)) { var hr = writer.SetMetadataByName(kv.Key.Key, pv).ThrowOnError(); } } } }); }
public static void SetMetadataByName(this IWICMetadataQueryWriter writer, string name, PropVariant pv) { if (writer == null) { throw new ArgumentNullException(nameof(writer)); } if (name == null) { throw new ArgumentNullException(nameof(name)); } if (pv == null) { throw new ArgumentNullException(nameof(pv)); } writer.SetMetadataByName(name, pv).ThrowOnError(); }
public static bool TrySetMetadataByName(this IWICMetadataQueryWriter meta, string name, PropVariant value) { int hr = ProxyFunctions.SetMetadataByName(meta, name, value); return(hr >= 0); }
public static bool TryGetMetadataQueryWriter(this IWICBitmapFrameEncode frame, out IWICMetadataQueryWriter wri) { int hr = ProxyFunctions.GetMetadataQueryWriter(frame, out wri); return(hr >= 0); }
public static bool SetMetadataByNameNoThrow(this IWICMetadataQueryWriter meta, string name, PropVariant value) { int hr = SetMetadataByName(meta, name, value); return(hr >= 0); }
private extern static int SetMetadataByName(IWICMetadataQueryWriter THIS_PTR, [MarshalAs(UnmanagedType.LPWStr)] string wzName, [In, MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PropVariant.Marshaler))] PropVariant pvarValue);
private extern static int GetMetadataQueryWriter(IWICBitmapFrameEncode THIS_PTR, out IWICMetadataQueryWriter ppIMetadataQueryWriter);