Revision 03d5c897421de2abb5877f98f1b56cf25893b4d5 authored by Eric Fischer on 25 April 2016, 16:24:36 UTC, committed by Eric Fischer on 25 April 2016, 16:24:36 UTC
1 parent 9e9afb0
Raw File
mvt.hh
bool is_compressed(std::string const &data);
int decompress(std::string const &input, std::string &output);
int compress(std::string const &input, std::string &output);
int dezig(unsigned n);

enum mvt_geometry_type {
	mvt_point = 1,
	mvt_linestring = 2,
	mvt_polygon = 3
};

enum mvt_operation {
	mvt_moveto = 1,
	mvt_lineto = 2,
	mvt_closepath = 7
};

enum mvt_value_type {
	mvt_string,
	mvt_float,
	mvt_double,
	mvt_int,
	mvt_uint,
	mvt_sint,
	mvt_bool
};

struct mvt_value {
	mvt_value_type type;
	std::string string_value;
	union {
		float float_value;
		double double_value;
		long long int_value;
		unsigned long long uint_value;
		long long sint_value;
		bool bool_value;
	} numeric_value;
};

struct mvt_geometry {
	int /* mvt_operation */ op;
	long long x;
	long long y;

	mvt_geometry(int op, long long x, long long y) {
		this->op = op;
		this->x = x;
		this->y = y;
	}
};

struct mvt_feature {
	std::vector<unsigned> tags;
	int /* mvt_geometry_type */ type;
	std::vector<mvt_geometry> geometry;
};

struct mvt_layer {
	int version;
	std::string name;
	std::vector<mvt_feature> features;
	std::vector<std::string> keys;
	std::vector<mvt_value> values;
	int extent;
};

struct mvt_tile {
	std::vector<mvt_layer> layers;
};

bool mvt_decode(std::string &message, mvt_tile &out);
std::string mvt_encode(mvt_tile &in);
back to top