/* memphis-0.2.vapi generated by vapigen, do not modify. */

[CCode (cprefix = "Memphis", lower_case_cprefix = "memphis_", gir_namespace = "Memphis", gir_version = "2.0")]
namespace Memphis {
	[CCode (cheader_filename = "memphis/memphis.h")]
	public class DataPool : GLib.Object {
		public weak GLib.StringChunk stringChunk;
		public weak GLib.Tree stringTree;
		[CCode (has_construct_function = false)]
		public DataPool ();
	}
	[CCode (cheader_filename = "memphis/memphis.h")]
	public class Map : GLib.Object {
		[CCode (has_construct_function = false)]
		public Map ();
		public void get_bounding_box (out double minlat, out double minlon, out double maxlat, out double maxlon);
		public void load_from_data (string data, uint size) throws GLib.Error;
		public void load_from_file (string filename) throws GLib.Error;
	}
	[CCode (cheader_filename = "memphis/memphis.h")]
	public class Renderer : GLib.Object {
		[CCode (has_construct_function = false)]
		public Renderer ();
		public void draw_png (string filename, uint zoom_level);
		public void draw_tile (Cairo.Context cr, uint x, uint y, uint zoom_level);
		[CCode (has_construct_function = false)]
		public Renderer.full (Memphis.RuleSet? rules, Memphis.Map? map);
		public int get_column_count (uint zoom_level);
		public Memphis.Map get_map ();
		public int get_max_x_tile (uint zoom_level);
		public int get_max_y_tile (uint zoom_level);
		public int get_min_x_tile (uint zoom_level);
		public int get_min_y_tile (uint zoom_level);
		public uint get_resolution ();
		public int get_row_count (uint zoom_level);
		public Memphis.RuleSet get_rule_set ();
		public void set_map (Memphis.Map map);
		public void set_resolution (uint resolution);
		public void set_rule_set (Memphis.RuleSet rules);
		public bool tile_has_data (uint x, uint y, uint zoom_level);
		public Memphis.Map map { get; set; }
		public uint resolution { get; set; }
		public Memphis.RuleSet rule_set { get; set; }
	}
	[Compact]
	[CCode (copy_function = "memphis_rule_copy", type_id = "MEMPHIS_TYPE_RULE", cheader_filename = "memphis/memphis.h")]
	public class Rule {
		public weak Memphis.RuleAttr border;
		public weak string keys;
		public weak Memphis.RuleAttr line;
		public weak Memphis.RuleAttr polygon;
		public weak Memphis.RuleAttr text;
		public Memphis.RuleType type;
		public weak string values;
		[CCode (has_construct_function = false)]
		public Rule ();
	}
	[Compact]
	[CCode (copy_function = "memphis_rule_attr_copy", type_id = "MEMPHIS_TYPE_RULE_ATTR", cheader_filename = "memphis/memphis.h")]
	public class RuleAttr {
		public uchar color_alpha;
		public uchar color_blue;
		public uchar color_green;
		public uchar color_red;
		public double size;
		public weak string style;
		public uchar z_max;
		public uchar z_min;
		[CCode (has_construct_function = false)]
		public RuleAttr ();
	}
	[CCode (cheader_filename = "memphis/memphis.h")]
	public class RuleSet : GLib.Object {
		[CCode (has_construct_function = false)]
		public RuleSet ();
		public void get_bg_color (out uchar r, out uchar g, out uchar b, out uchar a);
		public Memphis.Rule get_rule (string id);
		public GLib.List get_rule_ids ();
		public void load_from_data (string data, uint size) throws GLib.Error;
		public void load_from_file (string filename) throws GLib.Error;
		public bool remove_rule (string id);
		public void set_bg_color (uchar r, uchar g, uchar b, uchar a);
		public void set_rule (Memphis.Rule rule);
	}
	[CCode (cprefix = "MEMPHIS_RULE_TYPE_", cheader_filename = "memphis/memphis.h")]
	public enum RuleType {
		UNKNOWN,
		NODE,
		WAY,
		RELATION
	}
}
