CMake findQAD miss map

MapItemBase::offset feature
PIValueTreeEdit add custom button to show/hide groups
This commit is contained in:
2023-01-26 23:19:28 +03:00
parent 34d2653744
commit 7188e38072
9 changed files with 59 additions and 14 deletions

View File

@@ -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();

View File

@@ -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_;

View File

@@ -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.);

View File

@@ -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)) {

View File

@@ -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;