// ------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
// ------------------------------------------------------------------------------

namespace Win32.Graphics.Imaging;

/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPattern"]/*' />
/// <unmanaged>WICBitmapPattern</unmanaged>
public partial struct WICBitmapPattern
{
	/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPattern::Position"]/*' />
	public ULargeInteger Position;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPattern::Length"]/*' />
	public uint Length;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPattern::Pattern"]/*' />
	public unsafe byte* Pattern;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPattern::Mask"]/*' />
	public unsafe byte* Mask;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPattern::EndOfStream"]/*' />
	public Bool32 EndOfStream;
}

/// <include file='../Imaging.xml' path='doc/member[@name="WICImageParameters"]/*' />
/// <unmanaged>WICImageParameters</unmanaged>
public partial struct WICImageParameters
{
	/// <include file='../Imaging.xml' path='doc/member[@name="WICImageParameters::PixelFormat"]/*' />
	public Graphics.Direct2D.Common.PixelFormat PixelFormat;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICImageParameters::DpiX"]/*' />
	public float DpiX;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICImageParameters::DpiY"]/*' />
	public float DpiY;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICImageParameters::Top"]/*' />
	public float Top;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICImageParameters::Left"]/*' />
	public float Left;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICImageParameters::PixelWidth"]/*' />
	public uint PixelWidth;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICImageParameters::PixelHeight"]/*' />
	public uint PixelHeight;
}

/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPlaneDescription"]/*' />
/// <unmanaged>WICBitmapPlaneDescription</unmanaged>
public partial struct WICBitmapPlaneDescription
{
	/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPlaneDescription::Format"]/*' />
	public Guid Format;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPlaneDescription::Width"]/*' />
	public uint Width;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPlaneDescription::Height"]/*' />
	public uint Height;
}

/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPlane"]/*' />
/// <unmanaged>WICBitmapPlane</unmanaged>
public partial struct WICBitmapPlane
{
	/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPlane::Format"]/*' />
	public Guid Format;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPlane::pbBuffer"]/*' />
	public unsafe byte* pbBuffer;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPlane::cbStride"]/*' />
	public uint cbStride;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICBitmapPlane::cbBufferSize"]/*' />
	public uint cbBufferSize;
}

/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegFrameHeader"]/*' />
/// <unmanaged>WICJpegFrameHeader</unmanaged>
public partial struct WICJpegFrameHeader
{
	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegFrameHeader::Width"]/*' />
	public uint Width;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegFrameHeader::Height"]/*' />
	public uint Height;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegFrameHeader::TransferMatrix"]/*' />
	public WICJpegTransferMatrix TransferMatrix;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegFrameHeader::ScanType"]/*' />
	public WICJpegScanType ScanType;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegFrameHeader::cComponents"]/*' />
	public uint cComponents;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegFrameHeader::ComponentIdentifiers"]/*' />
	public uint ComponentIdentifiers;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegFrameHeader::SampleFactors"]/*' />
	public uint SampleFactors;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegFrameHeader::QuantizationTableIndices"]/*' />
	public uint QuantizationTableIndices;
}

/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegScanHeader"]/*' />
/// <unmanaged>WICJpegScanHeader</unmanaged>
public partial struct WICJpegScanHeader
{
	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegScanHeader::cComponents"]/*' />
	public uint cComponents;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegScanHeader::RestartInterval"]/*' />
	public uint RestartInterval;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegScanHeader::ComponentSelectors"]/*' />
	public uint ComponentSelectors;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegScanHeader::HuffmanTableIndices"]/*' />
	public uint HuffmanTableIndices;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegScanHeader::StartSpectralSelection"]/*' />
	public byte StartSpectralSelection;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegScanHeader::EndSpectralSelection"]/*' />
	public byte EndSpectralSelection;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegScanHeader::SuccessiveApproximationHigh"]/*' />
	public byte SuccessiveApproximationHigh;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICJpegScanHeader::SuccessiveApproximationLow"]/*' />
	public byte SuccessiveApproximationLow;
}

