/* gexiv2-0.16.vapi generated by vapigen, do not modify. */

[CCode (cprefix = "GExiv2", gir_namespace = "GExiv2", gir_version = "0.16", lower_case_cprefix = "gexiv2_")]
namespace GExiv2 {
	[CCode (cheader_filename = "gexiv2/gexiv2.h", type_id = "gexiv2_metadata_get_type ()")]
	public class Metadata : GLib.Object {
		[CCode (has_construct_function = false)]
		public Metadata ();
		[Version (since = "0.16.0")]
		public GLib.Bytes as_bytes (GLib.Bytes? bytes) throws GLib.Error;
		public void clear ();
		public void clear_comment ();
		public void clear_exif ();
		public void clear_iptc ();
		[Version (since = "0.16.0")]
		public bool clear_tag (string tag) throws GLib.Error;
		public void clear_xmp ();
		[Version (since = "0.16.0")]
		public void delete_gps_info () throws GLib.Error;
		public void erase_exif_thumbnail () throws GLib.Error;
		public bool from_app1_segment ([CCode (array_length_cname = "n_data", array_length_pos = 1.1, array_length_type = "glong")] uint8[] data) throws GLib.Error;
		public bool from_stream (GLib.InputStream stream) throws GLib.Error;
		[Version (since = "0.16.0")]
		public string? generate_xmp_packet (GExiv2.XmpFormatFlags xmp_format_flags, uint32 padding) throws GLib.Error;
		[Version (since = "0.16.0")]
		public string? get_comment () throws GLib.Error;
		[Version (since = "0.12.2")]
		public GLib.Bytes? get_exif_data (GExiv2.ByteOrder byte_order) throws GLib.Error;
		[Version (since = "0.16.0")]
		public bool get_exif_tag_rational (string tag, out int nom, out int den) throws GLib.Error;
		[CCode (array_length = false, array_null_terminated = true)]
		public string[] get_exif_tags ();
		public bool get_exif_thumbnail ([CCode (array_length_cname = "size", array_length_pos = 1.1)] out uint8[] buffer);
		[Version (since = "0.16.0")]
		public bool get_exposure_time (out int nom, out int den) throws GLib.Error;
		[Version (since = "0.16.0")]
		public double get_fnumber () throws GLib.Error;
		[Version (since = "0.16.0")]
		public double get_focal_length () throws GLib.Error;
		[Version (since = "0.16.0")]
		public double get_gps_altitude () throws GLib.Error;
		[Version (since = "0.16.0")]
		public bool get_gps_info (out double longitude, out double latitude, out double altitude) throws GLib.Error;
		[Version (since = "0.16.0")]
		public double get_gps_latitude () throws GLib.Error;
		[Version (since = "0.16.0")]
		public double get_gps_longitude () throws GLib.Error;
		[CCode (array_length = false, array_null_terminated = true)]
		public string[] get_iptc_tags ();
		[Version (since = "0.16.0")]
		public int get_iso_speed () throws GLib.Error;
		[Version (since = "0.16.0")]
		public int get_metadata_pixel_height () throws GLib.Error;
		[Version (since = "0.16.0")]
		public int get_metadata_pixel_width () throws GLib.Error;
		public unowned string get_mime_type ();
		[Version (since = "0.16.0")]
		public GExiv2.Orientation get_orientation () throws GLib.Error;
		public int get_pixel_height ();
		public int get_pixel_width ();
		[Version (since = "0.16.0")]
		public GExiv2.PreviewImage get_preview_image (GExiv2.PreviewProperties props) throws GLib.Error;
		[CCode (array_length = false, array_null_terminated = true)]
		public unowned GExiv2.PreviewProperties[]? get_preview_properties ();
		public bool get_supports_exif ();
		public bool get_supports_iptc ();
		public bool get_supports_xmp ();
		[Version (since = "0.16.0")]
		public static unowned string? get_tag_description (string tag) throws GLib.Error;
		[Version (since = "0.16.0")]
		public string? get_tag_interpreted_string (string tag) throws GLib.Error;
		public static unowned string? get_tag_label (string tag) throws GLib.Error;
		[Version (since = "0.16.0")]
		public long get_tag_long (string tag) throws GLib.Error;
		[CCode (array_length = false, array_null_terminated = true)]
		[Version (since = "0.16.0")]
		public string[]? get_tag_multiple (string tag) throws GLib.Error;
		[Version (since = "0.16.0")]
		public GLib.Bytes? get_tag_raw (string tag) throws GLib.Error;
		[Version (since = "0.16.0")]
		public string? get_tag_string (string tag) throws GLib.Error;
		[Version (since = "0.16.0")]
		public static unowned string? get_tag_type (string tag) throws GLib.Error;
		[Version (since = "0.16.0")]
		public static string get_xmp_namespace_for_tag (string tag) throws GLib.Error;
		[Version (since = "0.16.0")]
		public string? get_xmp_packet () throws GLib.Error;
		[CCode (array_length = false, array_null_terminated = true)]
		public string[] get_xmp_tags ();
		public bool has_exif ();
		public bool has_iptc ();
		[Version (since = "0.16.0")]
		public bool has_tag (string tag) throws GLib.Error;
		public bool has_xmp ();
		public static bool is_exif_tag (string tag);
		public static bool is_iptc_tag (string tag);
		public static bool is_xmp_tag (string tag);
		public bool open_buf ([CCode (array_length_cname = "n_data", array_length_pos = 1.1, array_length_type = "glong")] uint8[] data) throws GLib.Error;
		public bool open_path (string path) throws GLib.Error;
		[Version (since = "0.16.0")]
		public static bool register_xmp_namespace (string name, string prefix) throws GLib.Error;
		[Version (since = "0.10.6")]
		public bool save_external (string path) throws GLib.Error;
		public bool save_file (string path) throws GLib.Error;
		[Version (since = "0.16.0")]
		public void set_comment (string comment) throws GLib.Error;
		[Version (since = "0.16.0")]
		public bool set_exif_tag_rational (string tag, int nom, int den) throws GLib.Error;
		[Version (since = "0.16.0")]
		public void set_exif_thumbnail_from_buffer ([CCode (array_length_cname = "size", array_length_pos = 1.1)] uint8[] buffer) throws GLib.Error;
		public bool set_exif_thumbnail_from_file (string path) throws GLib.Error;
		[Version (since = "0.16.0")]
		public bool set_gps_info (double longitude, double latitude, double altitude) throws GLib.Error;
		[Version (since = "0.16.0")]
		public void set_metadata_pixel_height (int height) throws GLib.Error;
		[Version (since = "0.16.0")]
		public void set_metadata_pixel_width (int width) throws GLib.Error;
		[Version (since = "0.16.0")]
		public void set_orientation (GExiv2.Orientation orientation) throws GLib.Error;
		[Version (since = "0.16.0")]
		public bool set_tag_long (string tag, long value) throws GLib.Error;
		public bool set_tag_multiple (string tag, [CCode (array_length = false, array_null_terminated = true)] string[] values) throws GLib.Error;
		[Version (since = "0.16.0")]
		public bool set_tag_string (string tag, string value) throws GLib.Error;
		[Version (since = "0.16.0")]
		public bool set_xmp_tag_struct (string tag, GExiv2.StructureType type) throws GLib.Error;
		[Version (since = "0.16.0")]
		public bool tag_supports_multiple_values (string tag) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.14.0", since = "0.14.0")]
		public bool try_clear_tag (string tag) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public void try_delete_gps_info () throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public void try_erase_exif_thumbnail () throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public string? try_generate_xmp_packet (GExiv2.XmpFormatFlags xmp_format_flags, uint32 padding) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public string? try_get_comment () throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public bool try_get_exif_tag_rational (string tag, out int nom, out int den) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public bool try_get_exposure_time (out int nom, out int den) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public double try_get_fnumber () throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public double try_get_focal_length () throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public bool try_get_gps_altitude (out double altitude) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public bool try_get_gps_info (out double longitude, out double latitude, out double altitude) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public bool try_get_gps_latitude (out double latitude) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public bool try_get_gps_longitude (out double longitude) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public int try_get_iso_speed () throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public int try_get_metadata_pixel_height () throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public int try_get_metadata_pixel_width () throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public GExiv2.Orientation try_get_orientation () throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public GExiv2.PreviewImage try_get_preview_image (GExiv2.PreviewProperties props) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public static unowned string? try_get_tag_description (string tag) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public string? try_get_tag_interpreted_string (string tag) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public static unowned string? try_get_tag_label (string tag) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.12.2", since = "0.12.2")]
		public long try_get_tag_long (string tag) throws GLib.Error;
		[CCode (array_length = false, array_null_terminated = true)]
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public string[]? try_get_tag_multiple (string tag) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public GLib.Bytes? try_get_tag_raw (string tag) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public string? try_get_tag_string (string tag) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public static unowned string? try_get_tag_type (string tag) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public static string try_get_xmp_namespace_for_tag (string tag) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public string? try_get_xmp_packet () throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public bool try_has_tag (string tag) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public static bool try_register_xmp_namespace (string name, string prefix) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public void try_set_comment (string comment) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public bool try_set_exif_tag_rational (string tag, int nom, int den) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public void try_set_exif_thumbnail_from_buffer ([CCode (array_length_cname = "size", array_length_pos = 1.1)] uint8[] buffer) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public bool try_set_gps_info (double longitude, double latitude, double altitude) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public void try_set_metadata_pixel_height (int height) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public void try_set_metadata_pixel_width (int width) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public void try_set_orientation (GExiv2.Orientation orientation) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public bool try_set_tag_long (string tag, long value) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public bool try_set_tag_multiple (string tag, [CCode (array_length = false, array_null_terminated = true)] string[] values) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public bool try_set_tag_string (string tag, string value) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public bool try_set_xmp_tag_struct (string tag, GExiv2.StructureType type) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0.", since = "0.14.0")]
		public bool try_tag_supports_multiple_values (string tag) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public static void try_unregister_all_xmp_namespaces () throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public static bool try_unregister_xmp_namespace (string name) throws GLib.Error;
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.12.2")]
		public bool try_update_gps_info (double longitude, double latitude, double altitude) throws GLib.Error;
		[Version (since = "0.16.0")]
		public static void unregister_all_xmp_namespaces () throws GLib.Error;
		[Version (since = "0.16.0")]
		public static bool unregister_xmp_namespace (string name) throws GLib.Error;
		[Version (since = "0.16.0")]
		public bool update_gps_info (double longitude, double latitude, double altitude) throws GLib.Error;
	}
	[CCode (cheader_filename = "gexiv2/gexiv2.h", type_id = "gexiv2_preview_image_get_type ()")]
	public class PreviewImage : GLib.Object {
		[CCode (has_construct_function = false)]
		protected PreviewImage ();
		[CCode (array_length_pos = 0.1, array_length_type = "guint32")]
		public unowned uint8[] get_data ();
		public unowned string get_extension ();
		public uint32 get_height ();
		public unowned string get_mime_type ();
		public uint32 get_width ();
		[Version (deprecated = true, deprecated_since = "0.16.0", since = "0.14.0")]
		public long try_write_file (string path) throws GLib.Error;
		[Version (since = "0.16.0")]
		public size_t write_file (string path) throws GLib.Error;
	}
	[CCode (cheader_filename = "gexiv2/gexiv2.h", type_id = "gexiv2_preview_properties_get_type ()")]
	public class PreviewProperties : GLib.Object {
		[CCode (has_construct_function = false)]
		protected PreviewProperties ();
		public unowned string get_extension ();
		public uint32 get_height ();
		public unowned string get_mime_type ();
		public uint32 get_size ();
		public uint32 get_width ();
	}
	[CCode (cheader_filename = "gexiv2/gexiv2.h", cprefix = "GEXIV2_BYTE_ORDER_", type_id = "gexiv2_gexiv2_byte_order_get_type ()")]
	public enum ByteOrder {
		LITTLE,
		BIG
	}
	[CCode (cheader_filename = "gexiv2/gexiv2.h", cprefix = "GEXIV2_LOG_LEVEL_", type_id = "gexiv2_gexiv2_log_level_get_type ()")]
	public enum LogLevel {
		DEBUG,
		INFO,
		WARN,
		ERROR,
		MUTE
	}
	[CCode (cheader_filename = "gexiv2/gexiv2.h", cprefix = "GEXIV2_ORIENTATION_", type_id = "gexiv2_gexiv2_orientation_get_type ()")]
	public enum Orientation {
		UNSPECIFIED,
		NORMAL,
		HFLIP,
		ROT_180,
		VFLIP,
		ROT_90_HFLIP,
		ROT_90,
		ROT_90_VFLIP,
		ROT_270
	}
	[CCode (cheader_filename = "gexiv2/gexiv2.h", cprefix = "GEXIV2_STRUCTURE_XA_", type_id = "gexiv2_gexiv2_structure_type_get_type ()")]
	public enum StructureType {
		NONE,
		ALT,
		BAG,
		SEQ,
		LANG
	}
	[CCode (cheader_filename = "gexiv2/gexiv2.h", cprefix = "GEXIV2_", type_id = "gexiv2_gexiv2_xmp_format_flags_get_type ()")]
	[Flags]
	public enum XmpFormatFlags {
		OMIT_PACKET_WRAPPER,
		READ_ONLY_PACKET,
		USE_COMPACT_FORMAT,
		INCLUDE_THUMBNAIL_PAD,
		EXACT_PACKET_LENGTH,
		WRITE_ALIAS_COMMENTS,
		OMIT_ALL_FORMATTING
	}
	[CCode (cheader_filename = "gexiv2/gexiv2.h", has_target = false)]
	public delegate void LogHandler (GExiv2.LogLevel level, string msg);
	[CCode (cheader_filename = "gexiv2/gexiv2.h", cname = "GEXIV2_MAJOR_VERSION")]
	public const int MAJOR_VERSION;
	[CCode (cheader_filename = "gexiv2/gexiv2.h", cname = "GEXIV2_MICRO_VERSION")]
	public const int MICRO_VERSION;
	[CCode (cheader_filename = "gexiv2/gexiv2.h", cname = "GEXIV2_MINOR_VERSION")]
	public const int MINOR_VERSION;
	[CCode (cheader_filename = "gexiv2/gexiv2.h")]
	public static int get_version ();
	[CCode (cheader_filename = "gexiv2/gexiv2.h")]
	public static bool initialize ();
	[CCode (cheader_filename = "gexiv2/gexiv2.h")]
	public static GExiv2.LogLevel log_get_level ();
	[CCode (cheader_filename = "gexiv2/gexiv2.h")]
	public static void log_set_level (GExiv2.LogLevel level);
	[CCode (cheader_filename = "gexiv2/gexiv2.h")]
	public static void log_use_glib_logging ();
	[CCode (cheader_filename = "gexiv2/gexiv2.h")]
	[Version (since = "0.16.0")]
	public static void shutdown ();
}
