summaryrefslogtreecommitdiff
path: root/src/location/quickmapitems/qdeclarativecirclemapitem_p_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/location/quickmapitems/qdeclarativecirclemapitem_p_p.h')
-rw-r--r--src/location/quickmapitems/qdeclarativecirclemapitem_p_p.h169
1 files changed, 0 insertions, 169 deletions
diff --git a/src/location/quickmapitems/qdeclarativecirclemapitem_p_p.h b/src/location/quickmapitems/qdeclarativecirclemapitem_p_p.h
index 49677e2a..319ff635 100644
--- a/src/location/quickmapitems/qdeclarativecirclemapitem_p_p.h
+++ b/src/location/quickmapitems/qdeclarativecirclemapitem_p_p.h
@@ -172,175 +172,6 @@ public:
MapPolygonNode *m_node = nullptr;
};
-class Q_LOCATION_PRIVATE_EXPORT QDeclarativeCircleMapItemPrivateOpenGL: public QDeclarativeCircleMapItemPrivate
-{
-public:
- QDeclarativeCircleMapItemPrivateOpenGL(QDeclarativeCircleMapItem &circle) : QDeclarativeCircleMapItemPrivate(circle)
- {
- }
-
- QDeclarativeCircleMapItemPrivateOpenGL(QDeclarativeCircleMapItemPrivate &other)
- : QDeclarativeCircleMapItemPrivate(other)
- {
- }
-
- ~QDeclarativeCircleMapItemPrivateOpenGL() override;
-
- void onLinePropertiesChanged() override
- {
- m_circle.m_dirtyMaterial = true;
- afterViewportChanged();
- }
- void markScreenDirtyAndUpdate()
- {
- // preserveGeometry is cleared in updateMapItemPaintNode
- m_geometry.markScreenDirty();
- m_borderGeometry.markScreenDirty();
- m_circle.polishAndUpdate();
- }
- void markSourceDirtyAndUpdate() override
- {
- updateCirclePath();
- preserveGeometry();
- m_geometry.markSourceDirty();
- m_borderGeometry.markSourceDirty();
- m_circle.polishAndUpdate();
- }
- void preserveGeometry()
- {
- m_geometry.setPreserveGeometry(true, m_leftBound);
- m_borderGeometry.setPreserveGeometry(true, m_leftBound);
- }
- void onMapSet() override
- {
- markSourceDirtyAndUpdate();
- }
- void onGeoGeometryChanged() override
- {
-
- markSourceDirtyAndUpdate();
- }
- void onItemGeometryChanged() override
- {
- onGeoGeometryChanged();
- }
- void afterViewportChanged() override
- {
- preserveGeometry();
- markScreenDirtyAndUpdate();
- }
- void updatePolish() override
- {
- if (m_circle.m_circle.isEmpty()) {
- m_geometry.clear();
- m_borderGeometry.clear();
- m_circle.setWidth(0);
- m_circle.setHeight(0);
- return;
- }
-
- QScopedValueRollback<bool> rollback(m_circle.m_updatingGeometry);
- m_circle.m_updatingGeometry = true;
- const qreal lineWidth = m_circle.m_border.width();
- const QColor &lineColor = m_circle.m_border.color();
- const QColor &fillColor = m_circle.color();
- if (fillColor.alpha() != 0) {
- m_geometry.updateSourcePoints(*m_circle.map(), m_circlePath);
- m_geometry.markScreenDirty();
- m_geometry.updateScreenPoints(*m_circle.map(), lineWidth, lineColor);
- } else {
- m_geometry.clearBounds();
- }
-
- QGeoMapItemGeometry * geom = &m_geometry;
- m_borderGeometry.clearScreen();
- if (lineColor.alpha() != 0 && lineWidth > 0) {
- m_borderGeometry.updateSourcePoints(*m_circle.map(), m_circle.m_circle);
- m_borderGeometry.markScreenDirty();
- m_borderGeometry.updateScreenPoints(*m_circle.map(), lineWidth);
- geom = &m_borderGeometry;
- }
- m_circle.setWidth(geom->sourceBoundingBox().width());
- m_circle.setHeight(geom->sourceBoundingBox().height());
- m_circle.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_circle.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_circle.m_border.color(),
- float(m_circle.m_border.width()),
- &m_borderGeometry,
- combinedMatrix,
- cameraCenter,
- Qt::SquareCap,
- true,
- 30); // No LOD for circles
- m_borderGeometry.setPreserveGeometry(false);
- m_borderGeometry.markClean();
- } else {
- m_polylinenode->setSubtreeBlocked(true);
- }
- if (m_geometry.isScreenDirty()) {
- m_node->update(m_circle.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_circle.m_border.width();
- const QColor &lineColor = m_circle.m_border.color();
- const QRectF &bounds = (lineColor.alpha() != 0 && lineWidth > 0) ? m_borderGeometry.sourceBoundingBox() : m_geometry.sourceBoundingBox();
- if (bounds.contains(point)) {
- QDeclarativeGeoMap *m = m_circle.quickMap();
- if (m) {
- const QGeoCoordinate crd = m->toCoordinate(m->mapFromItem(&m_circle, point));
- return m_circle.m_circle.contains(crd) || m_borderGeometry.contains(m_circle.mapToItem(m_circle.quickMap(), point),
- m_circle.border()->width(),
- static_cast<const QGeoProjectionWebMercator&>(m_circle.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 // QDECLARATIVECIRCLEMAPITEM_P_P_H