diff options
Diffstat (limited to 'src/location/quickmapitems/qdeclarativerectanglemapitem_p_p.h')
-rw-r--r-- | src/location/quickmapitems/qdeclarativerectanglemapitem_p_p.h | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/src/location/quickmapitems/qdeclarativerectanglemapitem_p_p.h b/src/location/quickmapitems/qdeclarativerectanglemapitem_p_p.h index 1c4d2bc0..4f76d445 100644 --- a/src/location/quickmapitems/qdeclarativerectanglemapitem_p_p.h +++ b/src/location/quickmapitems/qdeclarativerectanglemapitem_p_p.h @@ -138,173 +138,6 @@ public: MapPolygonNode *m_node = nullptr; }; -class Q_LOCATION_PRIVATE_EXPORT QDeclarativeRectangleMapItemPrivateOpenGL: public QDeclarativeRectangleMapItemPrivate -{ -public: - QDeclarativeRectangleMapItemPrivateOpenGL(QDeclarativeRectangleMapItem &rect) : QDeclarativeRectangleMapItemPrivate(rect) - { - } - - QDeclarativeRectangleMapItemPrivateOpenGL(QDeclarativeRectangleMapItemPrivate &other) - : QDeclarativeRectangleMapItemPrivate(other) - { - } - - ~QDeclarativeRectangleMapItemPrivateOpenGL() override; - - void markScreenDirtyAndUpdate() - { - // preserveGeometry is cleared in updateMapItemPaintNode - m_geometry.markScreenDirty(); - m_borderGeometry.markScreenDirty(); - m_rect.polishAndUpdate(); - } - void onLinePropertiesChanged() override - { - m_rect.m_dirtyMaterial = true; - afterViewportChanged(); - } - void markSourceDirtyAndUpdate() override - { - m_geometry.markSourceDirty(); - m_borderGeometry.markSourceDirty(); - m_rect.polishAndUpdate(); - } - void preserveGeometry() - { - m_geometry.setPreserveGeometry(true, m_rect.m_rectangle.topLeft()); - m_borderGeometry.setPreserveGeometry(true, m_rect.m_rectangle.topLeft()); - } - void onMapSet() override - { - markSourceDirtyAndUpdate(); - } - void onGeoGeometryChanged() override - { - preserveGeometry(); - markSourceDirtyAndUpdate(); - } - void onItemGeometryChanged() override - { - onGeoGeometryChanged(); - } - void afterViewportChanged() override - { - preserveGeometry(); - markScreenDirtyAndUpdate(); - } - void updatePolish() override - { - if (!m_rect.topLeft().isValid() || !m_rect.bottomRight().isValid()) { - m_geometry.clear(); - m_borderGeometry.clear(); - m_rect.setWidth(0); - m_rect.setHeight(0); - return; - } - - QScopedValueRollback<bool> rollback(m_rect.m_updatingGeometry); - m_rect.m_updatingGeometry = true; - const qreal lineWidth = m_rect.m_border.width(); - const QColor &lineColor = m_rect.m_border.color(); - const QColor &fillColor = m_rect.color(); - if (fillColor.alpha() != 0) { - m_geometry.updateSourcePoints(*m_rect.map(), m_rect.m_rectangle); - m_geometry.markScreenDirty(); - m_geometry.updateScreenPoints(*m_rect.map(), lineWidth, lineColor); - } else { - m_geometry.clearBounds(); - } - - QGeoMapItemGeometry * geom = &m_geometry; - m_borderGeometry.clearScreen(); - if (lineColor.alpha() != 0 && lineWidth > 0) { - m_borderGeometry.updateSourcePoints(*m_rect.map(), m_rect.m_rectangle); - m_borderGeometry.markScreenDirty(); - m_borderGeometry.updateScreenPoints(*m_rect.map(), lineWidth); - geom = &m_borderGeometry; - } - m_rect.setWidth(geom->sourceBoundingBox().width()); - m_rect.setHeight(geom->sourceBoundingBox().height()); - m_rect.setPosition(1.0 * geom->firstPointOffset() - QPointF(lineWidth * 0.5,lineWidth * 0.5)); - } - - QSGNode * updateMapItemPaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) override - { - Q_UNUSED(data); - - if (!m_rootNode || !oldNode) { - m_rootNode = new QDeclarativePolygonMapItemPrivateOpenGL::RootNode(); - m_node = new MapPolygonNodeGL(); - m_rootNode->appendChildNode(m_node); - m_polylinenode = new MapPolylineNodeOpenGLExtruded(); - m_rootNode->appendChildNode(m_polylinenode); - m_rootNode->markDirty(QSGNode::DirtyNodeAdded); - if (oldNode) - delete oldNode; - } else { - m_rootNode = static_cast<QDeclarativePolygonMapItemPrivateOpenGL::RootNode *>(oldNode); - } - - const QGeoMap *map = m_rect.map(); - const QMatrix4x4 &combinedMatrix = map->geoProjection().qsgTransform(); - const QDoubleVector3D &cameraCenter = map->geoProjection().centerMercator(); - - if (m_borderGeometry.isScreenDirty()) { - /* Do the border update first */ - m_polylinenode->update(m_rect.m_border.color(), - float(m_rect.m_border.width()), - &m_borderGeometry, - combinedMatrix, - cameraCenter, - Qt::SquareCap, - true, - 30); // No LOD for rectangles - m_borderGeometry.setPreserveGeometry(false); - m_borderGeometry.markClean(); - } else { - m_polylinenode->setSubtreeBlocked(true); - } - if (m_geometry.isScreenDirty()) { - m_node->update(m_rect.m_color, - &m_geometry, - combinedMatrix, - cameraCenter); - m_geometry.setPreserveGeometry(false); - m_geometry.markClean(); - } else { - m_node->setSubtreeBlocked(true); - } - - m_rootNode->setSubtreeBlocked(false); - return m_rootNode; - } - bool contains(const QPointF &point) const override - { - const qreal lineWidth = m_rect.m_border.width(); - const QColor &lineColor = m_rect.m_border.color(); - const QRectF &bounds = (lineColor.alpha() != 0 && lineWidth > 0) ? m_borderGeometry.sourceBoundingBox() : m_geometry.sourceBoundingBox(); - if (bounds.contains(point)) { - QDeclarativeGeoMap *m = m_rect.quickMap(); - if (m) { - const QGeoCoordinate crd = m->toCoordinate(m->mapFromItem(&m_rect, point)); - return m_rect.m_rectangle.contains(crd) || m_borderGeometry.contains(m_rect.mapToItem(m_rect.quickMap(), point), - m_rect.border()->width(), - static_cast<const QGeoProjectionWebMercator&>(m_rect.map()->geoProjection())); - } else { - return true; - } - } - return false; - } - - QGeoMapPolygonGeometryOpenGL m_geometry; - QGeoMapPolylineGeometryOpenGL m_borderGeometry; - QDeclarativePolygonMapItemPrivateOpenGL::RootNode *m_rootNode = nullptr; - MapPolygonNodeGL *m_node = nullptr; - MapPolylineNodeOpenGLExtruded *m_polylinenode = nullptr; -}; - QT_END_NAMESPACE #endif // QDECLARATIVERECTANGLEMAPITEM_P_P_H |