CMake findQAD miss map
MapItemBase::offset feature PIValueTreeEdit add custom button to show/hide groups
This commit is contained in:
@@ -60,6 +60,12 @@ void MapItemBase::setPosition(QPointF geo) {
|
||||
}
|
||||
|
||||
|
||||
void MapItemBase::setOffset(QPointF pixels) {
|
||||
m_offset = pixels;
|
||||
updateParent();
|
||||
}
|
||||
|
||||
|
||||
void MapItemBase::setCursor(const QCursor & newCursor) {
|
||||
m_cursor = newCursor;
|
||||
updateParent();
|
||||
|
||||
@@ -60,6 +60,10 @@ public:
|
||||
void setPosition(QPointF geo);
|
||||
void setPosition(double lat, double lng) { setPosition({lat, lng}); }
|
||||
|
||||
QPointF offset() const { return m_offset; }
|
||||
void setOffset(QPointF pixels);
|
||||
void setOffset(double x, double y) { setOffset({x, y}); }
|
||||
|
||||
const QCursor & cursor() const { return m_cursor; }
|
||||
void setCursor(const QCursor & newCursor);
|
||||
|
||||
@@ -84,7 +88,7 @@ private:
|
||||
MapView * parent = nullptr;
|
||||
bool m_visible = true, m_interacive = false;
|
||||
double m_rotation = 0.;
|
||||
QPointF m_position, m_scale = {1., 1.};
|
||||
QPointF m_position, m_scale = {1., 1.}, m_offset;
|
||||
QRectF m_bounding;
|
||||
QCursor m_cursor;
|
||||
QMap<int, QVariant> data_;
|
||||
|
||||
@@ -30,7 +30,7 @@ void MapItemText::draw(QPainter * p) {
|
||||
if (str.isEmpty()) return;
|
||||
p->setPen(pen());
|
||||
p->setFont(font());
|
||||
auto br = p->fontMetrics().boundingRect(str);
|
||||
auto br = p->fontMetrics().boundingRect(str).adjusted(0, 0, 1, 1);
|
||||
br.translate(-br.topLeft());
|
||||
if (m_alignment.testFlag(Qt::AlignHCenter)) {
|
||||
br.translate(-br.center().x(), 0.);
|
||||
|
||||
@@ -78,8 +78,9 @@ void MapView::setZoom(double z) {
|
||||
|
||||
|
||||
void MapView::mousePressEvent(QMouseEvent * e) {
|
||||
is_pan = false;
|
||||
press_point = e->pos();
|
||||
is_pan = false;
|
||||
press_point = e->pos();
|
||||
last_click_coord = OSM::xy2geo(mapToNorm(press_point));
|
||||
}
|
||||
|
||||
|
||||
@@ -187,6 +188,7 @@ void MapView::drawItems(QPainter & p) {
|
||||
QPointF ipos = mapFromNorm(i->norm_pos);
|
||||
p.setTransform(src_tr);
|
||||
p.translate(ipos);
|
||||
p.translate(i->m_offset.x(), -i->m_offset.y());
|
||||
p.rotate(i->getRotation());
|
||||
if (!i->ignore_scale) p.scale(i->getScale().x(), i->getScale().y());
|
||||
i->draw(&p);
|
||||
@@ -257,6 +259,7 @@ void MapView::updateMouse(QPoint mouse) {
|
||||
QTransform mtr;
|
||||
if (!i->ignore_scale) mtr.scale(1. / i->getScale().x(), 1. / i->getScale().y());
|
||||
mtr.rotate(-i->getRotation());
|
||||
mtr.translate(-i->m_offset.x(), i->m_offset.y());
|
||||
mtr.translate(-ipos.x(), -ipos.y());
|
||||
QPoint m = mtr.map(mouse);
|
||||
if (i->m_bounding.contains(m)) {
|
||||
|
||||
@@ -52,7 +52,9 @@ public:
|
||||
double getZoom() const { return zoom_; }
|
||||
void setZoom(double z);
|
||||
|
||||
private:
|
||||
QPointF clickedCoordinate() const { return last_click_coord; }
|
||||
|
||||
protected:
|
||||
QSize sizeHint() const override { return QSize(200, 200); }
|
||||
void mousePressEvent(QMouseEvent * e) override;
|
||||
void mouseReleaseEvent(QMouseEvent * e) override;
|
||||
@@ -61,6 +63,8 @@ private:
|
||||
void wheelEvent(QWheelEvent * e) override;
|
||||
void paintEvent(QPaintEvent *) override;
|
||||
void resizeEvent(QResizeEvent *) override;
|
||||
|
||||
private:
|
||||
void drawBackground();
|
||||
void drawItems(QPainter & p);
|
||||
void checkZoom();
|
||||
@@ -78,6 +82,7 @@ private:
|
||||
OSMTileCache * cache = nullptr;
|
||||
MapItemBase * hover = nullptr;
|
||||
QPointF center_ = QPointF(0.5, 0.5);
|
||||
QPointF last_click_coord = center_;
|
||||
QPoint press_point;
|
||||
QPixmap background;
|
||||
QRectF view_rect;
|
||||
|
||||
Reference in New Issue
Block a user