private static Dictionary <Guid, WicImagingComponent> LoadAllComponents() { var dic = new Dictionary <Guid, WicImagingComponent>(); WICImagingFactory.WithFactory(f => { foreach (var component in f.EnumerateComponents(WICComponentType.WICAllComponents, WICComponentEnumerateOptions.WICComponentEnumerateDefault)) { component.Object.GetComponentType(out var type); WicImagingComponent ic; switch (type) { case WICComponentType.WICPixelFormat: ic = new WicPixelFormat(component); break; case WICComponentType.WICEncoder: ic = new WicEncoder(component); break; case WICComponentType.WICDecoder: ic = new WicDecoder(component); break; case WICComponentType.WICPixelFormatConverter: var converter = new WicPixelFormatConverter(component); ic = converter; break; case WICComponentType.WICMetadataReader: var reader = new WicMetadataReader(component); ic = reader; break; case WICComponentType.WICMetadataWriter: var writer = new WicMetadataWriter(component); ic = writer; break; default: ic = new WicImagingComponent(component); break; } dic.Add(ic.Clsid, ic); //WicEncoder.CreateBuiltIn(); //WicDecoder.CreateBuiltIn(); component.Dispose(); } }); return(dic); }
// they are supposed to have the same container format public static WicEncoder FromDecoder(WicDecoder decoder) => decoder != null?FromContainerFormatGuid(decoder.ContainerFormat) : null;