36 lines
698 B
C++
36 lines
698 B
C++
#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();
|
|
}
|