#include "mapitemgeopolygon.h"

#include "osm_math_p.h"


MapItemGeoPolygon::MapItemGeoPolygon(const QPolygonF & p) {
	ignore_scale = true;
	setPolygon(p);
}


void MapItemGeoPolygon::setPolygon(const QPolygonF & p) {
	pol = p;
	updatePolygon();
}


void MapItemGeoPolygon::draw(QPainter * p) {
	p->setPen(pen());
	p->setBrush(brush());
	QPolygonF dp(norm_polygon);
	QPointF pos_offset = mapToView(norm_pos);
	for (auto & i: dp)
		i = mapToView(i) - pos_offset;
	p->drawPolygon(dp);
	setBoundingRect(dp.boundingRect());
}


void MapItemGeoPolygon::updatePolygon() {
	norm_polygon.resize(pol.size());
	for (int i = 0; i < pol.size(); ++i)
		norm_polygon[i] = OSM::geo2xy(pol[i]);
	updateParent();
}
