116 lines
1.8 KiB
C++
116 lines
1.8 KiB
C++
#include "mapitembase.h"
|
|
|
|
#include "mapview.h"
|
|
#include "osm_math_p.h"
|
|
|
|
|
|
MapItemBase::MapItemBase() {
|
|
m_hints = QPainter::Antialiasing | QPainter::SmoothPixmapTransform;
|
|
}
|
|
|
|
|
|
MapItemBase::~MapItemBase() {
|
|
if (!parent) return;
|
|
parent->removeItem(this);
|
|
}
|
|
|
|
|
|
void MapItemBase::setInteracive(bool newInteracive) {
|
|
m_interacive = newInteracive;
|
|
updateParent();
|
|
}
|
|
|
|
|
|
void MapItemBase::setRenderHints(QPainter::RenderHints h) {
|
|
m_hints = h;
|
|
updateParent();
|
|
}
|
|
|
|
|
|
void MapItemBase::setRenderHint(QPainter::RenderHint h, bool on) {
|
|
m_hints.setFlag(h, on);
|
|
updateParent();
|
|
}
|
|
|
|
|
|
void MapItemBase::setVisible(bool newVisible) {
|
|
m_visible = newVisible;
|
|
updateParent();
|
|
}
|
|
|
|
|
|
void MapItemBase::setRotation(double deg) {
|
|
m_rotation = deg;
|
|
updateParent();
|
|
}
|
|
|
|
|
|
void MapItemBase::rotate(double deg) {
|
|
m_rotation += deg;
|
|
while (deg < 0)
|
|
deg += 360.;
|
|
while (deg > 360.)
|
|
deg -= 360.;
|
|
updateParent();
|
|
}
|
|
|
|
|
|
void MapItemBase::scale(QPointF s) {
|
|
m_scale = {m_scale.x() * s.x(), m_scale.y() * s.y()};
|
|
updateParent();
|
|
}
|
|
|
|
|
|
void MapItemBase::setScale(QPointF s) {
|
|
m_scale = s;
|
|
updateParent();
|
|
}
|
|
|
|
|
|
void MapItemBase::setPosition(QPointF geo) {
|
|
m_position = geo;
|
|
updatePosition();
|
|
updateParent();
|
|
}
|
|
|
|
|
|
void MapItemBase::setOffset(QPointF pixels) {
|
|
m_offset = pixels;
|
|
updateParent();
|
|
}
|
|
|
|
|
|
void MapItemBase::setCursor(const QCursor & newCursor) {
|
|
m_cursor = newCursor;
|
|
updateParent();
|
|
}
|
|
|
|
|
|
QPointF MapItemBase::mapToView(QPointF norm) const {
|
|
if (!parent) return norm;
|
|
return parent->mapFromNorm(norm);
|
|
}
|
|
|
|
|
|
double MapItemBase::scalePx2M(QPointF norm) const {
|
|
if (!parent) return 1.;
|
|
return parent->scalePx2M(norm);
|
|
}
|
|
|
|
|
|
void MapItemBase::updatePosition() {
|
|
norm_pos = OSM::geo2xy(m_position);
|
|
potitionChanged();
|
|
zoomChanged();
|
|
}
|
|
|
|
|
|
void MapItemBase::updateParent() {
|
|
if (parent) parent->update();
|
|
}
|
|
|
|
|
|
void MapItemBase::setBoundingRect(QRectF b) {
|
|
m_bounding = b;
|
|
}
|