// Copyright (C) 2020 Paolo Angelelli // Copyright (C) 2022 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QDECLARATIVERECTANGLEMAPITEM_P_P_H #define QDECLARATIVERECTANGLEMAPITEM_P_P_H // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // #include #include #include #include QT_BEGIN_NAMESPACE class Q_LOCATION_PRIVATE_EXPORT QDeclarativeRectangleMapItemPrivate { Q_DISABLE_COPY_MOVE(QDeclarativeRectangleMapItemPrivate) public: QDeclarativeRectangleMapItemPrivate(QDeclarativeRectangleMapItem &rect) : m_rect(rect) { } virtual ~QDeclarativeRectangleMapItemPrivate(); virtual void onLinePropertiesChanged() = 0; virtual void markSourceDirtyAndUpdate() = 0; virtual void onMapSet() = 0; virtual void onGeoGeometryChanged() = 0; virtual void onItemGeometryChanged() = 0; virtual void updatePolish() = 0; virtual void afterViewportChanged() = 0; virtual QSGNode * updateMapItemPaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) = 0; virtual bool contains(const QPointF &point) const = 0; QDeclarativeRectangleMapItem &m_rect; }; class Q_LOCATION_PRIVATE_EXPORT QDeclarativeRectangleMapItemPrivateCPU: public QDeclarativeRectangleMapItemPrivate { public: QDeclarativeRectangleMapItemPrivateCPU(QDeclarativeRectangleMapItem &rect) : QDeclarativeRectangleMapItemPrivate(rect) { } ~QDeclarativeRectangleMapItemPrivateCPU() override; void onLinePropertiesChanged() override { // mark dirty just in case we're a width change markSourceDirtyAndUpdate(); } void markSourceDirtyAndUpdate() override { m_geometry.markSourceDirty(); m_borderGeometry.markSourceDirty(); m_rect.polishAndUpdate(); } void onMapSet() override { markSourceDirtyAndUpdate(); } void onGeoGeometryChanged() override { markSourceDirtyAndUpdate(); } void onItemGeometryChanged() override { m_geometry.setPreserveGeometry(true, m_rect.m_rectangle.topLeft()); m_borderGeometry.setPreserveGeometry(true, m_rect.m_rectangle.topLeft()); markSourceDirtyAndUpdate(); } void afterViewportChanged() override { m_geometry.setPreserveGeometry(true, m_rect.m_rectangle.topLeft()); m_borderGeometry.setPreserveGeometry(true, m_rect.m_rectangle.topLeft()); markSourceDirtyAndUpdate(); } void updatePolish() override; QSGNode * updateMapItemPaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data) override; bool contains(const QPointF &point) const override; QGeoMapPolygonGeometry m_geometry; QGeoMapPolylineGeometry m_borderGeometry; MapPolygonNode *m_node = nullptr; }; QT_END_NAMESPACE #endif // QDECLARATIVERECTANGLEMAPITEM_P_P_H