// This file was generated by the Gtk# code generator.
// Any changes made will be lost if regenerated.

namespace Gst.Video {

	using System;
	using System.Collections;
	using System.Collections.Generic;
	using System.Runtime.InteropServices;

#region Autogenerated code
	[StructLayout(LayoutKind.Sequential)]
	public partial struct VideoColorVolumeTransformation : IEquatable<VideoColorVolumeTransformation> {

		public ushort WindowUpperLeftCornerX;
		public ushort WindowUpperLeftCornerY;
		public ushort WindowLowerRightCornerX;
		public ushort WindowLowerRightCornerY;
		public ushort CenterOfEllipseX;
		public ushort CenterOfEllipseY;
		public byte RotationAngle;
		public ushort SemimajorAxisInternalEllipse;
		public ushort SemimajorAxisExternalEllipse;
		public ushort SemiminorAxisExternalEllipse;
		public byte OverlapProcessOption;
		[MarshalAs (UnmanagedType.ByValArray, SizeConst=3)]
		public uint[] Maxscl;
		public uint AverageMaxrgb;
		public byte NumDistributions;
		[MarshalAs (UnmanagedType.ByValArray, SizeConst=16)]
		public byte[] DistributionIndex;
		[MarshalAs (UnmanagedType.ByValArray, SizeConst=16)]
		public uint[] DistributionValues;
		public ushort FractionBrightPixels;
		public byte ToneMappingFlag;
		public ushort KneePointX;
		public ushort KneePointY;
		public byte NumBezierCurveAnchors;
		[MarshalAs (UnmanagedType.ByValArray, SizeConst=16)]
		public ushort[] BezierCurveAnchors;
		public byte ColorSaturationMappingFlag;
		public byte ColorSaturationWeight;

		public static Gst.Video.VideoColorVolumeTransformation Zero = new Gst.Video.VideoColorVolumeTransformation ();

		public static Gst.Video.VideoColorVolumeTransformation New(IntPtr raw) {
			if (raw == IntPtr.Zero)
				return Gst.Video.VideoColorVolumeTransformation.Zero;
			return (Gst.Video.VideoColorVolumeTransformation) Marshal.PtrToStructure (raw, typeof (Gst.Video.VideoColorVolumeTransformation));
		}

		public bool Equals (VideoColorVolumeTransformation other)
		{
			return true && WindowUpperLeftCornerX.Equals (other.WindowUpperLeftCornerX) && WindowUpperLeftCornerY.Equals (other.WindowUpperLeftCornerY) && WindowLowerRightCornerX.Equals (other.WindowLowerRightCornerX) && WindowLowerRightCornerY.Equals (other.WindowLowerRightCornerY) && CenterOfEllipseX.Equals (other.CenterOfEllipseX) && CenterOfEllipseY.Equals (other.CenterOfEllipseY) && RotationAngle.Equals (other.RotationAngle) && SemimajorAxisInternalEllipse.Equals (other.SemimajorAxisInternalEllipse) && SemimajorAxisExternalEllipse.Equals (other.SemimajorAxisExternalEllipse) && SemiminorAxisExternalEllipse.Equals (other.SemiminorAxisExternalEllipse) && OverlapProcessOption.Equals (other.OverlapProcessOption) && Maxscl.Equals (other.Maxscl) && AverageMaxrgb.Equals (other.AverageMaxrgb) && NumDistributions.Equals (other.NumDistributions) && DistributionIndex.Equals (other.DistributionIndex) && DistributionValues.Equals (other.DistributionValues) && FractionBrightPixels.Equals (other.FractionBrightPixels) && ToneMappingFlag.Equals (other.ToneMappingFlag) && KneePointX.Equals (other.KneePointX) && KneePointY.Equals (other.KneePointY) && NumBezierCurveAnchors.Equals (other.NumBezierCurveAnchors) && BezierCurveAnchors.Equals (other.BezierCurveAnchors) && ColorSaturationMappingFlag.Equals (other.ColorSaturationMappingFlag) && ColorSaturationWeight.Equals (other.ColorSaturationWeight);
		}

		public override bool Equals (object other)
		{
			return other is VideoColorVolumeTransformation && Equals ((VideoColorVolumeTransformation) other);
		}

		public override int GetHashCode ()
		{
			return this.GetType ().FullName.GetHashCode () ^ WindowUpperLeftCornerX.GetHashCode () ^ WindowUpperLeftCornerY.GetHashCode () ^ WindowLowerRightCornerX.GetHashCode () ^ WindowLowerRightCornerY.GetHashCode () ^ CenterOfEllipseX.GetHashCode () ^ CenterOfEllipseY.GetHashCode () ^ RotationAngle.GetHashCode () ^ SemimajorAxisInternalEllipse.GetHashCode () ^ SemimajorAxisExternalEllipse.GetHashCode () ^ SemiminorAxisExternalEllipse.GetHashCode () ^ OverlapProcessOption.GetHashCode () ^ Maxscl.GetHashCode () ^ AverageMaxrgb.GetHashCode () ^ NumDistributions.GetHashCode () ^ DistributionIndex.GetHashCode () ^ DistributionValues.GetHashCode () ^ FractionBrightPixels.GetHashCode () ^ ToneMappingFlag.GetHashCode () ^ KneePointX.GetHashCode () ^ KneePointY.GetHashCode () ^ NumBezierCurveAnchors.GetHashCode () ^ BezierCurveAnchors.GetHashCode () ^ ColorSaturationMappingFlag.GetHashCode () ^ ColorSaturationWeight.GetHashCode ();
		}

		private static GLib.GType GType {
			get { return GLib.GType.Pointer; }
		}
#endregion
	}
}
