public WicPixelFormatConverter(object comObject) : base(comObject) { using (var info = new ComObjectWrapper <IWICFormatConverterInfo>(comObject)) { info.Object.GetPixelFormats(0, null, out var len); var pf = new Guid[len]; if (len > 0) { info.Object.GetPixelFormats(len, pf, out _); } PixelFormats = pf; _pixelFormatsList = new Lazy <IReadOnlyList <WicPixelFormat> >(GetPixelFormatsList, true); } }
protected WicMetadataHandler(object comObject) : base(comObject) { using (var info = new ComObjectWrapper <IWICMetadataHandlerInfo>(comObject)) { info.Object.GetMetadataFormat(out Guid guid); Guid = guid; info.Object.GetDeviceManufacturer(0, null, out var len); if (len >= 0) { var sb = new StringBuilder(len); info.Object.GetDeviceManufacturer(len + 1, sb, out _); DeviceManufacturer = sb.ToString(); } info.Object.GetDeviceModels(0, null, out len); if (len >= 0) { var sb = new StringBuilder(len); info.Object.GetDeviceModels(len + 1, sb, out _); DeviceModels = sb.ToString(); } info.Object.GetContainerFormats(0, null, out var count); if (count > 0) { var guids = new Guid[count]; if (info.Object.GetContainerFormats(count, guids, out _) == 0) { ContainerFormats = guids; } } ContainerFormats = ContainerFormats ?? Array.Empty <Guid>(); info.Object.DoesRequireFullStream(out var b); RequiresFullStream = b; info.Object.DoesSupportPadding(out b); SupportsPadding = b; info.Object.DoesRequireFixedSize(out b); RequiresFixedSize = b; } }
protected WicImagingComponent(object comObject) { var wrapper = new ComObjectWrapper <IWICComponentInfo>(comObject); wrapper.Object.GetCLSID(out Guid guid); Clsid = guid; wrapper.Object.GetSigningStatus(out var status); SigningStatus = status; wrapper.Object.GetComponentType(out var type); Type = type; wrapper.Object.GetFriendlyName(0, null, out var len); if (len >= 0) { var sb = new StringBuilder(len); wrapper.Object.GetFriendlyName(len + 1, sb, out _); FriendlyName = sb.ToString(); } wrapper.Object.GetAuthor(0, null, out len); if (len >= 0) { var sb = new StringBuilder(len); wrapper.Object.GetAuthor(len + 1, sb, out _); Author = sb.ToString(); } wrapper.Object.GetVersion(0, null, out len); if (len >= 0) { var sb = new StringBuilder(len); wrapper.Object.GetVersion(len + 1, sb, out _); Version = sb.ToString(); } wrapper.Object.GetSpecVersion(0, null, out len); if (len >= 0) { var sb = new StringBuilder(len); wrapper.Object.GetSpecVersion(len + 1, sb, out _); SpecVersion = sb.ToString(); } }
public WicBitmapLock(object comObject) { using (var wrapper = new ComObjectWrapper <IWICBitmapLock>(comObject)) { wrapper.Object.GetDataPointer(out var size, out var ptr); DataSize = size; DataPointer = ptr; wrapper.Object.GetPixelFormat(out var format); PixelFormat = WicImagingComponent.FromClsid <WicPixelFormat>(format); wrapper.Object.GetSize(out var width, out var height); Width = width; Height = height; wrapper.Object.GetStride(out var stride); Stride = stride; } }
public WicPixelFormat(object comObject) : base(comObject) { using (var info = new ComObjectWrapper <IWICPixelFormatInfo2>(comObject)) { info.Object.GetFormatGUID(out var guid); Guid = guid; info.Object.GetChannelCount(out var i); ChannelCount = (int)i; info.Object.GetBitsPerPixel(out i); BitsPerPixel = (int)i; info.Object.GetNumericRepresentation(out var nr); NumericRepresentation = nr; info.Object.SupportsTransparency(out bool b); SupportsTransparency = b; } }
protected WicCodec(object comObject) : base(comObject) { using (var info = new ComObjectWrapper <IWICBitmapCodecInfo>(comObject).ComObject) { _pixelFormatsList = new Lazy <IReadOnlyList <WicPixelFormat> >(GetPixelFormatsList, true); info.Object.GetContainerFormat(out Guid guid); ContainerFormat = guid; info.Object.GetFileExtensions(0, null, out var len); if (len >= 0) { var sb = new StringBuilder(len); info.Object.GetFileExtensions(len + 1, sb, out _); FileExtensions = sb.ToString(); } info.Object.GetColorManagementVersion(0, null, out len); if (len >= 0) { var sb = new StringBuilder(len); info.Object.GetColorManagementVersion(len + 1, sb, out _); ColorManagementVersion = sb.ToString(); } info.Object.GetDeviceManufacturer(0, null, out len); if (len >= 0) { var sb = new StringBuilder(len); info.Object.GetDeviceManufacturer(len + 1, sb, out _); DeviceManufacturer = sb.ToString(); } info.Object.GetDeviceModels(0, null, out len); if (len >= 0) { var sb = new StringBuilder(len); info.Object.GetDeviceModels(len + 1, sb, out _); DeviceModels = sb.ToString(); } info.Object.GetMimeTypes(0, null, out len); if (len >= 0) { var sb = new StringBuilder(len); info.Object.GetMimeTypes(len + 1, sb, out _); MimeTypes = sb.ToString(); } info.Object.DoesSupportAnimation(out bool b); SupportsAnimation = b; info.Object.DoesSupportChromakey(out b); SupportsChromakey = b; info.Object.DoesSupportLossless(out b); SupportsLossless = b; info.Object.DoesSupportMultiframe(out b); SupportsMultiframe = b; FileExtensionsList = FileExtensions.SplitToList(',').Select(s => s.ToLowerInvariant()).OrderBy(s => s).ToList().AsReadOnly(); MimeTypesList = MimeTypes.SplitToList(',').OrderBy(s => s).ToList().AsReadOnly(); info.Object.GetPixelFormats(0, null, out len); if (len > 0) { var pf = new Guid[len]; info.Object.GetPixelFormats(len, pf, out _).ThrowOnError(); PixelFormats = pf; } else { PixelFormats = Array.Empty <Guid>(); } } }