/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo"]/*' />
/// <unmanaged>WICRawCapabilitiesInfo</unmanaged>
public partial struct WICRawCapabilitiesInfo
{
	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::cbSize"]/*' />
	public uint cbSize;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::CodecMajorVersion"]/*' />
	public uint CodecMajorVersion;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::CodecMinorVersion"]/*' />
	public uint CodecMinorVersion;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::ExposureCompensationSupport"]/*' />
	public WICRawCapabilities ExposureCompensationSupport;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::ContrastSupport"]/*' />
	public WICRawCapabilities ContrastSupport;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::RGBWhitePointSupport"]/*' />
	public WICRawCapabilities RGBWhitePointSupport;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::NamedWhitePointSupport"]/*' />
	public WICRawCapabilities NamedWhitePointSupport;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::NamedWhitePointSupportMask"]/*' />
	public uint NamedWhitePointSupportMask;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::KelvinWhitePointSupport"]/*' />
	public WICRawCapabilities KelvinWhitePointSupport;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::GammaSupport"]/*' />
	public WICRawCapabilities GammaSupport;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::TintSupport"]/*' />
	public WICRawCapabilities TintSupport;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::SaturationSupport"]/*' />
	public WICRawCapabilities SaturationSupport;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::SharpnessSupport"]/*' />
	public WICRawCapabilities SharpnessSupport;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::NoiseReductionSupport"]/*' />
	public WICRawCapabilities NoiseReductionSupport;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::DestinationColorProfileSupport"]/*' />
	public WICRawCapabilities DestinationColorProfileSupport;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::ToneCurveSupport"]/*' />
	public WICRawCapabilities ToneCurveSupport;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::RotationSupport"]/*' />
	public WICRawRotationCapabilities RotationSupport;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawCapabilitiesInfo::RenderModeSupport"]/*' />
	public WICRawCapabilities RenderModeSupport;
}

/// <include file='../Imaging.xml' path='doc/member[@name="WICRawToneCurvePoint"]/*' />
/// <unmanaged>WICRawToneCurvePoint</unmanaged>
public partial struct WICRawToneCurvePoint
{
	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawToneCurvePoint::Input"]/*' />
	public double Input;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawToneCurvePoint::Output"]/*' />
	public double Output;
}

/// <include file='../Imaging.xml' path='doc/member[@name="WICRawToneCurve"]/*' />
/// <unmanaged>WICRawToneCurve</unmanaged>
public partial struct WICRawToneCurve
{
	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawToneCurve::cPoints"]/*' />
	public uint cPoints;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICRawToneCurve::aPoints"]/*' />
	public aPoints__FixedBuffer aPoints;

	public unsafe struct aPoints__FixedBuffer
	{
		public WICRawToneCurvePoint e0;

		[UnscopedRef]
		public ref WICRawToneCurvePoint this[int index]
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return ref AsSpan()[index];
			}
		}

		[UnscopedRef]
		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public Span<WICRawToneCurvePoint> AsSpan()
		{
			return MemoryMarshal.CreateSpan(ref e0, 1);
		}
	}
}

/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsParameters"]/*' />
/// <unmanaged>WICDdsParameters</unmanaged>
public partial struct WICDdsParameters
{
	/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsParameters::Width"]/*' />
	public uint Width;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsParameters::Height"]/*' />
	public uint Height;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsParameters::Depth"]/*' />
	public uint Depth;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsParameters::MipLevels"]/*' />
	public uint MipLevels;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsParameters::ArraySize"]/*' />
	public uint ArraySize;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsParameters::DxgiFormat"]/*' />
	public Graphics.Dxgi.Common.Format DxgiFormat;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsParameters::Dimension"]/*' />
	public WICDdsDimension Dimension;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsParameters::AlphaMode"]/*' />
	public WICDdsAlphaMode AlphaMode;
}

/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsFormatInfo"]/*' />
/// <unmanaged>WICDdsFormatInfo</unmanaged>
public partial struct WICDdsFormatInfo
{
	/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsFormatInfo::DxgiFormat"]/*' />
	public Graphics.Dxgi.Common.Format DxgiFormat;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsFormatInfo::BytesPerBlock"]/*' />
	public uint BytesPerBlock;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsFormatInfo::BlockWidth"]/*' />
	public uint BlockWidth;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICDdsFormatInfo::BlockHeight"]/*' />
	public uint BlockHeight;
}

/// <include file='../Imaging.xml' path='doc/member[@name="WICMetadataPattern"]/*' />
/// <unmanaged>WICMetadataPattern</unmanaged>
public partial struct WICMetadataPattern
{
	/// <include file='../Imaging.xml' path='doc/member[@name="WICMetadataPattern::Position"]/*' />
	public ULargeInteger Position;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICMetadataPattern::Length"]/*' />
	public uint Length;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICMetadataPattern::Pattern"]/*' />
	public unsafe byte* Pattern;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICMetadataPattern::Mask"]/*' />
	public unsafe byte* Mask;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICMetadataPattern::DataOffset"]/*' />
	public ULargeInteger DataOffset;
}

/// <include file='../Imaging.xml' path='doc/member[@name="WICMetadataHeader"]/*' />
/// <unmanaged>WICMetadataHeader</unmanaged>
public partial struct WICMetadataHeader
{
	/// <include file='../Imaging.xml' path='doc/member[@name="WICMetadataHeader::Position"]/*' />
	public ULargeInteger Position;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICMetadataHeader::Length"]/*' />
	public uint Length;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICMetadataHeader::Header"]/*' />
	public unsafe byte* Header;

	/// <include file='../Imaging.xml' path='doc/member[@name="WICMetadataHeader::DataOffset"]/*' />
	public ULargeInteger DataOffset;
}
