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

namespace GES {

	using System;
	using System.Runtime.InteropServices;

#region Autogenerated code
	[GLib.GType (typeof (GES.VideoTestPatternGType))]
	public enum VideoTestPattern {

		Smpte = 0,
		Snow = 1,
		Black = 2,
		White = 3,
		Red = 4,
		Green = 5,
		Blue = 6,
		Checkers1 = 7,
		Checkers2 = 8,
		Checkers4 = 9,
		Checkers8 = 10,
		Circular = 11,
		Blink = 12,
		Smpte75 = 13,
		ZonePlate = 14,
		Gamut = 15,
		ChromaZonePlate = 16,
		SolidColor = 17,
	}

	internal class VideoTestPatternGType {
		[DllImport ("ges-1.0", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr ges_video_test_pattern_get_type ();

		public static GLib.GType GType {
			get {
				return new GLib.GType (ges_video_test_pattern_get_type ());
			}
		}
	}
#endregion
}
